Translated ['src/pentesting-web/clickjacking.md'] to zh

This commit is contained in:
Translator 2025-01-06 10:28:24 +00:00
parent b74c51aa4e
commit 7575366081

View File

@ -8,14 +8,14 @@
### 预填充表单技巧
有时可以在加载页面时使用 GET 参数**填充表单字段的值**。攻击者可能会利用这种行为用任意数据填充表单,并发送 clickjacking 有效载荷,以便用户按下提交按钮。
有时可以在加载页面时**使用 GET 参数填充表单字段的值**。攻击者可能会利用这种行为用任意数据填充表单,并发送 clickjacking 有效载荷,以便用户点击提交按钮。
### 使用拖放填充表单
如果你需要用户**填写表单**,但不想直接要求他写一些特定的信息(例如你知道的电子邮件或特定密码),你可以只要求他**拖放**一些东西,这样就会写入你控制的数据,如在 [**这个例子**](https://lutfumertceylan.com.tr/posts/clickjacking-acc-takeover-drag-drop/) 中所示。
### 基本有效载荷
```markup
```css
<style>
iframe {
position:relative;
@ -35,7 +35,7 @@ z-index: 1;
<iframe src="https://vulnerable.com/email?email=asd@asd.asd"></iframe>
```
### 多步骤有效载荷
```markup
```css
<style>
iframe {
position:relative;
@ -59,7 +59,7 @@ left:210px;
<iframe src="https://vulnerable.net/account"></iframe>
```
### 拖放 + 点击有效载荷
```markup
```css
<html>
<head>
<style>
@ -89,14 +89,23 @@ background: #F00;
```
### XSS + Clickjacking
如果您已识别出一个 **需要用户点击** 某个元素以 **触发** XSS **XSS 攻击**,并且该页面 **易受点击劫持**,您可以利用它来欺骗用户点击按钮/链接。\
如果您已识别出一个**需要用户点击**某个元素以**触发**XSS的**XSS攻击**,并且该页面**易受点击劫持**,您可以利用它来欺骗用户点击按钮/链接。\
示例:\
您在账户的某些私人细节中发现了 **自我 XSS**(这些细节 **只有您可以设置和读取**)。包含设置这些细节的 **表单** 的页面 **易受** **点击劫持**,您可以用 GET 参数 **预填充** **表单**。\
攻击者可以准备一个 **点击劫持** 攻击,将 **表单** **预填充** **XSS 负载**,并 **欺骗** **用户** **提交** 表单。因此,**当表单被提交** 且值被修改时,**用户将执行 XSS**。
您在账户的某些私人细节中发现了一个**自我XSS**(只有您可以设置和读取的细节)。包含设置这些细节的**表单**的页面**易受** **点击劫持**您可以用GET参数**预填充**该**表单**。\
攻击者可以准备一个**点击劫持**攻击,将该页面的**表单****预填充**为**XSS有效载荷**,并**欺骗**用户**提交**表单。因此,**当表单被提交**且值被修改时,**用户将执行XSS**。
## 减轻点击劫持的策略
### DoubleClickjacking
### 客户端防御
首先在[这篇文章中解释](https://securityaffairs.com/172572/hacking/doubleclickjacking-clickjacking-on-major-websites.html),该技术会要求受害者在特定位置的自定义页面上双击一个按钮,并利用鼠标按下和点击事件之间的时间差,在双击期间加载受害者页面,以便**受害者实际上点击了受害者页面中的合法按钮**。
一个示例可以在这个视频中看到:[https://www.youtube.com/watch?v=4rGvRRMrD18](https://www.youtube.com/watch?v=4rGvRRMrD18)
> [!WARNING]
> 该技术允许欺骗用户在受害者页面的一个地方点击,绕过所有针对点击劫持的保护。因此,攻击者需要找到**只需一次点击即可完成的敏感操作例如接受权限的OAuth提示**。
## Strategies to Mitigate Clickjacking
### Client-Side Defenses
在客户端执行的脚本可以采取措施防止点击劫持:
@ -107,15 +116,15 @@ background: #F00;
然而,这些框架破坏脚本可能会被规避:
- **浏览器的安全设置:** 一些浏览器可能会根据其安全设置或缺乏 JavaScript 支持来阻止这些脚本。
- **HTML5 iframe `sandbox` 属性:** 攻击者可以通过设置 `sandbox` 属性为 `allow-forms``allow-scripts` 值而不包含 `allow-top-navigation` 来中和框架破坏脚本。这会阻止 iframe 验证它是否是顶层窗口,例如,
- **浏览器的安全设置:** 一些浏览器可能会根据其安全设置或缺乏JavaScript支持来阻止这些脚本。
- **HTML5 iframe `sandbox` 属性:** 攻击者可以通过设置`allow-forms``allow-scripts`值而不带`allow-top-navigation``sandbox`属性来中和框架破坏脚本。这会阻止iframe验证它是否是顶层窗口,例如,
```html
<iframe
id="victim_website"
src="https://victim-website.com"
sandbox="allow-forms allow-scripts"></iframe>
```
`allow-forms``allow-scripts` 值允许在 iframe 内进行操作,同时禁用顶级导航。为了确保目标站点的预期功能,可能需要额外的权限,如 `allow-same-origin``allow-modals`,具体取决于攻击类型。浏览器控制台消息可以指导允许哪些权限。
`allow-forms``allow-scripts` 值允许在 iframe 内进行操作,同时禁用顶级导航。为了确保目标站点的预期功能,可能需要额外的权限,如 `allow-same-origin``allow-modals`,具体取决于攻击类型。浏览器控制台消息可以指导允许哪些权限。
### 服务器端防御
@ -166,9 +175,9 @@ Content-Security-Policy: child-src 'self' https://trusted-website.com;
**使用说明:**
- 弃用child-src 正在被逐步淘汰,取而代之的是 frame-src 和 worker-src
- 弃用child-src 正在逐步被 frame-src 和 worker-src 取代
- 回退行为:如果 frame-src 缺失,则使用 child-src 作为框架的回退。如果两者都缺失,则使用 default-src。
- 严格的源定义:在指令中仅包含受信任的源以防止利用。
- 严格的源定义:在指令中仅包含受信任的源以防止利用。
#### JavaScript 框架破坏脚本