V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
BurpSuite
V2EX  ›  宽带症候群

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

  •  
  •   BurpSuite · 2016-09-01 09:51:05 +08:00 · 3140 次点击
    这是一个创建于 3007 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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 的载入也能阻断掉注入恶意代码!

    15 条回复    2016-09-07 15:05:27 +08:00
    BurpSuite
        1
    BurpSuite  
    OP
       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
        2
    BurpSuite  
    OP
       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
        3
    BurpSuite  
    OP
       2016-09-01 09:58:28 +08:00
    新手发帖希望能收到些回复! :)
    raysonx
        4
    raysonx  
       2016-09-01 10:09:16 +08:00 via Android
    直接上 HTTPS 。只要你还在用 HTTP ,运营商有一千种劫持你的方法。
    ooxxcc
        5
    ooxxcc  
       2016-09-01 10:10:45 +08:00
    这不是什么新方法,四五年前长宽就这么玩了

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

    1.DNS 污染

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

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

    从这 3 点来看,运营商的劫持都是工作在 OSI 第 4 层,所以我认为在 4 层进行拦截应该是效率最高的
    BurpSuite
        14
    BurpSuite  
    OP
       2016-09-07 15:04:28 +08:00
    @KCheshireCat 嗯,那倒是,不过要是说只劫持 JavaScript 文件的话,还是此方法最方便!
    BurpSuite
        15
    BurpSuite  
    OP
       2016-09-07 15:05:27 +08:00
    @Lentin 嗯,是的,所以此方法只对劫持 JavaScript 文件的管用!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3319 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 12:17 · PVG 20:17 · LAX 04:17 · JFK 07:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.