mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2025-12-28 05:33:10 -08:00
Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes
This commit is contained in:
@@ -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/
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
# Az - Escalación de Privilegios
|
||||
@@ -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}}
|
||||
Reference in New Issue
Block a user