HTTP走私攻擊(HTTP數(shù)據(jù)接收不同步攻擊)

這個(gè)參考文章是:https://portswigger.net/web-security/request-smuggling
作者通過這一個(gè)漏洞,在hackone平臺(tái)上挖了很多應(yīng)用的漏洞,獲得了幾萬美元的獎(jiǎng)勵(lì),然后還在blackhat上演講過,可以搜下他的ppt(us-19-Kettle-HTTP-Desync-Attacks-Smashing-Into-The-Cell-Next-Door)
),攻擊思路比較新奇,在測試中我用了,發(fā)現(xiàn)有些應(yīng)用也存在此漏洞;這里我只簡單介紹下,具體去看ppt;

漏洞形成的原因:

前端服務(wù)器(cdn)和后端服務(wù)器接收數(shù)據(jù)不同步,引起對(duì)客戶端傳入的數(shù)據(jù)理解不一致,從而導(dǎo)致漏洞;為什么會(huì)不一致呢?

主要是處理Content-Length和Transfer-Encoding不一致,原則上同時(shí)使用兩者時(shí),Content-Length是無效的,當(dāng)單個(gè)服務(wù)器時(shí),沒有任何問題,但當(dāng)多個(gè)服務(wù)器時(shí),理解的數(shù)據(jù)不一致時(shí),就會(huì)出現(xiàn)有些服務(wù)器認(rèn)為Content-Length的長度有效,有些以Transfer-Encoding有效,這樣超出的長度就會(huì)拼接到下一次請(qǐng)求,從而導(dǎo)致漏洞。

下面用實(shí)例說明下

1. 經(jīng)典攻擊方法重復(fù)Content-Length

通過Content-Length屬性控制body的長度,前端看到的長度為6,那么POST請(qǐng)求沒問題,但后端看到是長度為5,那么G這個(gè)字符會(huì)拼接到下一個(gè)HTTP請(qǐng)求上去,導(dǎo)致返回Unknow method GPOST

屏幕快照 2019-08-31 下午10.29.17.png

2. Transfer-Encoding: chunked攻擊方法

屏幕快照 2019-08-31 下午10.34.47.png

3.其它攻擊方式

屏幕快照 2019-08-31 下午10.43.32.png

修復(fù)方案:

1、前端服務(wù)器對(duì)前段輸入規(guī)范化
2、前端服務(wù)器使用HTTP2.0
3、后端服務(wù)器丟棄非正常請(qǐng)求

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容