打破坚韧的FRAME杀手

时间:2012-02-19 13:35:21

标签: javascript iframe frame penetration-testing clickjacking

我一直试图将此事打破几个小时,但没有成功......我现在非常绝望:(

我正在为一家公司进行渗透测试,我需要绕过这个框架杀手JS:

<script type="text/javascript">/* <![CDATA[ */
if (top != self) {
    try {
        if (parent != top) {
            throw 1;
        }
        var disallowed = ['XXXXXXX.com'];
        var href = top.location.href.toLowerCase();
        for (var i = 0; i < disallowed.length; i++) {
            if (href.indexOf(disallowed[i]) >= 0) {
                throw 1;
            }
        }
    } catch (e) {
        try {
            window.document.getElementsByTagName('head')[0].innerHTML = '';
        } catch (e) { /* IE */
            var htmlEl = document.getElementsByTagName('html')[0];
            htmlEl.removeChild(document.getElementsByTagName('head')[0]);
            var el = document.createElement('head');
            htmlEl.appendChild(el);
        }
        window.document.body.innerHTML = '<a href="#" onclick="top.location.href=window.location.href" style="text-decoration:none;"><img src="http://www.XXXXXXX.com/img/XXXXXX.gif" style="border:0px;" /><br />Go to XXXXXXX.com</a>';
    }
}

/* ]]> */</script>

非常感谢!

1 个答案:

答案 0 :(得分:1)

使用以下其中一项:

  

如果body元素的节点文档的浏览上下文是嵌套浏览上下文,并且该嵌套浏览上下文的浏览上下文容器是frame或iframe元素,则body元素的容器框架元素是该frame或iframe元素。否则,没有容器框架元素。

     

上述要求意味着页面可以使用例如iframe更改另一页面的边距(包括另一页面的边距)。这可能存在安全风险,因为在某些情况下,它可能允许攻击设计页面呈现的情况不是作者的意图,可能是出于网络钓鱼或误导用户的目的。

<强>参考