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

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

缺陷编号:wooyun-2014-065813

漏洞标题:腾讯QQ强制聊天漏洞(也可以判断任何人好友关系等)

相关厂商:腾讯

漏洞作者: 小虫

提交时间:2014-06-23 17:20

修复时间:2014-06-24 10:21

公开时间:2014-06-24 10:21

漏洞类型:未授权访问/权限绕过

危害等级:低

自评Rank:5

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-06-23: 细节已通知厂商并且等待厂商处理中
2014-06-24: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

腾讯QQ强制聊天是一个经久不衰的话题,今天小虫就提交一个关于强聊的bug吧,该bug可实现对任意QQ发起临时会话,细节不便透漏。。。

详细说明:

所谓强聊,就是不经过对方同意,直接发起QQ会话。
这个强聊的漏洞是由QQ空间引发的。
怀着严谨的态度,以下所有测试均是在测试QQ号码未开通QQ在线状态服务的前提下!开启了这个服务,就不用这么麻烦了,直接就能聊。
在QQ空间中,有一个谁看过我的功能,然后我们把鼠标移到他们的头像上,会弹出一个信息卡片,如图:

detail1.png


信息卡片上有一个聊天功能,也就是这个接口,出现了严重的bug。
点击聊天,抓包结果如下:

detail2.png


从图片中可以看出,聊天的接口为:

http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=20737302&to_uin=569550119&g_tk=1593160781


里边有两个重要参数qzone_uin发起QQ(以下简称sender),to_uin接收QQ(以下简称receiver),指定这两个参数后,请求接口,返回信息如下:

<script type="text/javascript">
<!--
var url = 'tencent://message/?Menu=yes&uin=569550119&Service=112&SigT=ff8847c4116e035fd4b467f691cd9e42c0d413cec47eefb75d5e970421a2376ab400fffb0ea6cb8a&SigU=8a718a0cd8eba14b389fceb5788e72797b8a7eae107b9c43dd56bc7cc21090bccf67158b657963841c529232def3d416761799a1050acaaa29033f62f7fb46b5580fef571e7d82041508e926d65900ae77fae70b9cc4a341b7677c65b215d0327211235a5702bb6564157a3dfc11abe4';
location = url;
//-->
</script>


这里边又有三个非常重要的数据,经过大量实践,发现:uin是接收人的QQ,SigT是receiver的指纹,SigU是sender的指纹。
由此可见,有了这两个指纹,然后访问tencent://message/接口,就可以发起临时会话。
那怎么实现强聊呢?
小虫直接说结论,想强聊,必须知道自己一个好友的QQ号和被聊人一个好友的QQ号。这两个条件均不难实现,自己的QQ好友您还不知道么。。。而被聊人的QQ好友,也是很容易获取的,比如你想和你同班的美女聊,那么班主任的QQ就是切入点。
为什么需要这么奇怪的条件呢?小虫直接演示。
假设有四个角色,分别是A(发起人),AF(发起人好友),B(接收人),BF(接收人好友)
第一步,我们需要在A和AF间建立一个通道,将A作为聊天的发起人,可以这样构造URL:

http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=A&to_uin=AF&g_tk=1593160781


在服务器返回的参数中,我们拿到SigU参数,这个也就是A作为sender的指纹。
第二步,我们在B和BF间建立一个通道,将B作为聊天接收人,可以这样构造URL:

http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=BF&to_uin=B&g_tk=1593160781


在服务器返回的参数中,我们拿到SigT参数,这个也就是 B作为receiver的指纹。
接下来我们把这两个指纹混合在一起,访问tencent://message/接口(别忘了加上最基本的uin参数,接收人QQ),恭喜,可以聊天了!
等等,好像有大问题,假如B和BF不是好友呢?我们并不能保证他们一定是好友,也就是说,我们是猜的。
这一猜,就出大问题了!!!

detail3.png


