From 702ead046e545c60ef80fe833c669c79ab9fa506 Mon Sep 17 00:00:00 2001 From: Translator Date: Mon, 6 Jan 2025 23:56:22 +0000 Subject: [PATCH] Translated ['src/pentesting-cloud/aws-security/aws-privilege-escalation/ --- src/SUMMARY.md | 2 ++ .../aws-s3-privesc.md | 10 +++--- .../az-app-services-privesc.md | 10 +++--- .../az-services/az-function-apps.md | 36 +++++++++---------- 4 files changed, 30 insertions(+), 28 deletions(-) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index f14f299ff..442c03b1c 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -418,6 +418,7 @@ - [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue-enum.md) - [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus-enum.md) - [Az - SQL](pentesting-cloud/azure-security/az-services/az-sql.md) + - [Az - Static Web Applications](pentesting-cloud/azure-security/az-services/az-static-web-apps.md) - [Az - Storage Accounts & Blobs](pentesting-cloud/azure-security/az-services/az-storage.md) - [Az - Table Storage](pentesting-cloud/azure-security/az-services/az-table-storage.md) - [Az - Virtual Machines & Network](pentesting-cloud/azure-security/az-services/vms/README.md) @@ -461,6 +462,7 @@ - [Az - Queue Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-queue-privesc.md) - [Az - Service Bus Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-servicebus-privesc.md) - [Az - Virtual Machines & Network Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-virtual-machines-and-network-privesc.md) + - [Az - Static Web App Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-static-web-apps-privesc.md) - [Az - Storage Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-storage-privesc.md) - [Az - SQL Privesc](pentesting-cloud/azure-security/az-privilege-escalation/az-sql-privesc.md) - [Az - Persistence](pentesting-cloud/azure-security/az-persistence/README.md) diff --git a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md index d334c1494..989eae77a 100644 --- a/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md +++ b/src/pentesting-cloud/aws-security/aws-privilege-escalation/aws-s3-privesc.md @@ -34,7 +34,7 @@ ] } ``` -劫持是可能的,因为从**模板上传**到存储桶的那一刻到**模板部署**的那一刻之间有一个**小的时间窗口**。攻击者可能只需在他的账户中创建一个**lambda function**,当发送存储桶通知时将**触发**,并**劫持**该**存储桶**的**内容**。 +劫持是可能的,因为从**模板上传**到存储桶的那一刻到**模板部署**的那一刻之间有一个**小的时间窗口**。攻击者可能只需在他的账户中创建一个**lambda function**,当**存储桶通知被发送**时触发,并**劫持**该**存储桶**的**内容**。 ![](<../../../images/image (174).png>) @@ -50,10 +50,10 @@ Pacu模块 [`cfn__resouce_injection`](https://github.com/RhinoSecurityLabs/pacu/ - 如果 EC2 实例将**用户数据存储在 S3 存储桶**中,攻击者可以修改它以**在 EC2 实例内执行任意代码**。 -### `s3:PutObject`, `s3:GetObject`(可选)通过 terraform 状态文件 +### `s3:PutObject`, `s3:GetObject`(可选)在 terraform 状态文件上 很常见的是,[terraform](https://cloud.hacktricks.wiki/en/pentesting-ci-cd/terraform-security.html) 状态文件被保存到云提供商的 blob 存储中,例如 AWS S3。状态文件的文件后缀为 `.tfstate`,而存储桶名称通常也会透露它们包含 terraform 状态文件。通常,每个 AWS 账户都有一个这样的存储桶来存储显示账户状态的状态文件。\ -此外,通常在现实世界的账户中,几乎所有开发人员都有 `s3:*`,有时甚至商业用户也有 `s3:Put*`。 +此外,通常在现实世界的账户中,几乎所有开发人员都有 `s3:*`,有时甚至业务用户也有 `s3:Put*`。 因此,如果您对这些文件具有列出的权限,则存在一个攻击向量,允许您以 `terraform` 的权限获得 RCE - 大多数情况下是 `AdministratorAccess`,使您成为云账户的管理员。此外,您可以利用该向量通过使 `terraform` 删除合法资源来进行拒绝服务攻击。 @@ -65,7 +65,7 @@ pentesting-ci-cd/terraform-security.md#abusing-terraform-state-files ### `s3:PutBucketPolicy` -攻击者需要**来自同一账户**,否则将触发错误`The specified method is not allowed`,具有此权限将能够授予自己对存储桶的更多权限,允许他读取、写入、修改、删除和暴露存储桶。 +攻击者需要**来自同一账户**,否则会触发错误`The specified method is not allowed`,具有此权限将能够授予自己对存储桶的更多权限,使其能够读取、写入、修改、删除和暴露存储桶。 ```bash # Update Bucket policy aws s3api put-bucket-policy --policy file:///root/policy.json --bucket @@ -123,7 +123,7 @@ aws s3api put-bucket-policy --policy file:///root/policy.json --bucket --resource-group } ] ``` -注意**用户名始终相同**(除了FTP,它在开头添加了应用程序的名称),但**密码对所有人都是相同的**。 +注意 **用户名始终相同**(除了 FTP,它在开头添加了应用程序的名称),但 **密码对所有人都是相同的**。 此外,**SCM URL 是 `.scm.azurewebsites.net`**。 @@ -126,7 +126,7 @@ az webapp deployment user set \ ``` 然后,您可以使用这些凭据来**访问SCM和FTP平台**。这也是保持持久性的好方法。 -请记住,要从**网络访问SCM平台,您需要访问`/BasicAuth`**。 +请记住,要从**网页访问SCM平台,您需要访问`/BasicAuth`**。 > [!WARNING] > 请注意,每个用户都可以通过调用之前的命令来配置自己的凭据,但如果用户没有足够的权限访问SCM或FTP,则凭据将无效。 @@ -155,7 +155,7 @@ az rest --method PUT \ 仅凭有效的 SCM 凭据,就可以 **发布代码** 到应用服务。这可以通过以下命令完成。 -对于这个 Python 示例,您可以从 https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart 下载仓库,进行您希望的 **更改**,然后 **运行:`zip -r app.zip .`** 进行压缩。 +对于这个 Python 示例,您可以从 https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart 下载仓库,进行您想要的 **更改**,然后 **运行:`zip -r app.zip .`** 进行压缩。 然后,您可以使用以下命令在 Web 应用中 **发布代码**: ```bash @@ -175,7 +175,7 @@ az rest --method GET --url "https://lol-b5fyaeceh4e9dce0.scm.canadacentral-01.az curl "/vfs/data/jobs/continuous/job_name/job_log.txt" \ --user ':' -v ``` -- 阅读 **Webjobs** 源代码: +- 阅读 **Webjobs** 源代码: ```bash # Using SCM username and password: # Find all the webjobs inside: @@ -225,7 +225,7 @@ az rest --method GET \ ``` 此命令返回 Github、Bitbucket、Dropbox 和 OneDrive 的令牌。 -在这里有一些命令示例来检查令牌: +以下是一些检查令牌的命令示例: ```bash # GitHub – List Repositories curl -H "Authorization: token " \ diff --git a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md index 80d5d9b95..4ff278381 100644 --- a/src/pentesting-cloud/azure-security/az-services/az-function-apps.md +++ b/src/pentesting-cloud/azure-security/az-services/az-function-apps.md @@ -4,10 +4,10 @@ ## 基本信息 -**Azure Function Apps** 是一种 **无服务器计算服务**,允许您运行称为 **函数** 的小段代码,而无需管理底层基础设施。它们旨在响应各种触发器执行代码,例如 **HTTP 请求、定时器或来自其他 Azure 服务**(如 Blob 存储或事件中心)的事件。Function Apps 支持多种编程语言,包括 C#、Python、JavaScript 和 Java,使其在构建 **事件驱动应用程序**、自动化工作流或集成服务方面具有多功能性。它们具有成本效益,因为您通常只需为代码运行时使用的计算时间付费。 +**Azure Function Apps** 是一种 **无服务器计算服务**,允许您运行小段代码,称为 **函数**,而无需管理底层基础设施。它们旨在响应各种触发器执行代码,例如 **HTTP 请求、定时器或来自其他 Azure 服务的事件**,如 Blob 存储或事件中心。Function Apps 支持多种编程语言,包括 C#、Python、JavaScript 和 Java,使其在构建 **事件驱动应用程序**、自动化工作流或集成服务方面具有多功能性。它们具有成本效益,因为您通常只需为代码运行时使用的计算时间付费。 > [!NOTE] -> 请注意,**Functions 是 App Services 的一个子集**,因此,这里讨论的许多功能也将被作为 Azure Apps(在 cli 中为 `webapp`)创建的应用程序使用。 +> 请注意,**Functions 是 App Services 的一个子集**,因此,这里讨论的许多功能也将被作为 Azure Apps 创建的应用程序使用(在 cli 中为 `webapp`)。 ### 不同计划 @@ -19,9 +19,9 @@ ### **存储桶** -在创建一个未容器化的新 Function App 时(但提供要运行的代码),**代码和其他与函数相关的数据将存储在存储帐户中**。默认情况下,Web 控制台将为每个函数创建一个新的存储桶以存储代码。 +在创建一个新的非容器化的 Function App 时(但提供要运行的代码),**代码和其他与函数相关的数据将存储在存储帐户中**。默认情况下,Web 控制台将为每个函数创建一个新的存储桶以存储代码。 -此外,修改存储桶中的代码(以不同格式存储时),**应用的代码将被修改为新的代码,并在下次调用函数时执行**。 +此外,修改存储桶中的代码(以不同格式存储),**应用的代码将被修改为新的代码,并在下次调用函数时执行**。 > [!CAUTION] > 从攻击者的角度来看,这非常有趣,因为 **对该存储桶的写入访问** 将允许攻击者 **破坏代码并提升权限** 到 Function App 内的托管身份。 @@ -40,13 +40,13 @@ - 还可以 **授予或限制** 从 **内部网络 (VPC)** 访问 Function App。 > [!CAUTION] -> 从攻击者的角度来看,这非常有趣,因为可能可以从暴露于互联网的脆弱函数 **转移到内部网络**。 +> 从攻击者的角度来看,这非常有趣,因为可能可以从暴露在互联网上的脆弱函数 **转移到内部网络**。 ### **Function App 设置和环境变量** -可以在应用内部配置环境变量,这些变量可能包含敏感信息。此外,默认情况下会创建环境变量 **`AzureWebJobsStorage`** 和 **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**(以及其他变量)。这些变量特别有趣,因为它们 **包含控制存储帐户的帐户密钥,具有完全权限**,该存储帐户包含应用程序的数据。这些设置在从存储帐户执行代码时也很重要。 +可以在应用内部配置环境变量,这些变量可能包含敏感信息。此外,默认情况下会创建环境变量 **`AzureWebJobsStorage`** 和 **`WEBSITE_CONTENTAZUREFILECONNECTIONSTRING`**(以及其他变量)。这些变量特别有趣,因为它们 **包含控制存储帐户的帐户密钥,具有完全权限**,该存储帐户包含应用程序的数据。这些设置在从存储帐户执行代码时也是必需的。 -这些环境变量或配置参数还控制函数如何执行代码,例如如果存在 **`WEBSITE_RUN_FROM_PACKAGE`**,则会指示应用程序代码所在的 URL。 +这些环境变量或配置参数还控制函数如何执行代码,例如,如果存在 **`WEBSITE_RUN_FROM_PACKAGE`**,则会指示应用程序代码所在的 URL。 ### **Function 沙箱** @@ -61,9 +61,9 @@ **系统分配** 的身份将是一个托管身份,**只有分配了该身份的函数** 可以使用,而 **用户分配** 的托管身份是 **任何其他 Azure 服务都可以使用的托管身份**。 > [!NOTE] -> 与 [**VMs**](vms/index.html) 一样,Functions 可以具有 **1 个系统分配** 的托管身份和 **多个用户分配** 的托管身份,因此如果您破坏了该函数,始终重要的是尝试找到所有托管身份,因为您可能能够从一个函数提升到多个托管身份。 +> 与 [**VMs**](vms/index.html) 一样,Functions 可以具有 **1 个系统分配** 的托管身份和 **多个用户分配** 的托管身份,因此,如果您破坏了该函数,始终重要的是尝试找到所有托管身份,因为您可能能够从一个函数提升到多个托管身份。 > -> 如果未使用系统托管身份,但一个或多个用户托管身份附加到函数,则默认情况下您将无法获取任何令牌。 +> 如果未使用系统托管身份,但一个或多个用户托管身份附加到函数,默认情况下您将无法获取任何令牌。 可以使用 [**PEASS 脚本**](https://github.com/peass-ng/PEASS-ng) 从元数据端点获取默认托管身份的令牌。或者您可以 **手动** 获取,如下所述: @@ -74,9 +74,9 @@ ## 访问密钥 > [!NOTE] -> 请注意,没有 RBAC 权限可以授予用户调用函数的访问权限。**函数调用取决于创建时选择的触发器**,如果选择了 HTTP 触发器,则可能需要使用 **访问密钥**。 +> 请注意,没有 RBAC 权限可以授予用户调用函数的访问权限。**函数调用取决于创建时选择的触发器**,如果选择了 HTTP 触发器,可能需要使用 **访问密钥**。 -在使用 **HTTP 触发器** 创建函数内部的端点时,可以指明触发函数所需的 **访问密钥授权级别**。提供三种选项: +在使用 **HTTP 触发器** 的函数内部创建端点时,可以指明触发函数所需的 **访问密钥授权级别**。提供三种选项: - **ANONYMOUS**:**每个人**都可以通过 URL 访问该函数。 - **FUNCTION**:端点仅对使用 **函数、主机或主密钥** 的用户可访问。 @@ -86,8 +86,8 @@ - **函数密钥**:函数密钥可以是默认的或用户定义的,旨在仅授予对 Function App 中 **特定函数端点** 的访问权限,从而允许对端点进行更细粒度的访问。 - **主机密钥**:主机密钥也可以是默认的或用户定义的,提供对 Function App 中 **所有函数端点的访问,具有 FUNCTION 访问级别**。 -- **主密钥**:主密钥 (`_master`) 作为管理密钥,提供提升的权限,包括访问所有函数端点(包括 ADMIN 访问级别)。此 **密钥无法被撤销**。 -- **系统密钥**:系统密钥由 **特定扩展管理**,并且在访问内部组件使用的 webhook 端点时是必需的。示例包括事件网格触发器和可持久化函数,它们利用系统密钥与各自的 API 安全交互。 +- **主密钥**:主密钥(`_master`)作为管理密钥,提供提升的权限,包括访问所有函数端点(包括 ADMIN 访问级别)。此 **密钥无法被撤销**。 +- **系统密钥**:系统密钥由 **特定扩展管理**,并且在访问内部组件使用的 webhook 端点时是必需的。示例包括事件网格触发器和可耐久函数,它们利用系统密钥与各自的 API 安全交互。 > [!TIP] > 使用密钥访问函数 API 端点的示例: @@ -96,7 +96,7 @@ ### 基本身份验证 -与应用服务一样,Functions 也支持基本身份验证,以通过 **用户名和密码在 URL 中** 连接到 **SCM** 和 **FTP** 部署代码。有关更多信息,请参见: +与应用服务一样,Functions 也支持基本身份验证,以通过 **SCM** 和 **FTP** 连接以使用 **Azure 提供的 URL 中的用户名和密码** 部署代码。有关更多信息,请参见: {{#ref}} az-app-services.md @@ -104,7 +104,7 @@ az-app-services.md ### 基于 Github 的部署 -当函数从 Github 仓库生成时,Azure Web 控制台允许在特定仓库中 **自动创建 Github 工作流**,因此每当该仓库更新时,函数的代码也会更新。实际上,Python 函数的 Github Action yaml 如下所示: +当函数从 Github 仓库生成时,Azure Web 控制台允许 **在特定仓库中自动创建 Github 工作流**,因此每当该仓库更新时,函数的代码也会更新。实际上,Python 函数的 Github Action yaml 看起来是这样的:
@@ -192,16 +192,16 @@ package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} ```
-此外,**托管身份**也会被创建,以便来自仓库的Github Action能够使用它登录到Azure。这是通过在**托管身份**上生成一个联邦凭证来完成的,允许**发行者** `https://token.actions.githubusercontent.com` 和**主题标识符** `repo:/:ref:refs/heads/`。 +此外,**托管身份**也会被创建,以便来自仓库的Github Action能够使用它登录到Azure。这是通过在**托管身份**上生成一个联合凭证来完成的,允许**发行者** `https://token.actions.githubusercontent.com` 和**主题标识符** `repo:/:ref:refs/heads/`。 > [!CAUTION] -> 因此,任何妥协该仓库的人都将能够妥协该功能及其附加的托管身份。 +> 因此,任何妥协该仓库的人都将能够妥协该函数及其附加的托管身份。 ### 基于容器的部署 并非所有计划都允许部署容器,但对于允许的计划,配置将包含容器的URL。在API中,**`linuxFxVersion`** 设置将类似于: `DOCKER|mcr.microsoft.com/...`,而在Web控制台中,配置将显示**镜像设置**。 -此外,**不会在与该功能相关的存储**帐户中存储源代码,因为这不是必需的。 +此外,**不会在与该函数相关的存储**帐户中存储源代码,因为这不是必需的。 ## 枚举 ```bash