Translated ['src/pentesting-cloud/azure-security/README.md'] to zh

This commit is contained in:
Translator
2025-03-04 22:09:20 +00:00
parent 1b4eaa88c6
commit a4dbd5361b
2 changed files with 58 additions and 34 deletions

View File

@@ -417,15 +417,18 @@
- [Az - Container Registry](pentesting-cloud/azure-security/az-services/az-container-registry.md)
- [Az - Container Instances, Apps & Jobs](pentesting-cloud/azure-security/az-services/az-container-instances-apps-jobs.md)
- [Az - CosmosDB](pentesting-cloud/azure-security/az-services/az-cosmosDB.md)
- [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md)
- [Az - Defender](pentesting-cloud/azure-security/az-services/az-defender.md)
- [Az - File Shares](pentesting-cloud/azure-security/az-services/az-file-shares.md)
- [Az - Function Apps](pentesting-cloud/azure-security/az-services/az-function-apps.md)
- [Az - Intune](pentesting-cloud/azure-security/az-services/intune.md)
- [Az - Key Vault](pentesting-cloud/azure-security/az-services/az-keyvault.md)
- [Az - Logic Apps](pentesting-cloud/azure-security/az-services/az-logic-apps.md)
- [Az - Management Groups, Subscriptions & Resource Groups](pentesting-cloud/azure-security/az-services/az-management-groups-subscriptions-and-resource-groups.md)
- [Az - Monitoring](pentesting-cloud/azure-security/az-services/az-monitoring.md)
- [Az - MySQL](pentesting-cloud/azure-security/az-services/az-mysql.md)
- [Az - PostgreSQL](pentesting-cloud/azure-security/az-services/az-postgresql.md)
- [Az - Queue Storage](pentesting-cloud/azure-security/az-services/az-queue.md)
- [Az - Sentinel](pentesting-cloud/azure-security/az-services/az-sentinel.md)
- [Az - Service Bus](pentesting-cloud/azure-security/az-services/az-servicebus.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)

View File