上图我就猜错了,他们不是好友。。。
聪明的你可能已经发觉了,这个接口可以测试两个QQ号码是不是好友(前提是被测者未开通QQ在线状态,如果一方开通了这个服务,可以尝试将sender、receiver反过来)!!!
这是多么邪恶的接口!
不法分子可以通过这个接口收费帮别人测试好友,进而导致情侣隐私泄漏,夫妻感情破裂,进而导致社会不和谐,进而导致生产力下降,进而导致科技停止发展,严重阻碍人类进化。
最后,补充一句,通过这个方法发起的临时会话,即使没有开启QQ在线状态服务也是可以的,除非你屏蔽了所有临时会话。

漏洞证明:

20737302和1444390619强聊。
中间人649374916,这个号码既是20737302的好友,也是1444390619的好友。
就地取材,我用官方的接口证明20737302和1444390619不是好友。

zhengmign1.png


构造sender指纹:

zhengmign2.png


构造receiver指纹:

zhengmign3.png


混合指纹信息,访问临时会话接口:

zhengmign4.png


zhengmign5.png


修复方案:

其实漏洞主要出现在这个接口上:

http://r.cnc.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=649374916&to_uin=1444390619&g_tk=1593160781


关键在于这个接口可以任意使用,输入什么QQ号都行,只要限制一下,让这个接口只允许当前登录的QQ发起即可,虽然说起来简单,但由于具体业务原因,可能很不好操作。

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


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-06-24 10:21

厂商回复:

非常感谢您的报告,经评估该问题并不存在,故此忽略。如果您有任何的疑问,欢迎反馈,我们会有专人跟进处理。

最新状态:

暂无


漏洞评价:

