• XSS传染基础——JavaScript中的opener、iframe


    最近研究XSS,根据etherDream大神的博客 延长XSS生命周期 写了一个子页面父页面相互修改的demo。

    一、 子页面、父页面相互修改——window.opener、window.open

    在父页面修改子页面,是用到了window.open函数:

    <script>
    var target_page=window.open("parent-call.html", "");
    target_page.document.write('我被亲爹重写了!');
    </script>

    在子页面修改父页面的话,用到的是window.opener函数:

    <script>
        if(window.opener){
            window.opener.document.write('啦啦啦,我是坏蛋儿子,我把亲爹重写了')
        }
        else{
            alert('我亲爹是谁?不知道!')
        }
    </script>

    在调用window.opener.document修改父页面元素的时候,先检查了一下window.opener是否存在。这是因为子页面不一定存在opener,比如说父页面直接跳转到子页面(此时父页面已经不存在了)

    二、 iframe子页面和父页面的相互修改——window.frames、window.parent

    iframe标签在页面中是个比较神奇的存在,是存在于当前页面中的另一个页面,是两个完全不同的window。

    iframe修改父页面,调用了window.parent:

    <script type="text/javascript">
        window.parent.document.write('我是坏孩子,我修改了亲爹')
    </script>

    父页面修改iframe子页面,调用了window.frames[]:

    <script>
    window.frames['change_by_father'].contentWindow.document.write('来自父页面的修改')   //change_by_father为frame的ID
    </script>

    修改子页面的时候,需要注意的一点是iframe的document并不直接属于当前frame,而是属于contentWindow。

    三、 XSS传染

    我所理解的XSS传染是利用如上的小技巧,把恶意代码注入到用户打开的其他页面中。以小漏洞控制大场面,在钓鱼,XSS扩大攻击中会有比较突出的表现。

    本来没准备专门去写demo的,昨天晚上看的很high,不知不觉就把demo写好了- -算是以一种比较逗的语气解释了相关的知识,欢迎交流。

    另,补充(如何用JS获取整个HTML页面的内容):

    <script>
    function GetByTagName(code){
        return document.getElementsByTagName(code)[0].innerHTML
    }
    // 令人震惊的是innerHTML竟然是属性而不是方法
    </script>

    demo地址:

    http://pan.baidu.com/s/1sjoeTbR

  • 相关阅读:
    gitlab web端使用
    1、gitlab的理论知识
    git命令
    gitlab web客户端的使用
    jenkins
    jenkins pipeline
    nginx
    ELK(+Redis)-开源实时日志分析平台
    OpenStack构架知识梳理
    Linux 下的dd命令使用详解
  • 原文地址:https://www.cnblogs.com/kuoaidebb/p/4420202.html
Copyright © 2020-2023  润新知