Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes

This commit is contained in:
Translator
2025-02-07 00:04:52 +00:00
parent 7f0b11d96d
commit 3aba1ae830
2 changed files with 54 additions and 29 deletions

View File

@@ -10,7 +10,7 @@ Aprende los conceptos básicos de Azure y Entra ID en la siguiente página:
az-basic-information/
{{#endref}}
## Metodología de Pentesting/Red Team en Azure
## Metodología de Pentesting/Red Team de Azure
Para auditar un entorno AZURE, es muy importante saber: qué **servicios se están utilizando**, qué está **siendo expuesto**, quién tiene **acceso** a qué, y cómo están conectados los servicios internos de Azure y los **servicios externos**.
@@ -45,7 +45,7 @@ Con esta información, las formas más comunes de intentar obtener un punto de a
- **`clouds.config` contiene** información sobre suscripciones
- **`service_principal_entries.json`** contiene credenciales de aplicaciones (ID de inquilino, clientes y secreto). Solo en Linux y macOS
- **`msal_token_cache.json`** contiene tokens de acceso y tokens de actualización. Solo en Linux y macOS
- **`service_principal_entries.bin`** y msal_token_cache.bin se utilizan en Windows y están encriptados con DPAPI
- **`service_principal_entries.bin`** y **msal_token_cache.bin** se utilizan en Windows y están encriptados con DPAPI
- **`msal_http_cache.bin`** es un caché de solicitudes HTTP
- Cárgalo: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)`
- **`AzureRmContext.json`** contiene información sobre inicios de sesión anteriores usando Az PowerShell (pero no credenciales)
@@ -81,7 +81,7 @@ En casos donde tienes algunas credenciales válidas pero no puedes iniciar sesi
- **Lista blanca de IP** -- Necesitas comprometer una IP válida
- **Restricciones geográficas** -- Encuentra dónde vive el usuario o dónde están las oficinas de la empresa y obtén una IP de la misma ciudad (o país al menos)
- **Navegador** -- Tal vez solo se permite un navegador de cierto SO (Windows, Linux, Mac, Android, iOS). Descubre qué SO usa la víctima/empresa.
- También puedes intentar **comprometer las credenciales del Service Principal** ya que generalmente son menos limitadas y su inicio de sesión es menos revisado
- También puedes intentar **comprometer credenciales de Service Principal** ya que suelen ser menos limitadas y su inicio de sesión es menos revisado
Después de eludirlo, podrías ser capaz de volver a tu configuración inicial y aún tendrás acceso.
@@ -144,7 +144,7 @@ Get-AzureADTenantDetail
### Enumeración de Entra ID y Privesc
Por defecto, cualquier usuario debería tener **suficientes permisos para enumerar** cosas como usuarios, grupos, roles, principales de servicio... (ver [permisos predeterminados de AzureAD](az-basic-information/index.html#default-user-permissions)).\
Aquí puedes encontrar una guía:
Puedes encontrar aquí una guía:
{{#ref}}
az-services/az-azuread.md
@@ -165,27 +165,44 @@ Deberías comenzar a averiguar los **permisos que tienes** sobre los recursos. P
1. **Encuentra el recurso al que tienes acceso**:
El comando de Az PowerShell **`Get-AzResource`** te permite **conocer los recursos que tu usuario actual tiene visibilidad**.
Además, puedes obtener la misma información en la **consola web** yendo a [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) o buscando "Todos los recursos" o ejecutando: `az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"`
El comando de Az PowerShell **`Get-AzResource`** te permite **saber los recursos sobre los que tu usuario actual tiene visibilidad**.
Además, puedes obtener la misma información en la **consola web** yendo a [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) o buscando "Todos los recursos" o ejecutando:
```bash
az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"
```
2. **Encuentra los permisos que tienes sobre los recursos a los que tienes acceso y encuentra los roles asignados a ti**:
Ten en cuenta que necesitas el permiso **`Microsoft.Authorization/roleAssignments/read`** para ejecutar esta acción.
Además, con suficientes permisos, el rol **`Get-AzRoleAssignment`** se puede usar para **enumerar todos los roles** en la suscripción o el permiso sobre un recurso específico indicándolo como en: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**.
También es posible obtener esta información ejecutando **`az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** como en:
- **`az rest --method GET --uri "https://management.azure.com//subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.KeyVault/vaults/vault-m3ww8ut4/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`**
Además, con suficientes permisos, el rol **`Get-AzRoleAssignment`** se puede usar para **enumerar todos los roles** en la suscripción o el permiso sobre un recurso específico indicándolo así:
```bash
Get-AzRoleAssignment -Scope /subscriptions/<subscription-id>/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4
```
También es posible obtener esta información ejecutando:
```bash
az rest --method GET --uri "https://management.azure.com/<Scope>/providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"
```
como en:
```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"
```
Otra opción es obtener los roles asignados a ti en azure con:
```bash
az role assignment list --assignee "<email>" --all --output table
```
O ejecutando lo siguiente (Si los resultados están vacíos, puede ser porque no tienes permiso para obtenerlos):
```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. **Encuentra los permisos granulares de los roles asignados a ti**:
Luego, para obtener el permiso granular podrías ejecutar **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`**.
O llamar a la API directamente con **`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"`**.
Luego, para obtener el permiso granular, podrías ejecutar **`(Get-AzRoleDefinition -Id "<RoleDefinitionId>").Actions`**.
O llama a la API directamente con
```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"
```
En la siguiente sección puedes encontrar **información sobre los servicios de Azure más comunes y cómo enumerarlos**:
{{#ref}}