漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-095664
漏洞标题:QQ浏览器远程任意命令执行漏洞(附有分析和利用)
相关厂商:腾讯
漏洞作者: gainover
提交时间:2015-02-05 14:27
修复时间:2015-05-07 18:00
公开时间:2015-05-07 18:00
漏洞类型:远程代码执行
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-02-05: 细节已通知厂商并且等待厂商处理中
2015-02-06: 厂商已经确认,细节仅向厂商公开
2015-02-09: 细节向第三方安全合作伙伴开放
2015-04-02: 细节向核心白帽子及相关领域专家公开
2015-04-12: 细节向普通白帽子公开
2015-04-22: 细节向实习白帽子公开
2015-05-07: 细节向公众公开
简要描述:
嗯,有点意思!
详细说明:
1. 对于QQ浏览器来说,只要是qq.com的域名下的网页,就有权限调用 external下的一些API接口,比如:
安装插件:window.external.extension.installExtension
卸载插件:window.external.getExtension("").uninstallExtension
2. 对于window.external.extension.installExtension,其用法如下:
一个实例:
其中,插件地址要求是qq.com域下的地址方可。
3. 看样子我们似乎可以安装任意插件,然而,QQ的浏览器插件实现,对插件内所调用的JS等含有功能代码的文件均有校验机制,这使得我们无法在插件内打包恶意的JS代码。
4. 然而,QQ浏览器插件(qrx)本身就是一个压缩包,远程安装QQ插件的时候,QQ浏览器会首先解压这个压缩包,然后才是上一步的校验。校验这一步没什么问题,那解压缩这步会不会有问题呢?
5. 于是,我们下载一个QQ浏览器插件,采用7zip打开, 拖入一个calc.exe到压缩包中,
接着对calc.exe进行重命名:
../../../../../../../../../calc.exe
相当于我们在压缩包里打包了一个这样路径的文件:C:\Users\用户名\AppData\Roaming\Tencent\QQBrowser\Extensions8\{38D6C77F-66BE-413E-996C-85372DB1A510}\8.0.0.2\../../../../../../../../../calc.exe
6. 我们将改造后的 1.qrx文件和index.php放到我们本地测试服务器(x.com)的根目录下。
/1.qrx
/index.php
其中index.php代码为:
然后我们为了绕过window.external.extension.installExtension中插件URL的域名限制,我们在乌云以前的漏洞里找到了一个302跳转:
http://tixing.qq.com/cgi-bin/jump?url=http://xxx.com/
这个跳转本身的url参数依然存在域名判断限制,但是可以被我们可以轻松的用以下方式绕过。
http://tixing.qq.com/cgi-bin/jump?url=http://x.com?qq.com/
这也是我们最终构造好的插件下载地址:
http://tixing.qq.com/cgi-bin/jump?url=http://x.com?qq.com/
--> 跳转到:
http://x.com?qq.com/
--> 相当于 http://x.com/index.php
--> 读取1.qrx的内容返回
7. 我们随便打开一个QQ的网站,比如 qzs.qq.com/123 (网页不存在没关系)
然后F12打开脚本控制台,运行下面的测试代码(会向C盘根目录写入一个calc.exe):
效果如下图所示:
可以看到(Win 7 下需关闭UAC), 调用安装插件这个API后,确实在C盘根目录下写入了一个calc.exe文件。
XP下也一样是可以的。
8. 最后,我们要做的事情,就是找一个QQ域下的XSS, 这里我就不找了。因为这个漏洞的重点已经不在找XSS上了。。如果一定要我找一个补上,请留言。
漏洞证明:
1. win7下,关闭UAC的情况下,可以写入启动目录,
calc.exe 重命名为 ../../../../../../../../../ProgramData/Microsoft/Windows/Start Menu/Programs/Startup/calc.exe 即可。
但是XP下,启动目录有中文,这个漏洞,在解压时,无法正常处理中文路径。
2. 但是xp下,可以结合其它小问题来实现命令执行,比如dll劫持。
如果QQ浏览器默认路径安装,
自己创建一个dll,重命名为 ../../../../../../../../../Program Files/Tencent/QQBrowser/setupapi.dll
用户访问恶意构造网页,安装恶意插件包,即会在QQ浏览器所在目录释放一个setupapi.dll,下次浏览器启动时,被劫持,如下图:
修复方案:
修复插件包安装相关代码。
修复其它一些小问题。
版权声明:转载请注明来源 gainover@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:15
确认时间:2015-02-06 17:58
厂商回复:
非常感谢您的报告,问题已着手处理,感谢大家对腾讯业务安全的关注。如果您有任何疑问,欢迎反馈,我们会有专人跟进处理。
最新状态:
暂无