久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

原創(chuàng)干貨 | HTTP協(xié)議繞過(guò)某硬件WAF剖析

 kaller_cui 2019-11-26

會(huì)給你帶來(lái)好運(yùn)

目前,市場(chǎng)上的waf的種類繁多,,這里就waf在網(wǎng)絡(luò)中所處的位置做一個(gè)大致的分類:

1,、waf部署在業(yè)務(wù)之前,根據(jù)業(yè)務(wù)所處的內(nèi)外網(wǎng)環(huán)境的不同可以分為云waf和硬件waf,;云waf的代表就是以阿里云為首的云上waf,,其優(yōu)點(diǎn)為:部署簡(jiǎn)單、維護(hù)成本低,,同時(shí)可以充當(dāng)cdn的角色,,規(guī)則更新快,缺點(diǎn)為:容易被繞過(guò),,如果黑客找到服務(wù)器的真實(shí)ip那么繞過(guò)云waf將變得輕而易舉,,由于所有流量經(jīng)過(guò)waf所以可能一部分對(duì)保密性要求較高的業(yè)務(wù)存在信息泄漏的風(fēng)險(xiǎn)。硬件waf的代表就是以綠盟為首的傳統(tǒng)安全廠商,,其優(yōu)點(diǎn)為:部署簡(jiǎn)單即插即用,,waf在放入機(jī)房后,便可實(shí)現(xiàn)安全防護(hù),,由于其一般為獨(dú)立的設(shè)備所以穩(wěn)定性較好,,缺點(diǎn)為:價(jià)格昂貴,一臺(tái)一般的waf設(shè)備價(jià)格往往十萬(wàn)上百萬(wàn),,和云waf一樣硬件waf也存在被繞過(guò)的可能,。

2、waf和業(yè)務(wù)部署在同一服務(wù)器上,,這一類waf代表的為安全狗這類軟件的waf,,這一類的waf的優(yōu)點(diǎn):價(jià)格一般比較便宜甚至免費(fèi),除了常規(guī)的waf功能之外往往還集成了其他木馬掃描,、防掃描等功能,,但是由于其與業(yè)務(wù)共生的特性,,其缺點(diǎn)也比較明顯了:占用正常的業(yè)務(wù)運(yùn)算資源,也存在被繞過(guò)的可能,。

1. 主流過(guò)WAF的技術(shù)方法總結(jié)

Waf繞過(guò)是一個(gè)老生常談的問(wèn)題,,大概的繞過(guò)思路有以下幾種:

1、利用waf部署上的架構(gòu)缺陷去bypass,,

2,、利用HTTP協(xié)議層的缺陷進(jìn)行bypass,

3,、利用數(shù)據(jù)庫(kù)層面的缺陷繞過(guò),。

首先,看看第一個(gè),,架構(gòu)上的缺陷繞過(guò),,這里提供幾個(gè)思路:

1、如果是云waf,,并且后端業(yè)務(wù)沒(méi)有嚴(yán)格限制訪問(wèn)的來(lái)源的話,,那么去尋找業(yè)務(wù)的真實(shí)ip將會(huì)是比較優(yōu)的bypass方法。

2,、如果是waf集群的話ddos是一種不錯(cuò)的選擇,,在把waf的性能達(dá)到閾值之后就有直接聯(lián)通業(yè)務(wù)的可能比如比較著名的正則ddos-https://www./index.php/Regular_expression_Denial_of_Service_-_ReDoS,這里不是很推薦這種方法,,因?yàn)楹诤袦y(cè)試還是以盡量小的影響業(yè)務(wù)為主,。

3、利用waf和業(yè)務(wù)對(duì)sslciphersuite支持的差異性bypass,,如果確實(shí)發(fā)現(xiàn)目標(biāo)使用了https的話這種是比較好的方法,,找到一種業(yè)務(wù)支持但是waf不支持的加密算法就可以bypass了,相關(guān)工具:https://github.com/LandGrey/abuse-ssl-bypass-waf

利用HTTP協(xié)議的缺陷繞過(guò):

1,、請(qǐng)求方式,,有可能waf只攔截了GET方式發(fā)送的請(qǐng)求,

