• target="_blank" 导致的钓鱼攻击


    挺久的漏洞,之前没仔细看现在看了下

    直接构建实验环境:

    test1.html:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
        <a href="./test2.html" target="_blank">测试网站</a>
    </body>
    </html>

    test2.html:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    </head>
    <body>
        <p align="center">这是一个测试网站</p>
        <script>
            window.opener.location = "http://www.cnblogs.com/";
        </script>
    </body>
    </html>

    现在我们通过test1.html中的链接来打开test2.html

    打开之前:

    打开之后:

    我们发现test2.html中的js命令

    window.opener.location="http://www.cnblogs.com/";

    被执行了,导致原来的网站直接打开了cnblogs

    这是由于当用户点击了某个网站中带有target="_blank"属性的超链接后,浏览器会单独新建一个标签页来显示该链接所指向的内容。但是请注意,在这一瞬间,浏览器会允许新建的标签页通过一个名为"window.opener"的浏览器API来与之前的网页进行短暂通信。此时,攻击者就可以将恶意代码嵌入在新打开的网站中,然后检测用户是从哪一个网站跳转过来的,最后再利用window.opener接口来迫使原始网页打开一个新的URL地址。

    如何解决呢

    解决方案是在test1.html中

    将<a href="./test2.html" target="_blank">测试网站</a>

    改为<a href="./test2.html" target="_blank" rel="noopener noreferrer">测试网站</a>

    noreferrer是由于Firefox不支持noopener而添加的

    现在再来测试

    打开前:

    打开后:

    原网页并没有发生改变

    (技术细节摘自FreeBuf)

  • 相关阅读:
    解决ssh或ftp下root用户认证失败问题
    setsockopt IP_ADD_MEMBERSHIP error!No such device的解决方案
    嵌入式Linux软件工程师面试题一
    00.嵌入式Linux开发环境搭建
    这个是豆瓣查书的api
    CentOS7.x安装MongoDB3.2.3教程
    Linux(Centos7)yum安装最新mysql
    解决npm速度慢的问题!!!
    windows下Gulp入门详细教程
    hibernate中hql查询
  • 原文地址:https://www.cnblogs.com/wocalieshenmegui/p/5967542.html
Copyright © 2020-2023  润新知