CRLF Injection漏洞的利用與例項分析

2021-07-04 11:28:39 字數 2124 閱讀 5422

crlf injection很少遇見,這次被我逮住了。我看zone中(還有一些同學對於這個漏洞不甚了解,甚至分不清它與csrf,我詳細說一下吧。

crlf是」回車 + 換行」(\r\n)的簡稱。在http協議中,http header與http body是用兩個crlf分隔的,瀏覽器就是根據這兩個crlf來取出http 內容並顯示出來。所以,一旦我們能夠控制http 訊息頭中的字元,注入一些惡意的換行,這樣我們就能注入一些會話cookie或者html**,所以crlf injection又叫http response splitting,簡稱hrs。

hrs是比xss危害更大的安全問題,具體是為什麼,我們往下看。

對於hrs最簡單的利用方式是注入兩個\r\n,之後在寫入xss**,來構造乙個xss。

所以乙個正常的302跳轉包是這樣:

但如果我們輸入的是

%0aset-cookie:jspsessid%3dwooyun
注入了乙個換行,此時的返回包就會變成這樣: 

這個時候這樣我們就給訪問者設定了乙個session,造成乙個「會話固定漏洞」。

當然,hrs並不僅限於會話固定,通過注入兩個crlf就能造成乙個無視瀏覽器filter的反射型xss。

比如乙個**接受url引數放在location後面作為乙個跳轉。如果我們輸入的是

我們的返回包就會變成這樣:

之前說了瀏覽器會根據第乙個crlf把http包分成頭和體,然後將體顯示出來。於是我們這裡為什麼說是無視瀏覽器filter的,這裡涉及到另乙個問題。

瀏覽器的filter是瀏覽器應對一些反射型xss做的保護策略,當url中含有xss相關特徵的時候就會過濾掉不顯示在頁面中,所以不能觸發xss。

怎樣才能關掉filter?一般來說使用者這邊是不行的,只有資料報中http頭含有x-xss-protection並且值為0的時候,瀏覽器才不會開啟filter。

說到這裡應該就很清楚了,hrs不正是注入http頭的乙個漏洞嗎,我們可以將x-xss-protection:0注入到資料報中,再用兩個crlf來注入xss**,這樣就成功地繞過了瀏覽器filter,並且執行我們的反射型xss。

所以說hrs的危害大於xss,因為它能繞過一般xss所繞不過的filter,並能產生會話固定漏洞。

那麼我們試試xss看看:

看控制台,果然被xss filter攔截了。

那麼我們就注入乙個

x-xss-protection:0
到資料報中,看看什麼效果:

@mramydnei 還想到了乙個利用字元編碼來繞過xss filter的方法,當編碼是is-2022-kr時瀏覽器會忽略%0f,這樣我們在onerror後面加個%0f就能繞過filter,前提是注入乙個

當然,在location:這裡注入只有webkit核心瀏覽器才能夠利用,其他瀏覽器可能會跳轉、出錯。不過對於chrome的使用量來說,危害已經足夠了。

如何修復hrs漏洞,當然是過濾\r 、\n之類的換行符,避免輸入的資料汙染到其他http頭。

CRLF Injection漏洞的利用與例項分析

phith0n 2014 06 29 16 17 crlf injection很少遇見,這次被我逮住了。我看zone中 zone.wooyun.org content 133 還有一些同學對於這個漏洞不甚了解,甚至分不清它與csrf,我詳細說一下吧。crlf是 回車 換行 r n 的簡稱。在http...

新浪某站CRLF Injection導致的安全問題

原創 phithon 2014 六月 30 06 45 閱讀 3714 網路安全 hrs,crlf,xss crlf injection很少遇見,這次被我逮住了。我看zone中 還有一些同學對於這個漏洞不甚了解,甚至分不清它與csrf,我詳細說一下吧。crlf是 回車 換行 r n 的簡稱。在htt...

漏洞之檔案包含漏洞

在專案中為了更好地使用 的重用性,引入了檔案包含函式,可以通過檔案包含函式將檔案包含進來,直接使用包含檔案的 完成類似python中的import功能。在包含檔案時候,為了靈活包含檔案,將被包含檔案設定為變數,通過動態變數來引入需要包含的檔案時,使用者可以對變數的值可控而伺服器端未對變數值進行合理地...