未攔截POST方式發(fā)送的請(qǐng)求,,那么通過(guò)burpsuite的changerequest method就有可能繞過(guò)

更有甚者業(yè)務(wù)服務(wù)器有可能支持一些完全不存在的請(qǐng)求方式如DOTA2,,這類也有可能繞過(guò)waf

2、請(qǐng)求變體,,通過(guò)burpsuite的changebody encoding功能來(lái)將post的數(shù)據(jù)以form-data的形式發(fā)送,,如果waf沒(méi)有檢查這一部分的內(nèi)容那么將會(huì)繞過(guò)waf

3、參數(shù)污染,,當(dāng)我們向服務(wù)器提交多個(gè)相同的參數(shù)時(shí),,不同的web服務(wù)器獲取到的web的是不一樣的,下面針對(duì)以下的請(qǐng)求

id=1&id=2&id=3

不同的服務(wù)器環(huán)境所取得的參數(shù)

Asp.net+ iis:id=1,2,3

Asp+ iis:id=1,2,3

Php+ apache:id=3

所以當(dāng)waf與web服務(wù)器獲取參數(shù)的機(jī)制不一樣時(shí)也會(huì)造成bypass

4,、和參數(shù)污染一樣不同的服務(wù)器對(duì)http可能某一些字符還有著不同的處理,,比如iis+asp的%特性,,iis會(huì)把s%elect理解為select從而繞過(guò)waf

%u特性,,iis支持unicode解析,,會(huì)把s%u006c%u0006ect解析為select,waf識(shí)別的內(nèi)容還是s%u006c%u0006ect,,從而繞過(guò)waf

這一部分其實(shí)很大一部分取決于對(duì)中間件及waf的理解,,詳細(xì)的中間件版本和測(cè)試情況可見(jiàn):https://drive.google.com/file/d/0B5Tqp73kQStQU1diV1Y0dzd1QU0/view

數(shù)據(jù)庫(kù)層繞過(guò)waf,這一層面屬于和waf的防護(hù)規(guī)則硬碰硬,,也有很多關(guān)于這一方面的文章,,但是一般都不具有通用性并且很快會(huì)被waf廠商封禁。其原理就是利用數(shù)據(jù)庫(kù)或者系統(tǒng)語(yǔ)句的多變性,,將存在于waf規(guī)則中的特殊函數(shù)或者字符使用其他的函數(shù)或者字符進(jìn)行替代來(lái)達(dá)到繞過(guò)的目的,,由于規(guī)則太多不能一一介紹,這里簡(jiǎn)單介紹幾個(gè):相同作用的如mid(@@version,1,1)和substring(@@version,1,1)如果waf過(guò)濾了逗號(hào)我們也可以換一種寫(xiě)法mid/substring(@@versionfrom 1 for 1),??瞻鬃址?09,%0a,%0b,%0c,%0d,%a0。使用casewhen語(yǔ)句替代if語(yǔ)句,,或者使用andxxx=xxx and sleep(1),,and運(yùn)算的短路邏輯來(lái)替代if語(yǔ)句等等等。具體的細(xì)節(jié)可參照blackhat 2016的議題https://www./einstais/another-brick-off-the-wall-deconstructing-web-application-firewalls-using-automata-learning

2. 國(guó)內(nèi)/國(guó)際最新過(guò)WAF方法總結(jié)

不幸的是,,在上述方法出現(xiàn)之后很大一部分都被waf廠商所修復(fù),,上述方法在實(shí)戰(zhàn)中有很大的可能性是繞不過(guò)去waf的,在18年有兩篇關(guān)于waf繞過(guò)的文章,,都不是去對(duì)waf進(jìn)行fuzz的,,而是從http協(xié)議層進(jìn)行繞過(guò),這樣的方法往往成本較低而且具有通用性,,這兩篇文章提到的一個(gè)共同點(diǎn)就是利用分塊傳輸Transfer-Encoding:chunked來(lái)繞過(guò)waf,。

