HTTP request smuggling--HTTP請(qǐng)求走私

利用效果

攻擊者通過(guò)構(gòu)造特殊post包使下一位用戶的http包頭被篡改瓶殃。(在這里我實(shí)現(xiàn)當(dāng)?shù)诙挥脩粼L問(wèn)該服務(wù)器時(shí)在評(píng)論區(qū)輸出該用戶的報(bào)頭內(nèi)容)
效果

利用原理

什么是HTTP請(qǐng)求走私

HTTP請(qǐng)求走私是一種干擾網(wǎng)站處理從一個(gè)或多個(gè)用戶接收的HTTP請(qǐng)求序列的方式的技術(shù)。請(qǐng)求走私漏洞本質(zhì)上通常很關(guān)鍵蝌麸,它使攻擊者可以繞過(guò)安全控制,未經(jīng)授權(quán)訪問(wèn)敏感數(shù)據(jù)并直接危害其他應(yīng)用程序用戶史辙。

HTTP協(xié)議特點(diǎn)概述

1.HTTP協(xié)議是一個(gè)應(yīng)用層協(xié)議诵姜,由請(qǐng)求-響應(yīng)夠成,是一個(gè)標(biāo)準(zhǔn)的客戶端服務(wù)器模型冻记。
2.HTTP協(xié)議簡(jiǎn)單快速睡毒,客戶向服務(wù)器請(qǐng)求服務(wù)時(shí),只用傳送請(qǐng)求方法和請(qǐng)求路徑冗栗。常見(jiàn)的請(qǐng)求方法有POST,GET,HEAD等等
3.無(wú)連接演顾,每次http連接只處理一個(gè)請(qǐng)求供搀,服務(wù)器響應(yīng)完客戶端的請(qǐng)求并收到應(yīng)答后就斷開連接。
4.無(wú)狀態(tài)偶房,所謂無(wú)狀態(tài)是指協(xié)議對(duì)事務(wù)處理沒(méi)有記憶能力趁曼。缺少狀態(tài)意味著如果后續(xù)處理需要前面的信息军浆,則需要重傳棕洋。
用戶請(qǐng)求發(fā)送到前端服務(wù)器(CDN/反向代理),并且該服務(wù)器將請(qǐng)求轉(zhuǎn)發(fā)到一個(gè)或多個(gè)后端服務(wù)器乒融,當(dāng)前端服務(wù)器將HTTP請(qǐng)求轉(zhuǎn)發(fā)到后端服務(wù)器時(shí)掰盘,它通常會(huì)通過(guò)同一后端網(wǎng)絡(luò)連接發(fā)送多個(gè)請(qǐng)求,因?yàn)檫@樣效率更高赞季。

HTTP請(qǐng)求一個(gè)接一個(gè)地發(fā)送愧捕,接收服務(wù)器解析HTTP請(qǐng)求標(biāo)頭來(lái)確定在哪里結(jié)束,以及下個(gè)請(qǐng)求從哪里開始申钩。在這種情況下次绘,前端和后端系統(tǒng)就請(qǐng)求之間的邊界達(dá)成共識(shí)就顯得至關(guān)重要。
正常訪問(wèn)

走私原理

如果說(shuō)前端和后端系統(tǒng)對(duì)同一請(qǐng)求報(bào)頭的處理方式不同撒遣,我們發(fā)送一個(gè)模棱兩可的請(qǐng)求邮偎,該請(qǐng)求就會(huì)被前后端以不同的方式解釋:

非正常訪問(wèn)
由于HTTP規(guī)范提供了兩種不同的方法來(lái)指定HTTP消息的長(zhǎng)度(Content-Length(下文稱為CL)和Transfer-Encoding:chunked[1](下文稱為TE)。)义黎,因此單個(gè)消息可能會(huì)同時(shí)使用這兩種方法從而引起彼此沖突禾进。HTTP規(guī)范中通過(guò)定義兩種標(biāo)頭同時(shí)存在時(shí)忽略CL標(biāo)頭來(lái)解決這種問(wèn)題,但當(dāng)多個(gè)服務(wù)器鏈接在一起時(shí)就沒(méi)用了廉涕,因?yàn)槟承┓?wù)器不支持TE標(biāo)頭泻云,或者TE標(biāo)頭被混淆,造成服務(wù)器不識(shí)別狐蜕。當(dāng)前后端服務(wù)器在CL宠纯、TE標(biāo)頭方面的識(shí)別出現(xiàn)分歧時(shí),就會(huì)導(dǎo)致HTTP請(qǐng)求走私层释。(不會(huì)用簡(jiǎn)書的mackdown改字體顏色婆瓜,這里就貼圖吧)
CL.TE

