程式碼安全測試第二十二期:HTTP響應拆分漏洞

zktq2021發表於2021-06-18

一、什麼是HTTP響應拆分?

HTTP響應拆分是由於應用程式未對使用者提交的資料進行嚴格過濾,如果使用者輸入的值中注入了CRLF字元,有可能改變HTTP報頭結構。

HTTP響應拆分漏洞,也叫CRLF注入攻擊。CR、LF分別對應回車(即URL編碼%0d或\r)、換行(即URL編碼%0a或\n)字元。HTTP頭由很多被CRLF組合分離的行構成,每行的結構都是“鍵:值”。

攻擊者可以在HTTP標頭中包含攻擊的報文資料,從而讓瀏覽器按照攻擊者想要達到的目的進行HTTP響應。 當HTTP請求中包含CR和LF字元時,伺服器可能會響應輸出流,該輸出流被解釋為兩個不同 HTTP響應(而不是一個)。攻擊者可以實現對第二個響應報文的控制併發起攻擊。例如跨站點指令碼和快取中毒攻擊。

二、HTTP響應拆分漏洞構成條件有哪些?

滿足以下條件,就構成了一個該型別的安全漏洞:

1、資料透過不受信任的源(最常見的是HTTP請求)進入web應用程式;

2、資料包含在傳送給web使用者的HTTP響應頭中,而不會驗證是否存在惡意字元。

三、HTTP響應拆分漏洞會造成哪些後果?

關鍵詞:修改應用程式資料;獲取特權或假定身份;

HTTP報頭中的CR和LF字元可能會讓攻擊者控制應用程式打算傳送的其餘報頭和響應主體,並允許他們建立完全在其控制下的附加響應。

四、HTTP響應拆分漏洞的防範和修補方法有哪些?

1、限制使用者輸入的CR和LF,或者對CR和LF字元正確編碼後再輸出,以防止注入自定義HTTP頭;

2、使用原始碼靜態分析工具進行自動化的檢測,可以有效的發現原始碼中的HTTP響應拆分問題。

五、HTTP響應拆分漏洞樣例:

用悟空 靜態程式碼檢測工具分析 述程式程式碼,則可以發現程式碼中存在著“HTTP響應拆分” 導致的 程式碼缺陷,如下圖:

HTTP響應拆分在CWE中被編號為CWE-113: Improper Neutralization of CRLF Sequences in HTTP Headers('HTTP Response Splitting')


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70000012/viewspace-2777251/,如需轉載,請註明出處,否則將追究法律責任。

相關文章