Clickjacking
Last updated
Last updated
学习和实践 AWS 黑客技术:HackTricks 培训 AWS 红队专家 (ARTE) 学习和实践 GCP 黑客技术:HackTricks 培训 GCP 红队专家 (GRTE)
使用 Trickest 轻松构建和 自动化工作流程,由世界上 最先进 的社区工具提供支持。 今天就获取访问权限:
在 clickjacking 攻击中,用户被 欺骗 点击网页上的一个 元素,该元素要么是 不可见 的,要么伪装成其他元素。这种操控可能导致用户意想不到的后果,例如下载恶意软件、重定向到恶意网页、提供凭据或敏感信息、资金转移或在线购买产品。
有时可以在加载页面时使用 GET 参数 填充表单字段的值。攻击者可能会利用这种行为用任意数据填充表单并发送 clickjacking 有效载荷,以便用户点击提交按钮。
如果您需要用户 填写表单,但不想直接要求他写一些特定信息(例如您知道的电子邮件或特定密码),您可以只要求他 拖放 一些将写入您控制数据的内容,如 这个例子 中所示。
如果您已识别出一个需要用户点击某个元素以触发XSS的XSS攻击,并且该页面易受点击劫持,您可以利用它来欺骗用户点击按钮/链接。 示例: 您在账户的某些私人信息中发现了一个自我XSS(这些信息只有您可以设置和读取)。包含设置这些信息的表单的页面易受 点击劫持,您可以用GET参数预填充该表单。 __攻击者可以准备一个点击劫持攻击,通过预填充该页面的表单与XSS有效载荷,并欺骗****用户提交该表单。因此,当表单被提交且值被修改时,用户将执行XSS。
在客户端执行的脚本可以采取措施来防止点击劫持:
确保应用程序窗口是主窗口或顶部窗口。
使所有框架可见。
防止对不可见框架的点击。
检测并警告用户潜在的点击劫持尝试。
然而,这些框架破坏脚本可能会被规避:
浏览器的安全设置: 一些浏览器可能会根据其安全设置或缺乏JavaScript支持来阻止这些脚本。
HTML5 iframe sandbox
属性: 攻击者可以通过设置sandbox
属性为allow-forms
或allow-scripts
值而不包含allow-top-navigation
来中和框架破坏脚本。这会阻止iframe验证它是否是顶层窗口,例如,
The allow-forms
和 allow-scripts
值在禁用顶级导航的同时启用 iframe 内的操作。为了确保目标站点的预期功能,可能需要额外的权限,如 allow-same-origin
和 allow-modals
,具体取决于攻击类型。浏览器控制台消息可以指导允许哪些权限。
X-Frame-Options
HTTP 响应头 通知浏览器关于在 <frame>
或 <iframe>
中渲染页面的合法性,有助于防止 Clickjacking:
X-Frame-Options: deny
- 没有域可以框架内容。
X-Frame-Options: sameorigin
- 只有当前站点可以框架内容。
X-Frame-Options: allow-from https://trusted.com
- 只有指定的 'uri' 可以框架页面。
注意限制:如果浏览器不支持此指令,可能无法工作。一些浏览器更倾向于 CSP frame-ancestors 指令。
CSP 中的 frame-ancestors
指令 是防止 Clickjacking 的建议方法:
frame-ancestors 'none'
- 类似于 X-Frame-Options: deny
。
frame-ancestors 'self'
- 类似于 X-Frame-Options: sameorigin
。
frame-ancestors trusted.com
- 类似于 X-Frame-Options: allow-from
。
例如,以下 CSP 仅允许来自同一域的框架:
Content-Security-Policy: frame-ancestors 'self';
更多详细信息和复杂示例可以在 frame-ancestors CSP 文档 和 Mozilla 的 CSP frame-ancestors 文档 中找到。
child-src
和 frame-src
内容安全策略 (CSP) 是一种安全措施,通过指定浏览器应允许加载内容的来源,帮助防止 Clickjacking 和其他代码注入攻击。
frame-src
指令定义框架的有效来源。
比 default-src
指令更具体。
此策略允许来自相同源(self)和 https://trusted-website.com 的框架。
child-src
指令在 CSP 级别 2 中引入,用于设置 web workers 和框架的有效来源。
作为 frame-src 和 worker-src 的后备。
此策略允许来自相同来源(self)和 https://trusted-website.com 的框架和工作者。
使用说明:
废弃:child-src 正在逐步被 frame-src 和 worker-src 取代。
回退行为:如果 frame-src 缺失,则使用 child-src 作为框架的回退。如果两者都缺失,则使用 default-src。
严格的源定义:在指令中仅包含受信任的源以防止利用。
尽管并非完全可靠,但基于 JavaScript 的框架破坏脚本可以用于防止网页被框架化。示例:
令牌验证: 在Web应用程序中使用反-CSRF令牌,以确保状态更改请求是用户有意发出的,而不是通过Clickjacked页面发出的。
使用 Trickest 轻松构建和 自动化工作流程,由世界上 最先进 的社区工具提供支持。 立即获取访问权限:
学习和实践AWS黑客攻击:HackTricks培训AWS红队专家(ARTE) 学习和实践GCP黑客攻击: HackTricks培训GCP红队专家(GRTE)