漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2014-080158
漏洞标题:百度浏览器远程命令执行
相关厂商:百度
漏洞作者: gainover
提交时间:2014-10-20 18:24
修复时间:2015-01-18 18:26
公开时间:2015-01-18 18:26
漏洞类型:远程代码执行
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2014-10-20: 细节已通知厂商并且等待厂商处理中
2014-10-20: 厂商已经确认,细节仅向厂商公开
2014-10-23: 细节向第三方安全合作伙伴开放
2014-12-14: 细节向核心白帽子及相关领域专家公开
2014-12-24: 细节向普通白帽子公开
2015-01-03: 细节向实习白帽子公开
2015-01-18: 细节向公众公开
简要描述:
为了上google,我装了百度浏览器(版本:6.5.0.50415),然后就研究了一番。
详细说明:
1. 按照常规的测试思路,首先我们找到特权域,包括bdbrowser://, http://xapp.baidu.com/ 这2个。
2. 随后我们需要在这2个特权域下找到可用的XSS,在bdbrowser域下并没有找到太明显可用的地方,然后开始找xapp.baidu.com,经过一番搜刮,找到了一个DOM XSS的点。
http://xapp.baidu.com/browserextension/single/sinaweibo/auth.php#access_token=<img src=1 onerror=alert(1)>
3. 然而不幸的是,这个DOM XSS会被chrome的xss auditor所拦截。
4. 继续找其他XSS点也没找到, 绕XSS过滤器又绕不过,那么怎么办呢?
百度浏览器是双核,而IE内核对这个DOM XSS并不会拦截,我们可以强制百度浏览器使用IE内核,从而使得这个XSS发挥作用。
5. 使用了一段时间,发现浏览器加载ftp页面的时候,会强制使用IE模式。
6. 而ftp协议下,也是可以访问网页的,因此我们可以使用ftp协议下的页面来嵌入该XSS页面实现效果。于是虚拟机中搭建一个匿名ftp,得到url:
ftp://192.168.1.107/test/bdbrowser.htm
内容如下:
该页面内,会调用外部JS文件 http://192.168.1.20/test/bdbrowser.js
随后的利用代码,均在bdbrowser.js中写入,例如写入一句:alert(document.domain);,可以看到JS被成功执行。
7. 接着,我们要做的是如何从 alert 到 实现远程命令执行。
8. 通过对external所提供的API的一番研究,我将目光集中到了插件安装上。 一个典型的插件安装请求函数为以下内容:
然后会出现以下提示内容:
这个“安装确认框”,显然不是我们想看到的东西。。。
有办法绕过去么?
9. 我猜测,数据中的Update参数的true/false是用于控制是 “更新”一个插件,还是安装一个插件,那么如果是更新一个插件,是不是就不会出现“安装”提示了呢?
于是我用自己编写的chrome插件,进行了一个测试
其中ID为百度浏览器内置的插件ID,UPDATE被设置为true,URL被设置为我们的插件地址。可以看到,插件被成功安装。
10. 到了这一步,我们已经能够实现远程安装任意插件了,接着就是利用插件来执行系统命令啦。
11. 利用 npapi,简单的写了一个dll,然后利用shellexecute执行一下calc
12. 接着我们将chrome插件调用这个dll,具体见chrome插件开发中npapi相关文档
13. 让受害者访问一个页面,页面自动跳转到ftp页面后,插件就会被自动安装上:
代码这样的:
14. 受害者随意访问一个网页, 就可以看到执行了本地的计算器:
漏洞证明:
视频:
http://v.youku.com/v_show/id_XODA3NTE4NzYw.html
密码: wooyuncmd
修复方案:
嗯,先修XSS,其它方面,哪些地方欠缺安全考虑的点,从上文中自行挖掘。
版权声明:转载请注明来源 gainover@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:18
确认时间:2014-10-20 20:18
厂商回复:
感谢提交,我们已经通知业务部门处理此问题。
最新状态:
暂无