漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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,并发表日志。
同时可以抓包看到所发送的html
3. 看看我们日志中输出的内容,allowscriptaccess 变成了 "never"
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=}
即发送日志的内容为:
查看源码,always 神奇的存在了, 如下图:
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. 接着我们构造利用代码。
11. 用上面的代码,会发现FLASH被过滤啦。。看来http://xsst.sinaapp.com/Xss.swf又触发了对src属性的判断规则。
我们稍微修改下,将 / 改为 /, 再次绕过限制。
12. 用以上代码发表日志。查看效果。
IE & chrome下,执行代码。
漏洞证明:
见详细说明
修复方案:
服务器端的逻辑,我不猜~
版权声明:转载请注明来源 gainover@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2013-03-18 15:25
厂商回复:
非常感谢您的报告。这个问题我们已经确认,正在与业务部门进行沟通制定解决方案。如有任何新的进展我们将会及时同步。
最新状态:
暂无