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

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

缺陷编号:wooyun-2015-0137693

漏洞标题:旧版本QQ中的一处打开聊天界面就能触发的远程命令执行

相关厂商:腾讯

漏洞作者: gainover

提交时间:2015-08-28 22:01

修复时间:2015-11-29 17:06

公开时间:2015-11-29 17:06

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-08-28: 细节已通知厂商并且等待厂商处理中
2015-08-31: 厂商已经确认,细节仅向厂商公开
2015-09-03: 细节向第三方安全合作伙伴开放
2015-10-25: 细节向核心白帽子及相关领域专家公开
2015-11-04: 细节向普通白帽子公开
2015-11-14: 细节向实习白帽子公开
2015-11-29: 细节向公众公开

简要描述:

虽然这个漏洞已经由于QQ客户端的功能模块更新导致无法复现(大约是2014年4、5月份的版本),但是其中涉及的具体的“小问题”还是依然存在,如果找到了“可替代品”的“入口点”,危害可能将会再次出现。

详细说明:

1. QQ秀是由FLASH来编写的

幻灯片73.PNG


2. 以前的QQ秀提供了一个叫做心情秀的功能

幻灯片74.PNG


3. 心情秀可以在Q秀上显示一段自定义文字,还可以改变文字颜色,这及有可能是在TextField中来显示的,并且这个TextField支持htmlText,那么是否可以插入一个img标签呢?

幻灯片75.PNG


如上图所示,可以发现并不能输入特殊字符?
4. 然而,似乎只是在客户端做了过滤而已。。我们抓包看看。

幻灯片76.PNG


5. 数据被huffcompress算法压缩了,给JS代码下断点,然后修改原始的Q秀数据,提交,

幻灯片77.PNG


可以看到不论是客户端,还是WEB页面,都成功渲染了我们所填写的HTML代码。
6. 接着,我们得试试被img标签嵌入的FLASH是否可以执行恶意代码呢?经测试AS2编写的FLASH才能成功执行,说明父级FLASH为AS2编写。

幻灯片78.PNG


7. getURL试试。

幻灯片79.PNG


成功打开pkav.net
8. 然后。。

幻灯片80.PNG


9. 那么有哪些可以被用来调用的API呢?找到Q秀的主FLASH文件。

幻灯片81.PNG


10. 看到了有意思的API,是吧?执行个calc试试?

幻灯片82.PNG


11. 似乎还缺点什么

幻灯片83.PNG


12. 继续反编译另外一个Q秀的FLASH,看名字似乎胜利就在眼前。

幻灯片84.PNG


13. 分析一下这个函数的作用~

幻灯片85.PNG


14. 尝试调用一下这个download API。

幻灯片86.PNG


成功下载了一个文件,但是文件内容却不对。。Why ?
抓包找一下原因。

幻灯片87.PNG


看来客户端实现的代码大概是这样(伪代码):

幻灯片88.PNG


15. 怎么办呢?团队的@sogili(长短短)同学提出的一个可能的解决方案,换行试试?

幻灯片89.PNG


16. 下载回的数据还是不对?继续抓包:

幻灯片90.PNG


似乎所有的\r都不见了。。。
17.为什么呢?

幻灯片91.PNG


上面是ExternalInterface.call的实际过程,推测“\r\n”可能是在拼接成XML数据之后被“格式化”为“标准”的 “\n”。

幻灯片92.PNG


18. 为了避免这种情况,把\r\n改写成entity的形式,


幻灯片93.PNG


可是,参数在处理过程中,&会进行一次转义处理,依然不行。
19. 是不是没办法了呢?我们把视线切换到 functionName,函数名未做任何过滤措施。

幻灯片94.PNG


20. 然后,我们闭合并构造XML。

幻灯片95.PNG


21. OK,这次我们的请求成功了。

幻灯片96.PNG


22. 到了这里,我们可以修改请求的host了,但是IP我们肯定没办法改掉了。
我们找找看这个IP对应了多少域名

幻灯片97.PNG


