漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2015-0145836
漏洞标题:橘子浏览器远程代码执行
相关厂商:百度
漏洞作者: 梧桐雨
提交时间:2015-10-10 18:14
修复时间:2016-01-11 15:32
公开时间:2016-01-11 15:32
漏洞类型:远程代码执行
危害等级:高
自评Rank:20
漏洞状态:厂商已经确认
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2015-10-10: 细节已通知厂商并且等待厂商处理中
2015-10-10: 厂商已经确认,细节仅向厂商公开
2015-10-13: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航)
2015-12-04: 细节向核心白帽子及相关领域专家公开
2015-12-14: 细节向普通白帽子公开
2015-12-24: 细节向实习白帽子公开
2016-01-11: 细节向公众公开
简要描述:
这几天在测试机装了百度软件,当然橘子软件也是送的,既然来了那当然不能放过啦~不过在推送你们的软件的时候是否能做下详细的安全测试呢?不然好怕怕的。。
详细说明:
为了保证是最新的,我又在123juzi.com下载了一份最新的,漏洞也是存在的。
具体可看:
版本1.0.9.1033
对橘子浏览器进行分析,发现exe里面藏着宝藏,都写满了html的逻辑!
对常用api分析,发现存在external对象。
其中有一些高危的敏感api,譬如:
window.external.ExtGetMostVisitedUrls(external.ExtGetSuperCode(window)) //查看最近打开最多的地址
获取ico图片路径
window.external.ExtGetUrlIconPath(external.ExtGetSuperCode(window),"http://baidu.com")
获取对应橘子浏览器机器的supercode:
external.ExtGetSuperCode(window)
上面这些都不是重点,重头戏下面来了:
跨域访问:
window.external.ExtGetOpenUrls(external.ExtGetSuperCode(window)) //获取当前打开页面url
橘子浏览器的特权域为:juzi:last history 以及http://baidu.com , http://123juzi.com。
以http://baidu.com为例,使用window.external.ExtGetOpenUrls(external.ExtGetSuperCode(window)) api
输出结果:
完全是可以获取到你当前打开的所有url,以及title了。想着能否找一个命令执行呢?
花了1-2天的时间仔细寻找api,发现有这个api可以修改主页的八宫格,因为橘子浏览器的八宫格是在res://域的,允许调用WScript.Shell 执行任意系统的命令。
api如下:
window.external.ExtModifyNewTabItem(external.ExtGetSuperCode(window), 1, "http://wutongyu.info", "exe")
baidu.com域执行之后:
首页的第二个格子将会变成我的blog的地址。我又想起能用javascript协议来直接执行js命令,但是很不巧,这里过滤了javascript,黑盒了一下发现出现javascript,前面全部会加上一个http。即,如果你想执行javascript:alert(1),就会变成http://javascript:alert(1)。
这样自然没办法执行js,那么能否用空格呢?空格javascript:alert(1),还是一样,没办法绕过。也就是说,你的url里面不存在http://,他就会自动在前面帮你加上。
fuzz之后,发现javascript:alert(1)//http://这样的形式,浏览器不会帮你加上http://。即:
window.external.ExtModifyNewTabItem(external.ExtGetSuperCode(window), 1, " javascript:alert(1)//http://", "这是随便起的标题")
但是发现虽然不会给我们加http://,但是点击却是跳转到about:blank的,崩溃,难道没别的办法了吗?
这个时候我又回到阅读源码的阶段,想看看他是怎么过滤的:
功夫不负有心人,在exe里的 function filterUrl()函数里:具体如下:
原来他只是过滤javascript://协议,并没有区分大小写。我们可以用Javascript://绕过,来继续执行我们的命令。最后生成的code代码为:见测试代码
在baidu.com下执行:
之后,下次用户打开浏览器,打开八宫格的时候点击第二个,任意代码被执行:
事实上,我们通过上面api,可修改所有八宫格的url,全部覆盖为我们的恶意javascript代码。
漏洞证明:
说了这么多,来个视频,更清晰一点。因为没找到好用baidu.com的xss,暂时用这个来替代一下!
如果你们有更好的baidu.com的反射型xss,直接触发的,那这个漏洞危害就更大了。。
链接: http://pan.baidu.com/s/1ntu3Gm9 密码: bgmf
修复方案:
增强过滤规则,最好只允许url为http/https/ftp等开头的链接,同时过滤你们此处的xss
完善api规则。
版权声明:转载请注明来源 梧桐雨@乌云
漏洞回应
厂商回应:
危害等级:高
漏洞Rank:20
确认时间:2015-10-10 20:16
厂商回复:
感谢提交
最新状态:
暂无