@@ -12,13 +12,13 @@ az-basic-information/
## Azure 渗透测试/红队方法论
为了审计 AZURE 环境,了解以下内容非常重要:使用了哪些 **服务**,暴露了什么,谁对什么**访问权限**,以及内部 Azure 服务和 **外部服务** 是如何连接的。
为了审计 AZURE 环境,了解以下内容非常重要:使用了哪些 **服务**,暴露了什么,谁有 **访问权限**,以及内部 Azure 服务和 **外部服务** 是如何连接的。
从红队的角度来看,**攻陷 Azure 环境的第一步**是设法获得一些 **立足点**
### 外部枚举与初始访问
第一步当然是枚举你正在攻击的租户的信息,并尝试获立足点。
第一步当然是枚举你正在攻击的租户的信息,并尝试获立足点。
根据域名,可以知道 **公司是否在使用 Azure**,获取 **租户 ID**,获取同一租户中的其他 **有效域名**(如果有的话),并获取 **相关信息**,例如 SSO 是否启用、邮件配置、有效用户邮箱等。
@@ -28,41 +28,41 @@ az-basic-information/
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
根据这些信息,尝试获立足点的最常见方法有:
- **OSINT**:检查 Github 或任何其他可能包含 **凭据** 或有趣信息的开源平台上的 **泄露**
根据这些信息,尝试获立足点的最常见方法有:
- **OSINT**:检查 Github 或任何其他开源平台上的 **泄露**可能包含 **凭据** 或有趣信息。
- **密码** 重用、泄露或 [密码喷洒](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
- 购买员工的凭据
- [**常见钓鱼**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html)(凭据或 Oauth 应用)
- [设备代码认证钓鱼](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- 第三方 **泄露**
- 第三方 **被攻破**
- Azure 托管应用中的漏洞
- [**服务器端请求伪造**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) 访问元数据端点
- **子域接管**,如 [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- **其他 Azure 服务的错误配置**
- 如果某个开发者的笔记本被攻[WinPEAS 和 LinPEAS](https://github.com/peass-ng/PEASS-ng) 可以找到这些信息):
- 如果某个开发者的笔记本被攻[WinPEAS 和 LinPEAS](https://github.com/peass-ng/PEASS-ng) 可以找到这些信息):
-**`<HOME>/.Azure`**
- **`azureProfile.json`** 包含过去登录用户的信息
- **`clouds.config`** 包含订阅信息
- **`service_principal_entries.json`** 包含应用凭据(租户 ID、客户端和密钥。仅在 Linux 和 macOS
- **`msal_token_cache.json`** 包含访问令牌和刷新令牌。仅在 Linux 和 macOS
- **`service_principal_entries.bin`** 和 msal_token_cache.bin 在 Windows 使用,并使用 DPAPI 加密
- **`service_principal_entries.json`** 包含应用凭据(租户 ID、客户端和密钥。仅在 Linux 和 macOS
- **`msal_token_cache.json`** 包含访问令牌和刷新令牌。仅在 Linux 和 macOS
- **`service_principal_entries.bin`** 和 msal_token_cache.bin 在 Windows 使用,并使用 DPAPI 加密
- **`msal_http_cache.bin`** 是 HTTP 请求的缓存
- 加载它:`with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
- **`AzureRmContext.json`** 包含使用 Az PowerShell 的先前登录信息(但没有凭据)
-**`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** 中有几个 `.bin` 文件,包含使用用户 DPAPI 加密的 **访问令牌**、ID 令牌和帐户信息。
- 可以在 **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** 中的 `.tbres` 文件中找到更多 **访问令牌**,这些文件包含用 DPAPI 加密的 base64 访问令牌
- 可以在 **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** 中的 `.tbres` 文件中找到更多 **访问令牌**,这些文件包含使用 DPAPI 加密的访问令牌的 base64。
- 在 Linux 和 macOS 中,可以通过运行 `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` 从 Az PowerShell 获取 **访问令牌、刷新令牌和 ID 令牌**(如果使用)。
- 在 Windows 中,这只会生成 ID 令牌。
- 可以通过检查 `$HOME/.local/share/.IdentityService/` 是否存在来查看是否在 Linux 和 macOS 中使用了 Az PowerShell(尽管包含的文件是空的且无用)
- 可以检查是否在 Linux 和 macOS 中使用了 Az PowerShell方法是检查 `$HOME/.local/share/.IdentityService/` 是否存在(尽管其中的文件是空的且无用)
在以下页面查找可能导致立足点的 **其他 Azure 服务错误配置**
在以下页面查找 **其他 Azure 服务错误配置**,可能导致立足点
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> 请记住,通常枚举中 **最嘈杂** 的部分是 **登录**,而不是枚举本身。
> 请记住,通常枚举中 **最吵闹** 的部分是 **登录**,而不是枚举本身。
### Azure 和 Entra ID 工具
@@ -78,10 +78,10 @@ az-enumeration-tools.md
在你拥有一些有效凭据但无法登录的情况下,可能存在一些常见的保护措施:
- **IP 白名单** -- 你需要攻一个有效的 IP
- **地理限制** -- 找到用户居住的地方或公司的办公室位置,并获取来自同一城市(或至少同一国家)的 IP
- **IP 白名单** -- 你需要攻一个有效的 IP
- **地理限制** -- 找到用户居住的地方或公司的办公室,并获取来自同一城市(或至少同一国家)的 IP
- **浏览器** -- 可能只允许某些操作系统Windows、Linux、Mac、Android、iOS的浏览器。找出受害者/公司使用的操作系统。
- 你还可以尝试 **攻服务主体凭据**,因为它们通常限制较少,登录审核较少
- 你还可以尝试 **攻服务主体凭据**,因为它们通常限制较少,登录审核较少
绕过后,你可能能够返回到最初的设置,并且仍然可以访问。
@@ -140,52 +140,71 @@ Get-AzureADTenantDetail
{{#endtab }}
{{#endtabs }}
### Entra ID 枚举与权限提升
默认情况下,任何用户应该具有**足够的权限来枚举**用户、组、角色、服务主体等信息...(查看 [默认 AzureAD 权限](az-basic-information/index.html#default-user-permissions)).\
默认情况下,任何用户应该具有**足够的权限来枚举**用户、组、角色、服务主体等...(查看 [default AzureAD permissions](az-basic-information/index.html#default-user-permissions)).\
您可以在这里找到指南:
{{#ref}}
az-services/az-azuread.md
{{#endref}}
查看**后期利用工具**以找在 Entra ID 中提升权限的工具,如 **AzureHound:**
查看**后渗透工具**以找在 Entra ID 中提升权限的工具,如**AzureHound**
{{#ref}}
az-enumeration-tools.md#automated-post-exploitation-tools
{{#endref}}
### Azure 枚举
一旦您知道自己是谁,您就可以开始枚举**您可以访问的 Azure 服务**。
您应该开始找出**您对资源的权限**。为此:
您应该开始找出您对资源的**权限**。为此:
1. **找到您有访问权限的资源**
> [!TIP]
> 这不需要任何特殊权限。
Az PowerShell 命令 **`Get-AzResource`** 让您**了解当前用户可见的资源**。
此外,您可以通过访问 [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) 或搜索“所有资源”来在**Web 控制台**中获取相同的信息,或执行:
```bash
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
```
2. **查找您对可以访问的资源的权限以及分配给您的角色**
2. **查找您对可资源的权限**
请注意,您需要权限 **`Microsoft.Authorization/roleAssignments/read`** 才能执行此操作。
> [!TIP]
> 这不需要任何特殊权限。
此外,拥有足够权限时,可以使用角色 **`Get-AzRoleAssignment`** 来 **枚举订阅中的所有角色** 或特定资源的权限,如下所示:
通过与 API **`https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01`** 交互,您可以获取对指定资源 **`resource_id`** 的权限。
因此,**检查您可以访问的每个资源**,您可以获取对它们的权限。
> [!WARNING]
> 您可以使用工具 **[Find_My_Az_Management_Permissions](https://github.com/carlospolop/Find_My_Az_Management_Permissions)** 自动化此枚举。
<details>
<summary>使用 **`Microsoft.Authorization/roleAssignments/read`** 枚举权限</summary>
> [!TIP]
> 请注意,您需要权限 **`Microsoft.Authorization/roleAssignments/read`** 才能执行此操作。
- 拥有足够权限的情况下,可以使用角色 **`Get-AzRoleAssignment`** 来 **枚举订阅中的所有角色** 或对特定资源的权限,指示如下:
```bash
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4
```
也可以通过运行以下命令获取此信息:
```bash
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
```
请提供需要翻译的具体内容。
```bash
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01" | jq ".value"
```
另一个选项是使用以下命令获取附加到您在 Azure 中的角色:
- 另一个选项是**获取附加到您在 azure 中的角色**。这也需要权限**`Microsoft.Authorization/roleAssignments/read`**
```bash
az role assignment list --assignee "<email>" --all --output table
```
@@ -193,15 +212,17 @@ az role assignment list --assignee "<email>" --all --output table
```bash
az rest --method GET --uri 'https://management.azure.com/subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleAssignments?api-version=2022-04-01&$filter=principalId eq '<user-id>'
```
3. **查找附加给的角色的细粒度权限**
- **查找附加给的角色的细粒度权限**
然后,要获取细粒度权限,可以运行 **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`**。
然后,要获取细粒度权限,可以运行 **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`**。
或者直接调用 API使用
```bash
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2020-08-01-preview" | jq ".properties"
az rest --method GET --uri "https://management.azure.com//subscriptions/<subscription-id>/providers/Microsoft.Authorization/roleDefinitions/<RoleDefinitionId>?api-version=2022-04-01" | jq ".properties"
```
在以下部分中,您可以找到**有关最常见的 Azure 服务及其枚举方法的信息**
</details>
在以下部分中,您可以找到**有关最常见的Azure服务及其枚举方法的信息**
{{#ref}}
az-services/
@@ -209,21 +230,21 @@ az-services/
### 权限提升、后期利用与持久性
一旦您了解 Azure 环境的结构以及正在使用的服务,您就可以开始寻找**提升权限、横向移动、执行其他后期利用攻击和维持持久性**的方法。
一旦您了解Azure环境的结构以及正在使用的服务您就可以开始寻找**提升权限、横向移动、执行其他后期利用攻击和维持持久性**的方法。
在以下部分中,您可以找到有关如何在最常见的 Azure 服务中提升权限的信息:
在以下部分中您可以找到有关如何在最常见的Azure服务中提升权限的信息
{{#ref}}
az-privilege-escalation/
{{#endref}}
在以下部分中,您可以找到有关如何在最常见的 Azure 服务中执行后期利用攻击的信息:
在以下部分中您可以找到有关如何在最常见的Azure服务中执行后期利用攻击的信息
{{#ref}}
az-post-exploitation/
{{#endref}}
在以下部分中,您可以找到有关如何在最常见的 Azure 服务中维持持久性的信息:
在以下部分中您可以找到有关如何在最常见的Azure服务中维持持久性的信息
{{#ref}}
az-persistence/