前端服務(wù)器處理CL,并確定請(qǐng)求體長(zhǎng)度為6個(gè)字節(jié)(\r\n0\r\nG)湃累。該請(qǐng)求被轉(zhuǎn)發(fā)到后端服務(wù)器勃救,后端服務(wù)器處理TE標(biāo)頭,認(rèn)為消息為分塊編碼治力。處理第一塊時(shí)該塊聲明長(zhǎng)度為0蒙秒,被視為終止請(qǐng)求,那么后面那個(gè)G就被留在緩沖區(qū)未被處理宵统,后端服務(wù)器將會(huì)認(rèn)為他是下一個(gè)HTTP請(qǐng)求的開始部分晕讲。當(dāng)?shù)诙€(gè)請(qǐng)求過(guò)來(lái)時(shí)覆获,就會(huì)收到類似“Unknown method GPOST”的響應(yīng)。

利用過(guò)程

我們?cè)谶@里實(shí)現(xiàn)一個(gè)讓下一個(gè)請(qǐng)求同一服務(wù)器的用戶在指定頁(yè)面留下自己HTTP請(qǐng)求頭的功能瓢省。實(shí)驗(yàn)環(huán)境傳送門
填好評(píng)論后發(fā)一個(gè)正常的包弄息,評(píng)論的內(nèi)容由comment參數(shù)控制,如果評(píng)論成功則返回302跳轉(zhuǎn)勤婚。

評(píng)論

評(píng)論效果

接下來(lái)構(gòu)造一個(gè)惡意的請(qǐng)求摹量,讓第二個(gè)訪問(wèn)該服務(wù)器的用戶自動(dòng)評(píng)論并留下他的請(qǐng)求頭


惡意請(qǐng)求

為了觀眾老爺看著清楚,我們把第二位訪問(wèn)者評(píng)論時(shí)的名字改為Second馒胆,comment參數(shù)放在最后用于接收請(qǐng)求頭缨称,下面的Content-Length可以自行修改以控制截取下一位訪問(wèn)者的報(bào)頭長(zhǎng)度。這里我們先截取500個(gè)祝迂,點(diǎn)擊go睦尽,返回400,后端認(rèn)為我們的消息長(zhǎng)度為0型雳,實(shí)際上当凡,下面的一段惡意的請(qǐng)求頭已經(jīng)存在了后端服務(wù)器的緩存中,換個(gè)瀏覽器訪問(wèn)一下:


谷歌返回結(jié)果

直接提示評(píng)論成功纠俭,然后回到評(píng)論區(qū)看一下是否留下了訪問(wèn)者的信息
評(píng)論

因?yàn)槌鑫覀兘厝〉牟糠诌€是留在了服務(wù)器的緩存區(qū)沿量,當(dāng)再次訪問(wèn)該服務(wù)器,它會(huì)返回400柑晒。


400

再次請(qǐng)求時(shí)就會(huì)正常顯示欧瘪。
至此一次HTTP請(qǐng)求走私完成!
還有前端處理TE標(biāo)頭匙赞、后端處理CL標(biāo)頭(TE.CL)佛掖,前后端都處理TE標(biāo)頭時(shí)混淆(TE.TE)等情況與此原理相似,相信大家可以舉一反三涌庭,這里就不一一贅述了芥被。(溜了。坐榆。拴魄。。)

參考文檔

Burp 安全學(xué)院


  1. 分塊編碼是HTTP1.1協(xié)議中定義的Web用戶向服務(wù)器提交數(shù)據(jù)的一種方法席镀,當(dāng)服務(wù)器收到chunked編碼方式的數(shù)據(jù)時(shí)匹中,會(huì)分配一個(gè)緩沖區(qū)存放數(shù)據(jù),如果提交的數(shù)據(jù)大小未知豪诲,客戶端會(huì)議一個(gè)協(xié)商好的分塊大小向服務(wù)器提交數(shù)據(jù)顶捷。 ?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市屎篱,隨后出現(xiàn)的幾起案子服赎,更是在濱河造成了極大的恐慌葵蒂,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件重虑,死亡現(xiàn)場(chǎng)離奇詭異践付,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)缺厉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門永高,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人芽死,你說(shuō)我怎么就攤上這事乏梁。” “怎么了关贵?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)卖毁。 經(jīng)常有香客問(wèn)我揖曾,道長(zhǎng),這世上最難降的妖魔是什么亥啦? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任炭剪,我火速辦了婚禮,結(jié)果婚禮上翔脱,老公的妹妹穿的比我還像新娘奴拦。我一直安慰自己,他們只是感情好届吁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布错妖。 她就那樣靜靜地躺著,像睡著了一般疚沐。 火紅的嫁衣襯著肌膚如雪暂氯。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天亮蛔,我揣著相機(jī)與錄音痴施,去河邊找鬼。 笑死究流,一個(gè)胖子當(dāng)著我的面吹牛辣吃,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播芬探,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼神得,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了灯节?” 一聲冷哼從身側(cè)響起循头,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤绵估,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后卡骂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體国裳,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年全跨,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了缝左。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浓若,死狀恐怖渺杉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挪钓,我是刑警寧澤是越,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站碌上,受9級(jí)特大地震影響倚评,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜馏予,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一天梧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧霞丧,春花似錦呢岗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至箩言,卻和暖如春硬贯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背陨收。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工饭豹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人务漩。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓拄衰,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親饵骨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子翘悉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容