点击劫持概述
目录介绍构建基础攻击预填表单输入的攻击Frame Busting 脚本与绕过点击劫持与DOM XSS攻击结合多步点击劫持防御介绍点击劫持是一种基于界面的攻击手段。攻击者通过诱导用户点击虚假网站上的内容从而欺骗用户触发另一个隐藏网站上的功能。例用户访问了一个虚假网站可能来自邮件链接并点击了一个“领取奖品”的按钮。然而用户在不知情的情况下实际上被诱导点击了一个隐藏的替代按钮导致在另一个网站上完成了账户付款。这种技术依赖于在页面中嵌入一个不可见但可操作的网页通常使用iframe标签。这个 iframe 被叠加在用户能看到的虚假网页内容之上。其不同于CSRF点击劫持需要用户执行某个具体操作如点击按钮而 CSRF 则是在用户完全不知情或没有交互的情况下伪造并发送整个请求。维度说明攻击本质视觉欺骗。用户看到的Decoy UI和实际点击的Target UI不是同一个东西。核心手段利用iframe将透明的恶意页面覆盖在正常页面之上。用户行为必须由用户主动点击才能触发。防御思路防止网页被非法嵌套如使用X-Frame-Options响应头或 CSP 指令。构建基础攻击点击劫持攻击使用 CSS 来创建和作图层。head style /* 隐藏的目标网站层 */ #target_website { position: relative; width: 128px; height: 128px; opacity: 0.00001; /* 隐形但可点击 */ z-index: 2; /* 置于可见层的上面一层 */ } /* 可见的诱饵内容层 */ #decoy_website { position: absolute; width: 300px; height: 400px; z-index: 1; /* 位于底层 */ } /style /head body div iddecoy_website ...这里放置诱饵内容比如“点击领取 iPhone”... /div iframe idtarget_website srchttps://vulnerable-website.com /iframe /body精确对齐。攻击者不仅要让两个页面重叠还要确保目标网站的关键按钮如“确认支付”与诱饵页面的虚假按钮如“领取奖品”在坐标上完美契合。响应式布局对齐通过使用 CSS 的absolute绝对定位和relative相对定位属性攻击者可以确保无论用户使用什么屏幕尺寸、浏览器类型或操作系统目标 iframe 都能精准地覆盖在诱饵内容之上。坐标计算攻击者会精确计算width宽度、height高度以及top/left偏移量。视觉伪装。将透明度设为 0 或接近 0如0.00001使目标 iframe 对用户完全不可见。堆叠顺序。目标 iframe 的z-index会被设得比诱饵页面高确保用户的点击动作首先被顶层的隐藏 iframe 捕获。现代浏览器都有针对的防御例如阈值检测某些浏览器如Chrome 76具有“透明 iframe 检测”机制。如果一个 iframe 的透明度低于某个特定阈值且用户尝试点击浏览器可能会拦截该操作或发出警告。手动编写 CSS 和 HTML 来对齐iframe太过繁琐可以利用 bp 提供的 Clickbandit 工具。对应实验通过手动创建诱导界面和隐藏界面诱导用户点击“删除账户”从而实现攻击。预填表单输入的攻击某些网站在要求用户完成并提交表单时允许在提交前通过GET 参数预先填充表单输入项。在基础点击劫持中攻击者只能诱导用户点击一个现有的按钮。但在“预填表单”攻击中攻击者实现了对数据流的控制。1.寻找切入点。寻找那些通过 URL 接收数据的表单。普通 URLhttps://vulnerable-website.com/transfer-money含预填参数的 URLhttps://vulnerable-website.com/transfer-money?toattacker_accountamount10002.构造恶意iframe。攻击者将上述包含恶意参数的 URL 嵌入到透明的iframe中。此时受害者访问诱饵页面时后台加载的目标网页表单已经自动填好了收款人黑客金额1000元3.诱导提交攻击者在诱饵页面上设置一个诱人的按钮如“领取您的免费咖啡”其位置精准覆盖在隐藏表单的“确认提交”按钮之上。用户点击后浏览器实际执行在vulnerable-website.com上提交了一份已经填好恶意数据的表单。Frame Busting 脚本与绕过网站开发者意识到页面可能被劫持于是写了一段 JavaScript 放在网页里。其通常会执行以下部分或全部行为检查并强制当前应用窗口为“主窗口”或“顶层窗口”Top Window。强制使所有框架可见消除透明度伪装。防止点击不可见的框架。拦截潜在的点击劫持攻击并向用户发出警报。攻击者绕过HTML5 的sandbox属性是浏览器原生支持的优先级高于页面内的脚本。攻击者在诱饵页面的iframe标签里加上sandboxallow-forms但不给allow-top-navigation权限。由于没有allow-top-navigation权限网站自带的 Frame Busting 脚本想执行“强制跳转自救”时会被浏览器拦截并报错。由于设置了allow-forms用户在透明层点击“提交”的操作依然能成功发给服务器。点击劫持与DOM XSS攻击结合通常情况下DOM XSS 需要诱导用户点击一个长得很可疑的链接。而点击劫持完美解决了伪装问题传统 XSS用户可能会对https://victim.com/#alert(1)产生警觉。组合攻击用户看到的只是一个干净的诱饵网页如“点击观看最新电影”但他们点击的瞬间隐藏在透明 iframe 里的 XSS 载荷Payload就被激活了。style iframe { position:relative; width:500px; height:700px; opacity: 0.001; z-index: 2; } div { position:absolute; top:610; left:80; z-index: 1; } /style divclick me/div iframe srchttps://0aac009c03d9d2ea8605bc65008f0090.web-security-academy.net/feedback?nameimg src1 οnerrοrprint()emailhackerattacker-website.comsubjecttestmessagetest#feedbackResult/iframe #其中的print()就是实现的攻击在实际应用中可以改成别的操作多步点击劫持Multistep Clickjacking在基础攻击中攻击者只需要对齐一个按钮。但在多步攻击中攻击者需要引导用户完成一个“流程”。分层引导诱饵页面可能会设计成一个小游戏或多步问卷。动态位置调整攻击者可能会使用 JavaScript 动态改变iframe的位置或者在用户完成第一次点击后自动切换显示的div层确保每一步的诱饵按钮都精准覆盖在目标站点的下一个操作点上。style iframe { position:relative; width:500px; height: 700px; opacity: 0.001; z-index: 2; } .firstClick, .secondClick { position:absolute; top:500px; left:50px; z-index: 1; } .secondClick { top:295px; left:225px; } /style #底层诱饵层 两个 divfirstClick 和 secondClick分别被赋予了不同的位置参数 div classfirstClickclick me first/div div classsecondClickclick me next/div iframe srchttps://0a8c00f804e35e7f80b8d56700af00c6.web-security-academy.net/my-account/iframe #位于顶层的真实页面透明防御客户端的脚本防御Frame Busting非常脆弱因此真正的防御必须由服务器驱动通过向浏览器发出明确的指令限制网页被嵌套的方式。X-Frame-Options (XFO)这是最早出现的、专门针对点击劫持的 HTTP 响应头。虽然它比较老但在现代浏览器中依然得到广泛支持。它有三个可选值DENY最严厉的指令。完全禁止任何网页包括同源的页面将此页面嵌套在iframe中。SAMEORIGIN允许同源同一个域名、协议和端口的页面嵌套此页面。这在需要实现站内功能嵌套时非常有用。ALLOW-FROM uri只允许特定的来源嵌套。注现代浏览器对其支持有限不建议在新项目中使用应优先考虑 CSP。Content Security Policy (CSP) —— 现代防御首选CSP 是一种功能极其强大的安全框架其中的frame-ancestors指令是目前防御点击劫持的行业标准。相比 XFOCSP 更加灵活且难以绕过frame-ancestors none等同于X-Frame-Options: DENY。frame-ancestors self等同于X-Frame-Options: SAMEORIGIN。frame-ancestors https://trusted-site.com允许指定的受信任域名嵌套此页面。辅助防御手段SameSite Cookie 策略虽然它不直接阻止iframe嵌套但SameSite属性可以防止浏览器在跨站嵌套时发送 Cookie。如果设置Set-Cookie: sessionxyz; SameSiteLax或Strict当你的网站被嵌套在攻击者的诱饵网站中时浏览器不会发送登录凭证。结果即使攻击者成功劫持了点击由于没有 Cookie用户在隐藏页面里处于“未登录”状态敏感操作如转账也就无法执行。

