diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index bc86490e6..00a2fa909 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -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 **`/.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\\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\\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\\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//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//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 "").Actions`**. + +O llamar a la API directamente con **`az rest --method GET --uri "https://management.azure.com//subscriptions//providers/Microsoft.Authorization/roleDefinitions/?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/ diff --git a/src/pentesting-cloud/azure-security/az-privilege-escalation/README.md b/src/pentesting-cloud/azure-security/az-privilege-escalation/README.md deleted file mode 100644 index e109a67ea..000000000 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/README.md +++ /dev/null @@ -1 +0,0 @@ -# Az - Escalación de Privilegios diff --git a/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md new file mode 100644 index 000000000..6abd2307f --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md @@ -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: ssh_info.json +# 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://.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}}