首先我們來(lái)看看什么是分塊傳輸,一般向服務(wù)器發(fā)送請(qǐng)求的頭中都會(huì)包含請(qǐng)求body的大小,,也就是content-length,,但是如果是body比較大那么可能需要把body寫(xiě)到一個(gè)比較大的數(shù)組里之后才能計(jì)算出content-length,利用Transfer-Encoding:chunked就可以在服務(wù)器和客戶端之間做一個(gè)分塊的約定,,然后使用分塊傳輸,。

下圖截取自http權(quán)威指南,如圖首先聲明Transfer-Encoding:chunked,,其次每一塊的第一行為該分塊的大小,,最后一塊為兩個(gè)空行代表數(shù)據(jù)包結(jié)束,拖掛為可選,。

利用chunked我們可以將一些關(guān)鍵字比如and拆開(kāi)繞過(guò)waf

或者通過(guò)在分塊第一行表明分塊長(zhǎng)度的位置加入“;xxxx“這種注釋的方式也可以繞過(guò)waf

3. 實(shí)戰(zhàn)遭遇硬件WAF防火墻

1.漏洞發(fā)現(xiàn)

在一個(gè)項(xiàng)目的測(cè)試過(guò)程中,,發(fā)現(xiàn)了一個(gè)sql注入,,如圖1-1所示,在參數(shù)后面加入單引號(hào)’報(bào)錯(cuò),,在加入’--后正?;仫@,如圖圖1-2

圖1-1測(cè)試發(fā)現(xiàn)漏洞

圖1-2加入’--后正常

2.漏洞分析

可以發(fā)現(xiàn)在加入',、'--之后出現(xiàn)了不同的響應(yīng)這里存在一個(gè)報(bào)錯(cuò)注入,,可是當(dāng)我們輸入'and 1=1這類布爾型語(yǔ)句時(shí),服務(wù)器不對(duì)我們做出任何的響應(yīng),,并且封掉了我們的ip,。

3.漏洞跟蹤

通過(guò)反查域名的ip時(shí)我們發(fā)現(xiàn)了某硬件安全設(shè)備,如圖1-3所示,,初步判斷有安全設(shè)備進(jìn)行防護(hù),。

圖1-3所示的某廠商硬件安全設(shè)備

4.http協(xié)議繞過(guò)原理

接下來(lái)我們談?wù)勗趺赐黄七@個(gè)waf來(lái)進(jìn)行注入,首先我們要排除的是進(jìn)行fuzz,,因?yàn)檫@臺(tái)安全設(shè)備的特性是封鎖ip,,所以fuzz所需要的ip對(duì)我們來(lái)說(shuō)成本太大了,免費(fèi)的代理速度又太慢,。于是思路是直接繞過(guò)安全設(shè)備,。

首先,我們來(lái)想象一下這種硬件安全設(shè)備的網(wǎng)絡(luò)結(jié)構(gòu)

這么一看,,這臺(tái)waf作為打通內(nèi)外網(wǎng)的路由設(shè)備,,似乎繞過(guò)云waf直接訪問(wèn)ip的方法或許不太可行,由于網(wǎng)站沒(méi)有使用https,,那么濫用sslcipher suite的方法也是不可行的,,那么我們是不是躲不開(kāi)這臺(tái)waf了必須和他硬碰硬呢?

當(dāng)然不是的,,首先就我的觀點(diǎn)來(lái)看,,繞過(guò)waf的方法大概有這么幾種:

1、從架構(gòu)層去繞過(guò),,比如說(shuō)之前提到的直接去訪問(wèn)waf背后服務(wù)器的真實(shí)ip那就是從架構(gòu)層面去繞過(guò)云waf的手段,。

2、從協(xié)議層面繞過(guò),,比如說(shuō)利用waf和后端服務(wù)器支持不同的sslciphersuite算法,,那么我們可以選擇一種后端支持而waf不支持的算法來(lái)通訊達(dá)到繞過(guò)的目的,之前提到的濫用ssl就是這種方法,。

3,、代碼層的繞過(guò),其實(shí)說(shuō)白了waf的防御無(wú)非是攔截請(qǐng)求,、匹配規(guī)則,,這其實(shí)也就是fuzz出來(lái)一些畸形字符可以繞過(guò)規(guī)則的同時(shí)順利的去執(zhí)行語(yǔ)句,。

