- Web漏洞搜索
- (美)彼得·亞沃斯基
- 668字
- 2021-11-05 10:20:07
6.1 HTTP請求夾帶攻擊
當攻擊者利用CRLF注入漏洞在一個原始合法的HTTP請求后附帶上另一個HTTP請求時,就會發生HTTP請求夾帶攻擊。由于應用程序不能預見有注入的CRLF,所以它會把兩個HTTP請求合在一起,將其看作一個單個的HTTP請求。該請求被傳遞給接收服務器(典型地,一個代理服務器或者防火墻)進行處理,然后被發送到另一個服務器,例如代表網站執行相應業務操作的應用服務器。這種漏洞可以導致緩存投毒、防火墻繞過、請求劫持、HTTP響應分割等攻擊。
在緩存投毒情形下,攻擊者可以修改應用程序緩存中的條目,可以用惡意的網頁代替正常的網頁提供服務。當HTTP請求用CRLF進行精心設計并免于防火墻的安全檢查時,就可以實現防火墻繞過。請求劫持的情形是指攻擊者可以在無須攻擊者與客戶端交互的情況下就可以竊取httponly cookie以及HTTP身份認證信息。這些攻擊之所以能夠發生作用,是因為服務器會將CRLF解釋為HTTP頭開始的位置,因此如果服務器在CRLF之后看到了另一個頭部,它們會將它解釋為另一個新的HTTP請求的開始。
本章后面將聚焦HTTP響應分割攻擊,這種攻擊方式允許攻擊者通過注入瀏覽器能夠解析的新響應頭對原本單一的HTTP響應消息進行分割。依賴于漏洞的特性,攻擊者可以采用兩種方法中的一種來利用HTTP響應分割。第一種方法是,攻擊者使用CRLF字符結束服務器的初始響應并插入額外的頭消息以生成一個新的HTTP響應。然而,有些時候攻擊者僅修改響應消息而并不注入一個全新的HTTP響應。例如,他們可能只是注入幾個有限字符。這導致了第二種利用響應分割的方法,即插入新的HTTP響應頭信息,例如Location頭。注入Location頭將會使攻擊者能夠將CRLF漏洞與重定向目標對象到惡意網站或者跨站腳本攻擊(XSS)聯合使用。