点击劫持漏洞复现

 人参与 | 时间:2026-10-17 07:06:29

点击劫持是点击个老掉牙的攻击手法,但直到今天,劫持它依然能在各大网站上得手。漏洞我上周测试某银行门户时,复现就成功在透明iframe里叠了一个“领取优惠券”的点击按钮,用户点下去,劫持实际触发的漏洞是转账确认。

原理简单得让人发笑——攻击者把目标网站藏进一个透明的复现iframe,再把这个iframe精准覆盖在受害者页面的点击诱饵按钮上。用户以为自己点的劫持是“播放视频”,手指落下去却按在了“删除账户”上。漏洞整个过程中,复现受害者全程清醒,点击只是劫持视觉被欺骗了。

复现步骤更是漏洞谈不上高深。我准备了一个恶意页面,里面放着一张美女图片,图片上浮着一个iframe,指向某个存在点击劫持漏洞的论坛。iframe的opacity设为0,z-index拉到最高,再用CSS把iframe的位置和诱饵按钮完全对齐。整个过程花了我不到十分钟,用的全是浏览器原生功能,没有借助任何自动化工具。

测试时我特意选了那个论坛的“一键注销”功能,按钮位置在页面右下角,浏览量最大的帖子也在这个区域。我把诱饵图片设计成“点击查看完整版视频”,放在iframe正上方。实际点击时,浏览器会先触发iframe内的元素,我的诱饵按钮根本收不到事件。

这种攻击之所以到现在还没绝迹,根源在于很多开发者默认用户只会点击自己页面上的东西。他们给iframe设置了sandbox属性,却忘了限制allow-top-navigation;他们检查了X-Frame-Options响应头,却漏掉了CSP的frame-ancestors指令。更普遍的情况是——后端团队根本不知道前端页面被嵌进了别人的站点。

我拿自己常逛的某个技术社区做实验。该社区允许用户上传自定义HTML模块,但过滤规则只拦截了