相关新闻

Kubernetes安全防护指南:如何(更好地)保护您的集群

Kubernetes安全防护指南:如何(更好地)保护您的集群

集群安全形势日益严峻随着Kubernetes在企业软件开发领域的广泛应用,网络犯罪分子正越来越多地使用专门开发的漏洞利用工具攻击相关部署。威胁行为者如今更擅长隐藏恶意软件、绕过(基础)安全控制措施,并通过横向移动在网络中制造更…

2026/7/3 10:27:21 阅读更多 →
需求低保真原型

需求低保真原型

低保真原型 低保真原型使用利益相关者熟悉的介质,有助于他们将注意力集中在主题事务上。诸如铅笔和纸、白板、活动挂图、即时贴、索引卡片、纸板箱等东西,都可以用来创建有效的低保真原型。实际上,可以用利益相关者日常生活中的任何物品&…

2026/7/5 12:07:56 阅读更多 →
软考高项:第18章:项目绩效域(占分分析/考点/题)

软考高项:第18章:项目绩效域(占分分析/考点/题)

项目管理中的八大绩效域,它们被视为一个相互依赖的统一整体,不仅是现代项目管理知识体系的核心,更是相关认证考试中案例分析与论文写作的关键考纲框架。文中详细阐述了如何通过情商与内在激励优化团队绩效,并提出了发散与汇聚决策…