5.http協(xié)議具體繞過(guò)方法

這就要說(shuō)到今天的標(biāo)題http協(xié)議了,為什么http協(xié)議可以繞過(guò)waf,,waf的http實(shí)現(xiàn)和后端服務(wù)的實(shí)現(xiàn)有所不同,,導(dǎo)致某些的協(xié)議可以繞過(guò),這其實(shí)也是一個(gè)成本博弈的過(guò)程,,waf如果只是為這一個(gè)網(wǎng)站適配的那當(dāng)然可以面面俱到,,但是面面俱到的成本太高了,,所以繞過(guò)的方法就是濫用一下http,,因?yàn)閔ttp協(xié)議的定制者面對(duì)新增http的功能、和修補(bǔ)舊的缺陷這兩者的選擇時(shí)往往選擇的是前者,,所以為我們留下了很多有意思的tricks,。

4. 通過(guò)插件等工具繞過(guò)硬件WAF

1.Content-Type

首先我們看一個(gè)有趣的http頭,Content-Type實(shí)體頭,,常見(jiàn)出現(xiàn)在響應(yīng)包的頭部,,其實(shí)這個(gè)頭還可以出現(xiàn)在請(qǐng)求中用以編碼請(qǐng)求的數(shù)據(jù),如果waf沒(méi)有對(duì)這部分編碼的數(shù)據(jù)做處理,,這樣我們就可以用編碼后的數(shù)據(jù)來(lái)繞過(guò)許多waf了,,這一點(diǎn)在appsec會(huì)議上SoroushDalili也有提及,并且借助SoroushDalili開(kāi)發(fā)的burp插件(https://github.com/nccgroup/BurpSuiteHTTPSmuggler)我們可以很輕松的用burpsuite做到這一點(diǎn),,利用這一點(diǎn)我們可以輕松的bypass這臺(tái)硬件設(shè)備

And1=1不再攔截

And1=2 報(bào)錯(cuò)

爆出用戶名

點(diǎn)到即止,,不做深入測(cè)試

2.Keep-alive

再另外一個(gè)就是最近很火的Connection:keep-alive了,《利用分塊傳輸?shù)醮蛩蠾AF》,、《在HTTP協(xié)議層面繞過(guò)WAF》這兩篇文章中也有提到,,其實(shí)這個(gè)請(qǐng)求頭除了用來(lái)繞過(guò)waf之外,這個(gè)頭還可以用來(lái)加速掃描器的掃描速度,,這一點(diǎn)JamesKettle在Bugcrowd在線會(huì)議上也有提及并且開(kāi)發(fā)了一個(gè)非常棒的工具TurboIntruder(https:///blog/turbo-intruder-embracing-the-billion-request-attack),,究其原因持續(xù)性連接在節(jié)省頻繁的http連接、斷開(kāi)的操作節(jié)省服務(wù)器資源的同時(shí)也提高了掃描的速度,,如果waf沒(méi)有考慮到持續(xù)連接的情況,,那么同一頁(yè)中的后續(xù)數(shù)據(jù)包將繞過(guò)waf,我們來(lái)操作一下,。

首先keep-alive時(shí)http1.0所支持的寫(xiě)法,,我們首先可能需要去確認(rèn)一下服務(wù)器端是否支持1.0和keep-alive

從圖中可以發(fā)現(xiàn)時(shí)指出keep-alive的,接下來(lái)我們就可以在后續(xù)的數(shù)據(jù)包中加入payload繞過(guò)waf了

5. 總結(jié)與思考

傳統(tǒng)代碼加密的方式在新型WAF防火墻上可以輕易的被攔截和防范,,而針對(duì)協(xié)議層面的繞過(guò)攻擊剛剛開(kāi)始,,本文中使用的兩種方法均可以有效的繞過(guò),關(guān)于http的理解更深的話可以發(fā)現(xiàn)更多有意思的繞過(guò)方法,,在協(xié)議層去繞過(guò)waf可以避免很多與waf的對(duì)抗,,降低攻擊的成本,。


·END·
 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多