# 点击劫持
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家) 支持HackTricks的其他方式: * 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com) * 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品 * **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注**我们的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** * 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
\ 使用[**Trickest**](https://trickest.com/?utm\_campaign=hacktrics\&utm\_medium=banner\&utm\_source=hacktricks)可以轻松构建和**自动化工作流程**,利用世界上**最先进**的社区工具。\ 立即获取访问权限: {% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %} ## 什么是点击劫持 在点击劫持攻击中,**用户**被**欺骗**点击网页上的一个**不可见**或伪装成不同元素的**元素**。这种操纵可能会对用户造成意外后果,如下载恶意软件、重定向到恶意网页、提供凭据或敏感信息、转账、在线购买产品等。 ### 预填表单技巧 有时可以在加载页面时使用GET参数**填充表单字段的值**。攻击者可能会滥用这种行为,填充表单的任意数据并发送点击劫持有效负载,以便用户按下提交按钮。 ### 使用拖放填充表单 如果您需要用户**填写表单**,但又不想直接要求他输入某些特定信息(如您知道的电子邮件或特定密码),您可以要求他**拖放**某些内容,以便写入您控制的数据,就像[**这个示例**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/)中的情况。 ### 基本有效负载 ```markup
Click me
``` ### 多步骤有效载荷 ```markup
Click me first
Click me next
``` ### 拖放 + 点击有效载荷 ```markup
.
1. Click and press delete button
3.Click me

2.DRAG ME TO THE RED BOX

``` ### XSS + Clickjacking 如果您已经确定了一个需要用户点击某个元素来触发 XSS 攻击的情况,并且页面容易受到点击劫持攻击,您可以利用这一点来欺骗用户点击按钮/链接。\ 示例:\ _您发现了账户私人详细信息中的自身 XSS(只有您可以设置和读取的详细信息)。用于设置这些详细信息的页面容易受到点击劫持攻击,您可以使用 GET 参数预填充表单。_\ \_\_攻击者可以准备一个点击劫持攻击到该页面,使用 XSS 负载预填充表单,并欺骗用户提交表单。因此,当表单提交时,数值被修改,用户将执行 XSS。 ## 减轻点击劫持的策略 ### 客户端防御 在客户端执行的脚本可以执行操作以防止点击劫持: * 确保应用窗口是主窗口或顶层窗口。 * 使所有框架可见。 * 防止在不可见框架上点击。 * 检测并警告用户可能的点击劫持尝试。 然而,这些破坏框架的脚本可能会被规避: * **浏览器的安全设置:** 一些浏览器可能会根据其安全设置或缺乏 JavaScript 支持来阻止这些脚本。 * **HTML5 iframe `sandbox` 属性:** 攻击者可以通过设置 `sandbox` 属性为 `allow-forms` 或 `allow-scripts` 而不包括 `allow-top-navigation` 值来中和破坏框架脚本。这会阻止 iframe 验证是否为顶层窗口,例如, ```html ``` ### 服务器端防御 #### X-Frame-Options **`X-Frame-Options` HTTP响应头** 通知浏览器有关在 `` 或 `