2026/7/3 13:54:06 阅读更多 →

最新新闻

从3D雕塑到方块宇宙:ObjToSchematic如何重塑数字创意的边界

从3D雕塑到方块宇宙:ObjToSchematic如何重塑数字创意的边界

从3D雕塑到方块宇宙:ObjToSchematic如何重塑数字创意的边界 【免费下载链接】ObjToSchematic A tool to convert 3D models into Minecraft formats such as .schematic, .litematic, .schem and .nbt 项目地址: https://gitcode.com/gh_mirrors/ob/ObjToSchemati…

2026/7/6 11:34:03 阅读更多 →
锂离子电池过压保护与STM32L031C6系统设计

锂离子电池过压保护与STM32L031C6系统设计

1. 锂离子电池过压保护的必要性与BQ29200特性解析 两节串联锂离子电池组在充电过程中,由于电芯个体差异、充电器故障或均衡电路失效等原因,可能出现单节电池电压超过安全阈值的情况。当电压超过4.35V时,电解液会开始分解产生气体,…

2026/7/6 11:34:03 阅读更多 →
HS工具箱深度评测:一站式在线工具平台如何提升开发与办公效率

HS工具箱深度评测:一站式在线工具平台如何提升开发与办公效率

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 你是不是也遇到过这样的场景:开发时突然需要把图片转成Base64编码,临时去搜在线工具,结果要么广告…

2026/7/6 11:29:59 阅读更多 →
数字图像处理 2.6 节:图像采样量化实战,Python 实现 8-bit 灰度图转换与伪轮廓分析

数字图像处理 2.6 节:图像采样量化实战,Python 实现 8-bit 灰度图转换与伪轮廓分析

数字图像处理实战:Python实现8-bit灰度图转换与伪轮廓分析当一张风景照片在显示器上呈现出明显的阶梯状色块时,我们看到的正是数字图像处理中典型的"伪轮廓"现象。这种现象源于图像量化过程中的信息损失,而理解其背后的原理对于从事…

2026/7/6 11:27:57 阅读更多 →
STM32L152RE与TPAFE0808构建多通道信号采集系统

STM32L152RE与TPAFE0808构建多通道信号采集系统

1. 项目背景与核心需求在工业自动化、医疗设备和科研仪器等领域,多通道信号采集与系统监测是常见需求。TPAFE0808作为8通道模拟前端芯片,配合STM32L152RE低功耗MCU,能够构建高效的多通道信号控制系统。这种组合特别适合需要同时监测多个传感器…

2026/7/6 11:25:53 阅读更多 →
4万星和5.7万星的两个框架,我焊在一起后它们封神了

4万星和5.7万星的两个框架,我焊在一起后它们封神了

第一个,AI 在「要构建什么」还没想清楚的时候就开始写代码。你跟它讨论需求,聊了三轮,它突然来一句「我来帮你实现吧」,然后一顿输出,写完一看,方向跑偏了。代码能跑,但不是你想要的。删了重来&…

2026/7/6 11:25:53 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