HTTP请求走私 | PortSwigger(burpsuite官方靶场)| part 2

写在前面

http走私的原理介绍:
Part1
在前面介绍了http走私的探测方法,基本利用。在这里来看看在实际场景中这个漏洞的相关利用吧

Exploiting HTTP request smuggling to bypass front-end security controls, CL.TE vulnerability

这里是使用http走私来绕过前端安全限制,在一些应用程序中,会使用前端服务器来实现访问控制限制,只有授权了,前端才转发该请求。但是后端是不识别的,后端接受每个请求,默认前端完成访问控制。

比如:当前用户被允许访问/home但不允许访问/admin。可以使用以下请求走私攻击绕过此限制:

POST /home HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 62
Transfer-Encoding: chunked

0

GET /admin HTTP/1.1
Host: vulnerable-website.com
Foo: xGET /home HTTP/1.1
Host: vulnerable-website.com

前端会看到两个请求,两个 /home 。传往后端后,后端识别TE,处理两个请求,一个/home 一个/admin

这里,先请求 /admin 显然无法访问。
在这里插入图片描述
请求 / 首页可以完成
在这里插入图片描述
使用插件开cl-te探测,出现请求差异,有http走私漏洞
在这里插入图片描述
修改一下这个请求,发出这个请求两次,后端开始响应第二个请求。出现401未授权
在这里插入图片描述
补全一下请求头,注意此时应使用下列写法。这样可以把下一个请求放入body中,这样请求头不会冲突。这里response就已经进入了 /admin ,找到敏感链接,再次走私请求
在这里插入图片描述
请求完成
在这里插入图片描述

Exploiting HTTP request smuggling to bypass front-end security controls, TE.CL vulnerability

前面是cl-te,这里是te-cl,首先同样 /admin无法访问
在这里插入图片描述
出现响应差异,漏洞探测成功。
在这里插入图片描述
和前面一样的思路进行修改,不过此时te是正常的,注意修改后每次重新计算分块值。此时cl较少(注意关闭自动更新cl),分割出第二个请求,前端看到为一个正常请求,后端看到一个请求和一个等待完善的请求。发送两次即可。
在这里插入图片描述
进入敏感链接
在这里插入图片描述

Exploiting HTTP request smuggling to reveal front-end request rewriting

对于请求,前端服务器可能有字段限定,比如限制一个请求必须含有x-forwarded-for,限制ip。而请求走私出去的请求,你并不知道要加哪些字段才能作为一个“正常”请求。

对于这个问题有两个解决方案,第一就是直接看,查看请求走私的前一个请求,有哪些字段看似是必需的,加上去就行了。第二,将请求走私的内容进行回显,这非常有效,因为此时回显的请求,是已经被前端服务器识别成功的请求,你可以看到解析后的请求(或waf后)是怎样的。

探测明显有走私漏洞
在这里插入图片描述
取出这个请求走私点
在这里插入图片描述
除了正常的浏览之外,还有一个搜索功能,返回会显示搜索了什么值
在这里插入图片描述
就像这样
在这里插入图片描述
抓出搜索请求的包,修改为一个走私请求
在这里插入图片描述
这里的请求回显,cl要长,这样post请求就不会被截断,这样才可以让下一个请求成为postbody

显然这里识别了请求头 X-TaMrxw-Ip ,也就是说,ip是作为判断条件之一的,现在我们加上它,同时设ip为本地。注意每个靶场这个值都是不同的

成功访问
在这里插入图片描述
发出敏感链接包
在这里插入图片描述

Exploiting HTTP request smuggling to capture other users’ requests

通过上面的请求,相信你也发现了,http请求走私还可以暴露下一个请求的请求细节,尤其是已经被识别过的请求,更加致命。这个场景就是在不断地在http请求走私中发现其他用户的敏感请求,利用敏感信息,完成攻击。这就是“捕获其他用户请求”。

由于是对别人发起攻击,那么一定是一个公共的功能,就不再是对主页请求这种东西了,即使捕获到其他用户对主页的请求,也很难获得敏感信息。浏览一下,只有这个评论点有可能出现敏感信息,因为肯定是登录了再评论
在这里插入图片描述
抓出发表评论包
在这里插入图片描述
测试该点是否可以进行走私请求,响应差异探测成功。

cookie ,很容易想到的: 如果拦截到请求,就可以以别人的身份发评论,查看别人登录的情况
在这里插入图片描述
不过仍然要处理的就是回显点,想要获取到下一个请求的消息,必须有一个地方来进行回显,这个点就是评论,需要打乱参数,让下一个请求成为评论,而不是链接
在这里插入图片描述
在这里插入图片描述
这里要多试几次,很有可能是自己的包。多点几下。得到cookie: victim-fingerprint=2F4rpxi73qg5fYoNzPUzLMiS7zJzUTmD; secret=A1xkItl3COG2MIYp7o9szNosj0B4YzI7; session=Cip1s2nRdN57CNSCPqEbRceGHDqp88Ed
抓一个进入个人页面的包,这里由于没登录,跳转到了登录,更改cookie
在这里插入图片描述
完成
在这里插入图片描述

posted @ 2022-06-18 17:05  Sayo-NERV  阅读(203)  评论(0编辑  收藏  举报