漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2012-010800
漏洞标题:当 |XSS蠕虫| 与 |QQ系统消息推送| 双剑合璧之后 …
相关厂商:腾讯
漏洞作者: gainover
提交时间:2012-08-11 18:43
修复时间:2012-09-25 18:43
公开时间:2012-09-25 18:43
漏洞类型:xss跨站脚本攻击
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2012-08-11: 细节已通知厂商并且等待厂商处理中
2012-08-13: 厂商已经确认,细节仅向厂商公开
2012-08-23: 细节向核心白帽子及相关领域专家公开
2012-09-02: 细节向普通白帽子公开
2012-09-12: 细节向实习白帽子公开
2012-09-25: 细节向公众公开
简要描述:
QQ某处页面存在缺陷,导致我们可以恶意推送QQ系统消息,但是单纯的推送消息并不能太实质性的危害!但是,如果这个“系统消息”的链接能够被我们修改为我们自定义的页面的话,那就危险了!在自定义的页面内,结合一个FLASH XSS,进而自动获取用户的好友列表,自动给受害者的好友推送恶意的“系统消息”! 想想看,那会是一个什么效果? 当XSS蠕虫结合腾讯的系统消息功能,会是个什么疯狂的效果呢? 可惜,我们是白帽子,无法去实际测试会产生的恐怖后果 :) ,但是利用过程中的一些思路却可以被借鉴。
PS:该漏洞最初由我们全宇宙最帅的男人only_guest发现!!
在PKAV官网,我们也对此漏洞相关细节进行了描述,http://pkav.net/2012/08/xssworm-qqxiaoxi-vul/ (考虑到漏洞的实际危害,目前对此文进行了加密操作,在腾讯进行修复后,将会予以公开。)
详细说明:
1. 首先是我们全宇宙最帅的男人only_guest发现在QQ奥运竞猜处,可以无限给好友发送邀请消息,而且可以自定义消息窗口的内容。这样一来,我们就可以给好友发送一些虚假公告,或者是一些搞笑的“鄙视“信息。
2. 但是如果仅仅是这样的话,只能算是一个鸡肋,甚至都算不上是一个安全漏洞了!
3. QQ系统消息是可以点击进去查看详情的,如果我们可以把这个链接都改为自己的呢?那么造成的危害将会瞬间升级!
4. 带着这个思路,我们可以开始对“奥运竞猜邀请”这个模块进行抓包分析。
5. 经过抓包,我们可以看到给好友发送一个邀请,主要是2步~
5.1 获取好友列表的请求
在这个请求中,我们看到,有“系统消息”里点击的那个链接。那么这个链接出现在这个请求里有什么用呢? 我们看看这个请求里的源码。会看到以下内容:
我们可以看到,在这段代码里,有invateUrl (这个单词是不是写错了,invite?),还有invateUrl对应的hash
而在下一个请求5.2中,正好又用到了这个hash值。
5.2 给好友发送邀请的请求。
6. 经过以上抓包分析,我们不难做出以下开发逻辑的猜测:
6.1 首先通过http://apps.2012.qq.com/guess/friends/list得到好友的QQ号码,token值,以及被邀请竞猜的URL以及URL对应的HASH值
6.2 利用6.1中得到的数据给用户发送邀请
7. 那么,我们将第一步url里的http://apps.2012.qq.com/guess/guess-tid-18-id-363修改成我们自己的呢?于是我们测试,将url修改为 http://pkav.net,得不到返回结果。
8. 看来这里对域名进行了判断过滤, 那么我们找一个同域名下的XSS试一下吧~
http://apps.2012.qq.com/guess/friends/list?url=http%3A%2F%2Fapps.2012.qq.com%2Fguess%2Fguess-tid-18-id-363";alert(1)//&message=ok
10. 不幸的是,上面这个XSS URL通过了5.1步,但是在5.2步,由于长度限制,返回了错误。
11. 那么这里到底限制了多少长度呢?为了方便测试,用俺的魔盒(http://www.toolmao.com)写了一个利用程序进行了测试。
12. 随后我将这个程序发送给了only_guest, 过一会,他发现在5.1这个步骤上,QQ的域名判断存在问题,用http://pkav.net/#.qq.com/?http://1.qq.com一样可以发送成功。 看来QQ在这里的判断正则写的不到位?或者是indexOf("qq.com")的方式检测?
13. 这样一来,我们就可以向自己的好友推送恶意的“系统消息”,并且用户点击系统消息后,会打开我们所设置的链接,http://pkav.net,如下图:
14. 当然这个还不算什么, 如果把这个系统消息推送,再配合一个QQ的XSS,效果该如何呢? 因为FLASH XSS具有独特的优势(http://zone.wooyun.org/content/368),我就去腾讯的域名下找一个FLASH XSS,然后进行下一步的利用。
15. 利用思路可以用下图表示:
16. 按照上面的思路,我们可以写一下利用代码!
16.1 首先是FLASH XSS的利用代码。
16.2 FLASH XSS会调用我们的JS文件。
16.3 aoyun_worm.js会将用户的QQ号码和cookies发送给aoyun_receive.php
16.4 aoyun_receive.php 就会利用用户的cookies向用户的好友自动推送消息。
这里用mysql来存储了以及推送过的QQ号码,防止对同一个用户的全部好友进行多次重复推送。
漏洞证明:
修复方案:
1. 等奥运结束,活动下线即可
2. 对推送消息处的域名判断做审查并修改
3. 对消息推送次数做限制
4. 修复FLASH XSS,不修复也可以 :),留着我下次再用吧~~
版权声明:转载请注明来源 gainover@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2012-08-13 14:04
厂商回复:
感谢反馈,我们正在跟进处理中
最新状态:
暂无