应对运营商劫持 JavaScript 文件的新方法!

2016-09-01 09:51:05 +08:00
 BurpSuite

1.最近发现访问网页会出现广告,打开查看 Chrome 开发者工具"Sources"项会看到如下类型的信息!

#.http://120.132.63.203/pjk/pag/ys.php?b=AH009346&c=35080218_123.92.164.34_3344392325_14376&m=aHR0cDovL215LmNoaW5hei5jb20vanMvdWMuanM= #.http://139.196.239.52/?d=8c6c6ddabeceb654272abb060c463aeb&i=123.92.164.34&m=101B548199BA&redirect=http://tool.chinaz.com/template/default/js/public/mobilepage.js?v=201607&radius=

2.很明显发现原始的连接被 Redirect 到了运营商服务器并注入恶意 JavaScript 代码! 3.我的做法是这样的,首先$_GET['m'];接收请求中的 m 参数,并 Base64Decode 解码,然后用 fopen 功能进行打开 Base64Decode 解码后的地址,最后输出出来!具体的代码如下!最后测试一番发现正常!无任何问题! 4.在 Chrome 安装 Switcheroo Redirector 扩展,然后把劫持的连接 307 Redirect 到你的服务器即可,这样即不影响 JavaScript 的载入也能阻断掉注入恶意代码!

3015 次点击
所在节点    宽带症候群
15 条回复
BurpSuite
2016-09-01 09:51:39 +08:00
<?php
header('Content-Type: application/javascript');
header('Pragma: no-cache');
header("Content-type: text/html; charset=utf-8");
if( isset($_GET['redirect']) ){$Redirect = $_GET['redirect'];}else {$Redirect = "http://cdn.bootcss.com/zepto/1.0rc1/zepto.min.js";}
$JavaScriptFile = $Redirect;
$JavaScriptFile = $JavaScriptFile ."".
$JavaScript = fopen($JavaScriptFile,"r");
if($JavaScript){//判断打开错误
while(!feof($JavaScript))
{
echo fgets($JavaScript)."";
}
{
fclose($JavaScript);
}
}else {
echo "\r\n# JavaScript 响应超时!\r\n";//
}
?>
BurpSuite
2016-09-01 09:52:25 +08:00
<?php
header('Content-Type: application/javascript');
header('Pragma: no-cache');
header("Content-type: text/html; charset=utf-8");
if( isset($_GET['m']) ){$IDM = $_GET['m'];}else {$IDM = "aHR0cDovL2Nkbi5ib290Y3NzLmNvbS96ZXB0by8xLjByYzEvemVwdG8ubWluLmpz";}
$DeCodeBase64 = base64_decode($IDM);
$JavaScriptFile = $DeCodeBase64;
$JavaScriptFile = $JavaScriptFile ."".
$JavaScript = fopen($JavaScriptFile,"r");
if($JavaScript){//判断打开错误
while(!feof($JavaScript))
{
echo fgets($JavaScript)."";
}
{
fclose($JavaScript);
}
}else {
echo "\r\n# JavaScript 响应超时!\r\n";//
}
?>
BurpSuite
2016-09-01 09:58:28 +08:00
新手发帖希望能收到些回复! :)
raysonx
2016-09-01 10:09:16 +08:00
直接上 HTTPS 。只要你还在用 HTTP ,运营商有一千种劫持你的方法。
ooxxcc
2016-09-01 10:10:45 +08:00
这不是什么新方法,四五年前长宽就这么玩了

你是服务提供商的话, SSL 保平安
客户的话,珍爱生命远离长宽
BurpSuite
2016-09-01 10:16:05 +08:00
@ooxxcc 我说的是反劫持的新方法!不是劫持的新方法!另外不是长宽,和长宽基本上差不多!
BurpSuite
2016-09-01 10:18:20 +08:00
@raysonx 其他的劫持的方法都好办些,另外现在 HTTPS 普及率还不是很高,很多网站还是 HTTP
netyoyo
2016-09-01 10:20:21 +08:00
直接 ADblock 会不会更省事
BurpSuite
2016-09-01 10:22:32 +08:00
@netyoyo 在之前说了,他这个劫持链接后把恶意代码注入到正常的 JavaScript 文件里面,如果强行阻断那么会导致正常 JavaScript 文件无法加载!
ooxxcc
2016-09-01 10:28:21 +08:00
@BurpSuite 反劫持很简单啊,要么换运营商要么上 https 。。
BurpSuite
2016-09-01 10:32:36 +08:00
@ooxxcc 嗯,简单粗暴哈!不过用技术解决问题更相对实在些!
Lentin
2016-09-01 12:21:04 +08:00
@BurpSuite 有些不是篡改 JS 是直接在你网页里面加哦
KCheshireCat
2016-09-01 13:16:59 +08:00
为何不在源头下手,要使客户端的浏览器请求运营商的 js 劫持地址,我目前就知道以下方法:

1.DNS 污染

2.直接对网页的 GET 请求抢答,在<head>或<body>中附加<script>节点来达成

3.对网页中<script>资源连接的 GET 请求抢答,直接返回劫持内容,或者返回中间代码对网站进行改写使浏览器做出 2.的行为来达到目的

从这 3 点来看,运营商的劫持都是工作在 OSI 第 4 层,所以我认为在 4 层进行拦截应该是效率最高的
BurpSuite
2016-09-07 15:04:28 +08:00
@KCheshireCat 嗯,那倒是,不过要是说只劫持 JavaScript 文件的话,还是此方法最方便!
BurpSuite
2016-09-07 15:05:27 +08:00
@Lentin 嗯,是的,所以此方法只对劫持 JavaScript 文件的管用!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/303097

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX