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

This commit is contained in:
Translator
2025-01-26 10:44:50 +00:00
parent 9dbcae0fe1
commit 67b1502ac6
3 changed files with 73 additions and 8 deletions

View File

@@ -34,10 +34,11 @@ Con esta información, las formas más comunes de intentar obtener un punto de a
- Comprar credenciales a un empleado
- [**Phishing Común**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credenciales o aplicación Oauth)
- [Phishing de Autenticación con Código de Dispositivo](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
- **Compromisos** de terceros
- **Brechas** de terceros
- Vulnerabilidades en Aplicaciones Alojadas en Azure
- [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) con acceso al endpoint de metadatos
- **Tomas de subdominio** como en [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
- **Otras configuraciones incorrectas de servicios de Azure**
- Si alguna laptop de desarrollador está comprometida ([WinPEAS y LinPEAS](https://github.com/peass-ng/PEASS-ng) pueden encontrar esta información):
- Dentro de **`<HOME>/.Azure`**
- **`azureProfile.json`** contiene información sobre usuarios conectados en el pasado
@@ -48,12 +49,18 @@ Con esta información, las formas más comunes de intentar obtener un punto de a
- **`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)
- Dentro de **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** hay varios archivos `.bin` con **tokens de acceso**, tokens de ID e información de cuentas encriptada con el DPAPI de los usuarios.
- Dentro de **`C:\Users\<username>\AppData\Local\Microsoft\IdentityCache\*`** hay varios archivos `.bin` con **tokens de acceso**, tokens de ID e información de cuentas encriptada con el DPAPI del usuario.
- Es posible encontrar más **tokens de acceso** en los archivos `.tbres` dentro de **`C:\Users\<username>\AppData\Local\Microsoft\TokenBroken\Cache\`** que contienen un base64 encriptado con DPAPI con tokens de acceso.
- En Linux y macOS puedes obtener **tokens de acceso, tokens de actualización y tokens de ID** desde Az PowerShell (si se usó) ejecutando `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"`
- En Windows, esto solo genera tokens de ID.
- Es posible ver si se usó Az PowerShell en Linux y macOS verificando si existe `$HOME/.local/share/.IdentityService/` (aunque los archivos contenidos están vacíos y son inútiles)
Encuentra **otras configuraciones incorrectas de servicios de Azure** que pueden llevar a un punto de apoyo en la siguiente página:
{{#ref}}
az-unauthenticated-enum-and-initial-entry/
{{#endref}}
> [!NOTE]
> Recuerda que generalmente la parte **más ruidosa** de la enumeración es el **inicio de sesión**, no la enumeración en sí.
@@ -74,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 las credenciales del Principal de Servicio** ya que generalmente son 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.
@@ -131,7 +138,7 @@ Get-AzureADTenantDetail
### Enumeración de Entra ID y Escalación de Privilegios
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)).\
Puedes encontrar aquí una guía:
Aquí puedes encontrar una guía:
{{#ref}}
az-services/az-azuread.md
@@ -148,13 +155,32 @@ az-enumeration-tools.md#automated-post-exploitation-tools
Una vez que sepas quién eres, puedes comenzar a enumerar los **servicios de Azure a los que tienes acceso**.
El comando de Az PowerShell **`Get-AzResource`** te permite **conocer los recursos sobre los que tu usuario actual tiene visibilidad**.
Deberías comenzar a averiguar los **permisos que tienes** sobre los recursos. Para esto:
1. **Encuentra el recurso al que tienes acceso**:
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: `az rest --method GET --url "https://management.azure.com/subscriptions/<subscription-id>/resources?api-version=2021-04-01"`
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`**
2. **Encuentra los permisos que tienes sobre los recursos a los que tienes acceso y encuentra los roles asignados a ti**:
En la siguiente sección puedes encontrar información sobre los servicios de Azure más comunes y cómo enumerarlos:
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"`**
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"`**.
En la siguiente sección puedes encontrar **información sobre los servicios de Azure más comunes y cómo enumerarlos**:
{{#ref}}
az-services/

View File

@@ -1 +0,0 @@
# Az - Escalación de Privilegios

View File

@@ -0,0 +1,40 @@
# Az - Storage Unauth
{{#include ../../../banners/hacktricks-training.md}}
## Storage Unauth
Para más información sobre almacenamiento, consulta:
{{#ref}}
../az-services/az-storage.md
{{#endref}}
### Open Storage
Puedes descubrir almacenamiento abierto con una herramienta como [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) que utilizará el archivo **`Microburst/Misc/permutations.txt`** para generar permutaciones (muy simples) para intentar **encontrar cuentas de almacenamiento abiertas**.
```bash
Import-Module .\MicroBurst\MicroBurst.psm1
Invoke-EnumerateAzureBlobs -Base corp
[...]
https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
[...]
# Access https://corpcommon.blob.core.windows.net/secrets?restype=container&comp=list
# Check: <Name>ssh_info.json</Name>
# Access then https://corpcommon.blob.core.windows.net/secrets/ssh_info.json
```
También puedes usar un método de [**MicroBust**](https://github.com/NetSPI/MicroBurst) para tal objetivo. Esta función buscará el nombre de dominio base (y algunas permutaciones) en varios **dominios de azure** (incluidos los dominios de almacenamiento):
```bash
Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose
Invoke-EnumerateAzureSubDomains -Base corp -Verbose
```
### SAS URLs
Una _**firma de acceso compartido**_ (SAS) URL es una URL que **proporciona acceso** a cierta parte de una cuenta de almacenamiento (puede ser un contenedor completo, un archivo...) con algunos permisos específicos (lectura, escritura...) sobre los recursos. Si encuentras uno filtrado, podrías acceder a información sensible, se ven así (esto es para acceder a un contenedor, si solo estuviera otorgando acceso a un archivo, la ruta de la URL también contendría ese archivo):
`https://<storage_account_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D`
Usa [**Storage Explorer**](https://azure.microsoft.com/en-us/features/storage-explorer/) para acceder a los datos
{{#include ../../../banners/hacktricks-training.md}}