mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-02-05 11:26:11 -08:00
Translated ['src/pentesting-cloud/azure-security/README.md'] to zh
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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/
|
||||
|
||||
Reference in New Issue
Block a user