缺陷文件:
http://cnc.qzs.qq.com/qzone/newblog/v5/script/common.js
http://qzs.pengyou.com/qzone/newblog/v5/script/common.js
缺陷代码:
1. 首先看看上面这个代码。
2. 它的大致流程如下:
2.1 搜索日志里所有name="musicFlash**"的元素。然后循环对每一个元素处理
2.2 拿一次循环为例,可以看到取出了name="musicFlash**"元素的 ubb 属性。
2.3 而后,在span.innerHTML这段代码中, ubb="' + ubb + '" 这个地方直接加了进去。
2.4 因此这里没有做过滤,会造成XSS。
3. 那么利用代码怎么写呢?
因为日志功能是富文本,不可能屏蔽掉所有的HTML标签。div 标记一般是允许的。那么我们利用div来编写利用代码。
嗯,上面就是利用代码了,很简单吧,发日志的时候,选择使用HTML方式,发送即可。

其它用户访问日志后,效果如下:

打开调试工具,可以看到被inject进去的代码

4. 当然,还没完。。。 因为上面这个代码缺陷,仅限于非IE浏览器,为什么呢?
主要是这句:如下图:

5. 我们的目标是:“没有蛀牙”,只有chrome下可以,有点鸡肋了。
6. 其实这里还存在一个问题。最初测试时,发现腾讯并没有过滤掉object标签,只是对object调用的swf文件的域进行了限制。也就是说 ,发送一下HTML,是不会被过滤掉的
只要 movie的value是 http://qzs.qq.com域名下即可
7. 更重要的是,这里的allowscriptaccess是等于always的。
8. 那么我们只要找到一个 http://qzs.qq.com 域名下,具有缺陷的FLASH XSS即可。
9. google , site:qzs.qq.com filetype:swf ,找到下面这个。
10. 接着我们在发布日志时,发布以下利用代码即可。
11. 看吧,这次IE也会弹啦。

厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2012-10-24 15:27
厂商回复:
非常感谢您的报告。这个问题我们已经确认,正在与业务部门进行沟通制定解决方案。如有任何新的进展我们将会及时同步。
最新状态:
2012-10-25:非常感谢您的报告,目前已经完成对该漏洞的修复,请您帮助复查,有任何问题请联系我们。