23. 接着,我们的目标就是在这些域名下找到我们可以控制的资源。

幻灯片98.PNG


24. 最终,我们在b.qzone.qq.com下找到一个可以用来做bat的接口,注意值的双引号边界。

幻灯片99.PNG


这个接口在登录情况下,是需要csrftoken的,但是在未登录情况下访问,不需要token就可以直接返回数据,所以我们构造请求头时,并不需要带入cookie等信息。
25. 最终:download API下载JSON为bat,在QQ默认安装情况下,下载文件的路径已知,openURL API指定程序路径进行执行。

幻灯片100.PNG


漏洞证明:

结果已经不是那么重要了。。。

修复方案:

由于Q秀的版本更新,正好把心情秀这个功能去除了,新版本Q秀上不会显示心情秀了,不排除有类似其它问题。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-08-31 17:05

厂商回复:

非常感谢您的报告,问题已着手处理,感谢大家对腾讯业务安全的关注。如果您有任何疑问,欢迎反馈,我们会有专人跟进处理。

最新状态:

2015-08-31:这个漏洞是之前老版本的,还是非常感谢报告。另外我们处理漏洞的同学在wooyun后台执行漏洞确认操作时流程有误,感谢wooyun的同学协助修正流程!


漏洞评价:

评论

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

    我擦,这是二哥多年的神洞啊!

  2. 2015-08-31 17:06 | 明月影 ( 路人 | Rank:12 漏洞数:8 )

    神洞……

  3. 2015-08-31 17:07 | king7 ( 普通白帽子 | Rank:645 漏洞数:113 | 收WB~~1:7手续费协商,个位数到三位数量都...)

    二哥用这个搞定了不少妹子吧

  4. 2015-08-31 17:15 | boooooom 认证白帽子 ( 普通白帽子 | Rank:467 漏洞数:50 | 我有一个好想法!)

    膜拜!

  5. 2015-08-31 17:23 | HackBraid 认证白帽子 ( 核心白帽子 | Rank:1741 漏洞数:278 | ...........................................)

    收下我的双膝

  6. 2015-08-31 17:23 | 泳少 ( 普通白帽子 | Rank:232 漏洞数:80 | ★ 梦想这条路踏上了,跪着也要...)

    多旧?

  7. 2015-08-31 17:23 | lxj616 ( 普通白帽子 | Rank:438 漏洞数:90 | <hohoho>)

    本回复是被二哥命令执行后自动回复的

  8. 2015-08-31 17:27 | 浮萍 ( 普通白帽子 | Rank:657 漏洞数:133 | 290)

    二哥肯定又找到新的漏洞了

  9. 2015-08-31 17:31 | DNS ( 普通白帽子 | Rank:510 漏洞数:60 | 没有我,你们就去背IP吧)

    火钳刘明

  10. 2015-08-31 17:32 | xsser 认证白帽子 ( 普通白帽子 | Rank:259 漏洞数:20 | 当我又回首一切,这个世界会好吗?)

    本回复是被二哥命令执行后自动回复的

  11. 2015-08-31 17:36 | sco4x0 ( 实习白帽子 | Rank:31 漏洞数:13 | O_o)

    本回复是被二哥命令执行后自动回复的

  12. 2015-08-31 17:38 | Msyb ( 实习白帽子 | Rank:40 漏洞数:10 | 非常荣幸加入乌云。)

    膜拜大神

  13. 2015-08-31 17:40 | DloveJ ( 普通白帽子 | Rank:1159 漏洞数:208 | <a href=javascrip:alert('xss')>s</a> 点...)

    二哥霸气!!

  14. 2015-08-31 17:43 | Hxai11 ( 普通白帽子 | Rank:1151 漏洞数:221 | 你的爱恨与纠葛,你的回忆与苦痛,都是一体...)

    从此不再需要盗取QQ号了

  15. 2015-08-31 17:50 | YY-2012 ( 普通白帽子 | Rank:3007 漏洞数:661 | 意淫,是《红楼梦》原创的词汇,但后来演变...)

    本回复是被二哥命令执行后自动回复的

  16. 2015-08-31 18:02 | 陆由乙 ( 普通白帽子 | Rank:175 漏洞数:53 | 呵呵!)

  17. 2015-08-31 18:08 | qhwlpg ( 普通白帽子 | Rank:245 漏洞数:63 | 潜心代码审计。)

    本回复是被二哥命令执行后自动回复的

  18. 2015-08-31 18:14 | Sunshie ( 实习白帽子 | Rank:63 漏洞数:11 | http://phpinfo.me)

    本回复是被二哥命令执行后自动回复的

  19. 2015-08-31 18:23 | 土夫子 ( 普通白帽子 | Rank:324 漏洞数:58 | 自由)

    @疯狗 麻烦狗哥审核一下(二次更新,去掉了敏感信息)http://wooyun.org/bugs/wooyun-2015-0138110

  20. 2015-08-31 18:26 | 浅蓝 ( 普通白帽子 | Rank:279 漏洞数:110 | 爱安全:www.ixsec.orgXsec社区:zone.ixse...)

    二哥 请收下我的膝盖

  21. 2015-08-31 18:46 | M4sk ( 普通白帽子 | Rank:1213 漏洞数:321 | 国内信息安全任重而道远,还需要厂商和白帽...)

    本回复是被二哥命令执行后自动回复的

  22. 2015-08-31 18:49 | zeracker 认证白帽子 ( 核心白帽子 | Rank:1077 漏洞数:139 | 多乌云、多机会!微信公众号: id:a301zls ...)

    本回复是被二哥命令执行后自动回复的

  23. 2015-08-31 18:58 | 大物期末不能挂 ( 普通白帽子 | Rank:132 漏洞数:23 | 1.一个学渣,只求每门都不挂2.想把漏洞提...)

    本回复是被二哥命令执行后自动回复的

  24. 2015-08-31 18:59 | 进击的zjx ( 普通白帽子 | Rank:461 漏洞数:76 | 本想成为从业者,奈何沦为爱好者!哎……这...)

    本回复是被二哥命令执行后自动回复的

  25. 2015-08-31 19:12 | 小草鸡炖蘑菇 ( 路人 | Rank:8 漏洞数:2 | 既往不恋 当下不杂 未来不迎)

    本回复是被二哥命令执行后自动回复的

  26. 2015-08-31 19:18 | Submit ( 普通白帽子 | Rank:487 漏洞数:107 | 手头紧,卖点WB,1:10)

    本回复是被二哥命令执行后自动回复的 (我不想回复的,我是被逼的,被远程执行命令回复)

  27. 2015-08-31 19:19 | niliu 认证白帽子 ( 核心白帽子 | Rank:1542 漏洞数:208 | 逆流而上)

    本回复是被二哥命令执行后自动回复的

  28. 2015-08-31 19:25 | 毕月乌 ( 普通白帽子 | Rank:120 漏洞数:16 | 猜猜我是谁?)

    本回复是被二哥命令执行后自动回复的

  29. 2015-08-31 19:27 | Undoit ( 普通白帽子 | Rank:167 漏洞数:25 | 打酱油)

    本回复是被二哥命令执行后自动回复的

  30. 2015-08-31 19:44 | 刘海哥 ( 普通白帽子 | Rank:114 漏洞数:28 | 索要联系方式但不送礼物的厂商定义为无良厂...)

    本回复是被二哥命令执行后自动回复的

  31. 2015-08-31 19:52 | 冷白开。 ( 普通白帽子 | Rank:160 漏洞数:67 | QQ:970060225 拒绝黑产,欢迎大牛交流技术...)

    本回复是被二哥命令执行后自动回复的

  32. 2015-08-31 20:29 | 超人不会飞 ( 实习白帽子 | Rank:85 漏洞数:24 | 好好学习,天天向上!)

    本回复是被二哥命令执行后自动回复的

  33. 2015-08-31 20:36 | Q1NG ( 普通白帽子 | Rank:111 漏洞数:21 | 临 兵 斗 者 皆 阵 列 前 行 !)

    二哥快说还有好多,神洞 66666

  34. 2015-08-31 21:01 | px1624 ( 普通白帽子 | Rank:1038 漏洞数:177 | px1624)

    擦,你不是在tw么

  35. 2015-08-31 21:07 | 红糖哥 ( 实习白帽子 | Rank:70 漏洞数:8 | 红糖暖胃不暖逼)

    本回复是被二哥命令执行后自动回复的

  36. 2015-08-31 21:45 | 黑吃黑 ( 普通白帽子 | Rank:143 漏洞数:30 | 倚楼听风雨,淡看江湖路...)

    过了一年才舍得发出来,应该有不少妹子被二哥命令执行了吧

  37. 2015-08-31 21:49 | 不会游泳的鱼 ( 普通白帽子 | Rank:133 漏洞数:41 | 非著名白帽子)

    本回复是被二哥命令执行后自动回复的

  38. 2015-08-31 22:30 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1234 漏洞数:122 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)

    二哥太吊了

  39. 2015-08-31 22:30 | 大师兄 ( 路人 | Rank:14 漏洞数:6 | 每日必关注乌云)

    二哥的神技,望尘莫及

  40. 2015-08-31 22:49 | fintop ( 路人 | Rank:4 漏洞数:1 | 小白一个)

    本回复是被二哥命令执行后自动回复的

  41. 2015-08-31 23:06 | onpu ( 普通白帽子 | Rank:102 漏洞数:27 | 学习就是最好的投资,勿忘初心。)

    二哥 请收下我的膝盖

  42. 2015-08-31 23:36 | 秋风 ( 普通白帽子 | Rank:438 漏洞数:44 | 码农一枚,关注互联网安全)

    NB!

  43. 2015-09-01 10:04 | 小葵 ( 实习白帽子 | Rank:84 漏洞数:11 | 我们是害虫,我们是害虫!)

    本回复是被二哥命令执行后自动回复的

  44. 2015-09-03 18:26 | f4ckbaidu ( 普通白帽子 | Rank:189 漏洞数:25 | 开发真是日了狗了)

    此号hacked by 二哥

  45. 2015-09-03 20:08 | 哎呦我去 ( 路人 | Rank:4 漏洞数:4 | 新手白帽子!!继续努力)

    我只是个打酱油的

  46. 2015-09-04 18:48 | 小杰哥 ( 普通白帽子 | Rank:179 漏洞数:28 | 逆水行舟,不进则退。)

    本回复是被二哥命令执行后自动回复的

  47. 2015-09-04 21:57 | Mark ( 路人 | Rank:8 漏洞数:2 | 渗透你的心)

    请收下我的膝盖

  48. 2015-09-07 10:20 | 香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)

    听二哥说,思路很猥琐

  49. 2015-09-11 22:36 | jye33 ( 普通白帽子 | Rank:178 漏洞数:52 | 没有什么能够阻挡,我对静静的向往)

    牛逼的二哥

  50. 2015-09-27 11:25 | Hackshy ( 实习白帽子 | Rank:45 漏洞数:22 | 猪猪侠爱吃棒棒糖)

    本回复是被二哥命令执行后自动回复的

  51. 2015-09-28 17:49 | 指尖的温度 ( 路人 | Rank:25 漏洞数:9 )

    本回复是被二哥命令执行后自动回复的

  52. 2015-10-02 16:10 | 金馆长 ( 路人 | Rank:4 漏洞数:2 | Up)

    本回复是被二哥命令执行后自动回复的

  53. 2015-10-08 17:34 | Code Life ( 路人 | Rank:18 漏洞数:9 | Code Life,Jion It!)

    本回复是被二哥命令执行后自动回复的

  54. 2015-11-04 17:55 | 小红猪 ( 普通白帽子 | Rank:214 漏洞数:40 )

    本回复是被二哥命令执行后自动回复的

  55. 2015-11-29 17:12 | 有归于无 ( 实习白帽子 | Rank:96 漏洞数:18 | 有归于无)

    不愧是偶像啊