黑客web脚本攻击与防御技术核心剖析 黑客攻击新手法:selfxss+csrf 漏洞组合拳—脑洞大开
本篇文章作者:来自赛克艾威安全社区的,也是我们最近一批安全学员里非常优秀的一名新星 lawliet
这篇文章给大家分享一下我在漏洞挖掘中对一些漏洞组合拳的利用方法,相信大家在漏洞挖掘中都遇到过这样一个问题,比如我发现了一个存储型xss,但是只是鸡肋的selfxss,只能自己看到才能触发、又或者是单单的csrf、或者没有实质危害的越权漏洞等,就算提交了也只能算低危,如果小伙伴们在漏洞挖掘中遇到了这些问题,那么这篇文章或许可以帮到各位一些,下面我通过我挖掘到的两个利用漏洞组合拳的方式,分享一下如何将低危漏洞变成高危
组合拳一式:selfxss+水平越权漏洞
虽然只是一个selfxss,但是结合水平越权添加的话,可以向其他用户个人中心添加xss payload,从而使该目标网站的目标用户去触发该xss漏洞,将js恶意代码在其浏览器执行
举个「栗」子:
用户中心设置信息的地方没有对xss过滤导致存在存储型xss漏洞。尝试新增常用联系人,在详细地址的位置插入xss的payload
但是此处有可能只是一个selfxss黑客web脚本攻击与防御技术核心剖析,如果只是能打到自己的cookie,那么这个存储型xss就会显得很鸡肋。但是这个网站存在一个越权添加个人信息的漏洞,越权的漏洞之前也提交过一次,在添加的时候通过修改user_id可以越权将信息添加到其它用户里,在这里可以利用越权漏洞将xsspayload插入其他用户的个人中心里去扩大这个selfxss的危害,简单来说就是利用越权添加和selfxss的组合拳增加这个selfxss的危害,这样就可以打到其他用户的cookie
还是之前测试越权的两个账号
用户名:格鲁特 用户id:112054
用户名:火箭 用户id:112069
首先在格鲁特的个人中心中添加常用联系人,之前说了在详细地址处存在存储型xss,这里插入加载远程js的xsspayload,同时使用xss平台接收信息
xsspayload:
之后抓包,数据包里有个参数为user_id,这个参数可控,导致可以越权
修改数据包中的user_id,尝试将此条包含xsspayload的信息越权添加到其他用户的个人信息中,如果成功,那么其他用户在登陆后查看时就会触发xss代码加载远程脚本,将用户的cookie打到我们的xss平台上,这里将user_id改为火箭用户的id(112069)
可以看到添加成功,但是在当前的账号上看不到刚刚添加的信息
然后使用火箭账号登陆,可以看到包含xsspayload的信息是否已经被越权添加到火箭用户的常用信息中,可以看到火箭用户在登陆后查看联系人信息时我们的xss平台就能接收到火箭用户的cookie
接下来将获取到的火箭用户的cookie替换为格鲁特用户的cookie,可以看到成功登陆到了火箭的账号
而且user_id只有6位数,是可以遍历的,如果遍历了所有的uid,那么就可以打到所有用户的cookie,所以漏洞的危害还是非常大的,所以通过selfxss+水平越权两个低危漏洞组合就可以变成一个影响严重的高危漏洞
组合拳二式:漏洞组合拳漏洞组合拳
selfxss危害不够,只能自己弹自己?遇到这样的低危漏洞千万不要放过它,结合一下csrf,会有想不到的效果
再举个「栗」子:
在个人中心签名处,经过测试发现存在存储型xss,虽然网站将alert替换为了空,但是只替换了一次,所以通过构造payload:
提交完签名后刷新页面后发现可以弹框
但是貌似这个只能自己看到黑客web脚本攻击与防御技术核心剖析,因为不确定管理员能否看到自己的签名,所以如果只是一个self的存储型xss的话,危害可能并不会那么大。。。。。。。别急,咱们继续往下看,既然是提交签名的话,一定会发送一次http请求的,所以猜测这一点可能存在csrf,经过测试确实是存在的,但是该网站对csrf是有防御的,因为发送请求时带上了referer头,并且服务端对referer头做了检查,经过一番fuzz后发现referer头里面只要有该网站的域名就可以绕过服务端对csrf的限制