评论

  1. 2014-06-23 17:28 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    卖茶叶那种是不是这么搞的

  2. 2014-06-23 17:44 | 郭斯特 ( 普通白帽子 | Rank:181 漏洞数:69 | GhostWin)

    @疯狗 狗哥 求过~ http://www.wooyun.org/bugs/wooyun-2014-065830/trace/cee6b4d95f031321fc760c2d0c074d86http://www.wooyun.org/bugs/wooyun-2014-065819/trace/63fee1eac3f8a8df6caa9b355a31e549

  3. 2014-06-23 20:21 | 寂寞的瘦子 ( 普通白帽子 | Rank:242 漏洞数:53 | 一切语言转汇编理论)

    @疯狗 买茶叶蛋?啥段子?

  4. 2014-06-23 20:58 | 小学猹 ( 实习白帽子 | Rank:81 漏洞数:30 | 暮春者,春服既成,冠者五六人,童子六七人...)

    mark0 0

  5. 2014-06-23 21:23 | Mosuan ( 普通白帽子 | Rank:449 漏洞数:175 | 尘封此号,不装逼了,再见孩子们。by Mosua...)

    @疯狗 求审核,看着别扭,都半个月了

  6. 2014-06-24 10:36 | 小虫 ( 路人 | Rank:2 漏洞数:2 | 菜鸟一枚,希望为网络安全做出一份贡献)

    既然忽略,看来我可以做一个nodejs应用,来提供在线聊天、好友判断服务了。。。

  7. 2014-06-24 11:06 | 乡间小路 ( 路人 | 还没有发布任何漏洞 | 关注网络安全。)

    不法分子可以通过这个接口收费帮别人测试好友,进而导致情侣隐私泄漏,夫妻感情破裂,进而导致社会不和谐,进而导致生产力下降,进而导致科技停止发展,严重阻碍人类进化。

  8. 2014-06-24 13:46 | 铁蛋火车侠 ( 普通白帽子 | Rank:156 漏洞数:31 | Q群371620085 技术交流群 有漂亮妹纸!)

    @乡间小路 我擦 犀利~ 这洞给20rank都少了 影响太大

  9. 2014-06-24 14:02 | 小学猹 ( 实习白帽子 | Rank:81 漏洞数:30 | 暮春者,春服既成,冠者五六人,童子六七人...)

    --。--似乎真的不能聊

  10. 2014-06-24 14:55 | Anonymous.L ( 实习白帽子 | Rank:37 漏洞数:8 | 最后一位关注xxxx的人 , 孤独之人)

    @Mosuan PHP初学者?

  11. 2014-06-24 15:44 | Mosuan ( 普通白帽子 | Rank:449 漏洞数:175 | 尘封此号,不装逼了,再见孩子们。by Mosua...)

    @Anonymous.L 是的,有何指教?

  12. 2014-06-24 18:09 | 乡间小路 ( 路人 | 还没有发布任何漏洞 | 关注网络安全。)

    厂商回复:非常感谢您的报告,经评估该问题并不存在,故此忽略。如果您有任何的疑问,欢迎反馈,我们会有专人跟进处理。现在打开~http403错误

  13. 2014-06-24 21:39 | fhod ( 路人 | Rank:11 漏洞数:1 | 进来学习的)

    这奸商,问题不存在,怎么现在打开403错误

  14. 2014-06-25 09:28 | Anonymous.L ( 实习白帽子 | Rank:37 漏洞数:8 | 最后一位关注xxxx的人 , 孤独之人)

    @Mosuan 那是准备做PHP开发?

  15. 2014-06-25 09:29 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    我去?403?

  16. 2014-06-25 09:51 | 小虫 ( 路人 | Rank:2 漏洞数:2 | 菜鸟一枚,希望为网络安全做出一份贡献)

    我发现的时候肯定不是403的,否则这些图哪来的。。晕死刚刚我看了一下,地址换了。变成了:http://r.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin=20737302&to_uin=649374916&g_tk=1531301928简单来个403,就把我给否了,太鲁莽。。。各位高手,我把方法都告诉你们了,自己动手去试试呗!!别直接用我给的结果,亲自操作一遍

  17. 2014-06-25 09:52 | 小虫 ( 路人 | Rank:2 漏洞数:2 | 菜鸟一枚,希望为网络安全做出一份贡献)

    @wefgod 绝对可用,耐心点,自从抓包,然后操作一遍

  18. 2014-06-25 09:55 | 小虫 ( 路人 | Rank:2 漏洞数:2 | 菜鸟一枚,希望为网络安全做出一份贡献)

    @fhod 地址有变,重新抓包即可,我今天就写个程序出来

  19. 2014-06-25 10:09 | Mosuan ( 普通白帽子 | Rank:449 漏洞数:175 | 尘封此号,不装逼了,再见孩子们。by Mosua...)

    @Anonymous.L 不知道,走一步看一步

  20. 2014-06-25 11:17 | 小虫 ( 路人 | Rank:2 漏洞数:2 | 菜鸟一枚,希望为网络安全做出一份贡献)

    @Mosuan 学好js才是硬道理

  21. 2014-06-25 11:35 | wefgod ( 普通白帽子 | Rank:1807 漏洞数:179 | 力不从心)

    @小虫 原来如此。看来TSRC又悲剧了

  22. 2014-06-25 11:54 | Mosuan ( 普通白帽子 | Rank:449 漏洞数:175 | 尘封此号,不装逼了,再见孩子们。by Mosua...)

    @小虫 暂时对js没兴趣

  23. 2014-06-28 23:18 | by灰客 ( 路人 | Rank:20 漏洞数:12 )

    @小虫 可以用 = =程序写好了吗

  24. 2014-06-29 20:27 | by灰客 ( 路人 | Rank:20 漏洞数:12 )

    @小虫 程序写好了,一级查询的,如何能二级查询?

  25. 2014-07-31 21:12 | 老和尚 ( 普通白帽子 | Rank:223 漏洞数:45 | 总有一天,我会骑着雨牛@'雨。踩着一哥@jan...)

    终于写好了 明天我也去卖茶叶啊....