# 点击劫持
从零开始学习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响应头** 通知浏览器有关在 `` 或 `