diff --git a/src/pentesting-cloud/azure-security/README.md b/src/pentesting-cloud/azure-security/README.md index 5b432f073..652c68be8 100644 --- a/src/pentesting-cloud/azure-security/README.md +++ b/src/pentesting-cloud/azure-security/README.md @@ -12,15 +12,15 @@ az-basic-information/ ## Metodologia di Pentesting/Red Team di Azure -Per auditare un ambiente AZURE è molto importante sapere: quali **servizi vengono utilizzati**, cosa è **esposto**, chi ha **accesso** a cosa e come sono connessi i servizi interni di Azure e i **servizi esterni**. +Per auditare un ambiente AZURE è molto importante sapere: quali **servizi vengono utilizzati**, cosa è **esposto**, chi ha **accesso** a cosa e come sono connessi i servizi Azure interni e i **servizi esterni**. -Dal punto di vista del Red Team, il **primo passo per compromettere un ambiente Azure** è riuscire a ottenere un **foothold**. +Dal punto di vista di un Red Team, il **primo passo per compromettere un ambiente Azure** è riuscire a ottenere un **foothold**. ### Enumerazione esterna e accesso iniziale Il primo passo è ovviamente enumerare informazioni sul tenant che stai attaccando e cercare di ottenere un foothold. -In base al nome di dominio è possibile sapere **se l'azienda sta utilizzando Azure**, ottenere il **tenant ID**, ottenere altri **domini validi** nello stesso tenant (se ce ne sono) e ottenere **informazioni rilevanti** come se SSO è abilitato, configurazioni email, email di utenti validi... +Basandosi sul nome di dominio, è possibile sapere **se l'azienda sta utilizzando Azure**, ottenere il **tenant ID**, ottenere altri **domini validi** nello stesso tenant (se ce ne sono) e ottenere **informazioni rilevanti** come se SSO è abilitato, configurazioni email, email di utenti validi... Controlla la pagina seguente per imparare come eseguire l'**enumerazione esterna**: @@ -29,7 +29,7 @@ az-unauthenticated-enum-and-initial-entry/ {{#endref}} Con queste informazioni, i modi più comuni per cercare di ottenere un foothold sono: -- **OSINT**: Controlla eventuali **leaks** su Github o qualsiasi altra piattaforma open source che potrebbe contenere **credenziali** o informazioni interessanti. +- **OSINT**: Controlla eventuali **leaks** su Github o su qualsiasi altra piattaforma open source che potrebbe contenere **credenziali** o informazioni interessanti. - Riutilizzo delle **password**, leaks o [password spraying](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md) - Acquistare credenziali da un dipendente - [**Phishing comune**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credenziali o Oauth App) @@ -38,8 +38,9 @@ Con queste informazioni, i modi più comuni per cercare di ottenere un foothold - Vulnerabilità nelle applicazioni ospitate su Azure - [**Server Side Request Forgery**](https://book.hacktricks.wiki/en/pentesting-web/ssrf-server-side-request-forgery/cloud-ssrf.html) con accesso all'endpoint dei metadati - **Subdomain takeovers** come in [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/) +- **Altre misconfigurazioni dei servizi Azure** - Se un laptop di uno sviluppatore è compromesso ([WinPEAS e LinPEAS](https://github.com/peass-ng/PEASS-ng) possono trovare queste informazioni): -- Dentro **`/.Azure`** +- All'interno di **`/.Azure`** - **`azureProfile.json`** contiene informazioni sugli utenti connessi in passato - **`clouds.config` contiene** informazioni sulle sottoscrizioni - **`service_principal_entries.json`** contiene credenziali delle applicazioni (tenant id, client e segreto). Solo in Linux e macOS @@ -48,18 +49,24 @@ Con queste informazioni, i modi più comuni per cercare di ottenere un foothold - **`msal_http_cache.bin`** è una cache delle richieste HTTP - Caricalo: `with open("msal_http_cache.bin", 'rb') as f: pickle.load(f)` - **`AzureRmContext.json`** contiene informazioni sui login precedenti utilizzando Az PowerShell (ma nessuna credenziale) -- Dentro **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** ci sono diversi file `.bin` con **token di accesso**, token ID e informazioni sull'account crittografate con DPAPI degli utenti. +- All'interno di **`C:\Users\\AppData\Local\Microsoft\IdentityCache\*`** ci sono diversi file `.bin` con **token di accesso**, token ID e informazioni sull'account crittografate con DPAPI degli utenti. - È possibile trovare ulteriori **token di accesso** nei file `.tbres` all'interno di **`C:\Users\\AppData\Local\Microsoft\TokenBroken\Cache\`** che contengono un base64 crittografato con DPAPI con token di accesso. - In Linux e macOS puoi ottenere **token di accesso, token di aggiornamento e token ID** da Az PowerShell (se utilizzato) eseguendo `pwsh -Command "Save-AzContext -Path /tmp/az-context.json"` - In Windows questo genera solo token ID. - Possibile vedere se Az PowerShell è stato utilizzato in Linux e macOS controllando se esiste `$HOME/.local/share/.IdentityService/` (anche se i file contenuti sono vuoti e inutili) +Trova **altre misconfigurazioni dei servizi Azure** che possono portare a un foothold nella pagina seguente: + +{{#ref}} +az-unauthenticated-enum-and-initial-entry/ +{{#endref}} + > [!NOTE] > Ricorda che di solito la parte **più rumorosa** dell'enumerazione è il **login**, non l'enumerazione stessa. -### Strumenti Azure e Entra ID +### Strumenti Azure & Entra ID -I seguenti strumenti saranno super utili per enumerare sia i tenant di Entra ID che gli ambienti Azure lentamente (per evitare il rilevamento) o automaticamente (per risparmiare tempo): +I seguenti strumenti saranno molto utili per enumerare sia i tenant di Entra ID che gli ambienti Azure lentamente (per evitare il rilevamento) o automaticamente (per risparmiare tempo): {{#ref}} az-enumeration-tools.md @@ -69,14 +76,14 @@ az-enumeration-tools.md
-Nei casi in cui hai alcune credenziali valide ma non riesci a effettuare il login, queste sono alcune protezioni comuni che potrebbero essere in atto: +Nei casi in cui hai alcune credenziali valide ma non puoi effettuare il login, queste sono alcune protezioni comuni che potrebbero essere in atto: -- **Whitelist IP** -- Devi compromettere un IP valido +- **Whitelisting IP** -- Devi compromettere un IP valido - **Restrizioni geografiche** -- Scopri dove vive l'utente o dove si trovano gli uffici dell'azienda e ottieni un IP dalla stessa città (o paese almeno) - **Browser** -- Forse è consentito solo un browser di un certo OS (Windows, Linux, Mac, Android, iOS). Scopri quale OS utilizza la vittima/azienda. - Puoi anche provare a **compromettere le credenziali del Service Principal** poiché di solito sono meno limitate e il loro login è meno controllato -Dopo aver bypassato, potresti essere in grado di tornare alla tua configurazione iniziale e avrai ancora accesso. +Dopo averlo bypassato, potresti essere in grado di tornare alla tua configurazione iniziale e avrai ancora accesso. ### Whoami @@ -130,7 +137,7 @@ Get-AzureADTenantDetail ### Enumerazione di Entra ID e Escalation dei Privilegi -Per impostazione predefinita, qualsiasi utente dovrebbe avere **sufficienti permessi per enumerare** cose come utenti, gruppi, ruoli, service principals... (controlla [permissi di AzureAD predefiniti](az-basic-information/index.html#default-user-permissions)).\ +Per impostazione predefinita, qualsiasi utente dovrebbe avere **sufficienti permessi per enumerare** cose come utenti, gruppi, ruoli, service principals... (controlla [permissi di default di AzureAD](az-basic-information/index.html#default-user-permissions)).\ Puoi trovare qui una guida: {{#ref}} @@ -148,13 +155,32 @@ az-enumeration-tools.md#automated-post-exploitation-tools Una volta che sai chi sei, puoi iniziare a enumerare i **servizi Azure a cui hai accesso**. +Dovresti iniziare a scoprire i **permessi che hai** sulle risorse. Per questo: + +1. **Trova la risorsa a cui hai accesso**: + Il comando Az PowerShell **`Get-AzResource`** ti consente di **conoscere le risorse su cui il tuo utente attuale ha visibilità**. Inoltre, puoi ottenere le stesse informazioni nella **console web** andando su [https://portal.azure.com/#view/HubsExtension/BrowseAll](https://portal.azure.com/#view/HubsExtension/BrowseAll) o cercando "Tutte le risorse" o eseguendo: `az rest --method GET --url "https://management.azure.com/subscriptions//resources?api-version=2021-04-01"` -Inoltre, con sufficienti permessi, il ruolo **`Get-AzRoleAssignment`** può essere utilizzato per **enumerare tutti i ruoli** nella sottoscrizione o il permesso su una risorsa specifica indicandola come in: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`** +2. **Trova i permessi che hai sulle risorse a cui hai accesso e trova i ruoli a te assegnati**: -Nella sezione seguente puoi trovare informazioni sui servizi Azure più comuni e su come enumerarli: +Nota che hai bisogno del permesso **`Microsoft.Authorization/roleAssignments/read`** per eseguire questa azione. + +Inoltre, con sufficienti permessi, il ruolo **`Get-AzRoleAssignment`** può essere utilizzato per **enumerare tutti i ruoli** nella sottoscrizione o il permesso su una risorsa specifica indicandola come in: **`Get-AzRoleAssignment -Scope /subscriptions/9291ff6e-6afb-430e-82a4-6f04b2d05c7f/resourceGroups/Resource_Group_1/providers/Microsoft.RecoveryServices/vaults/vault-m3ww8ut4`**. + +È anche possibile ottenere queste informazioni eseguendo **`az rest --method GET --uri "https://management.azure.com//providers/Microsoft.Authorization/roleAssignments?api-version=2020-08-01-preview" | jq ".value"`** come in: + +- **`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. **Trova i permessi granulari dei ruoli a te associati**: + +Poi, per ottenere il permesso granulare potresti eseguire **`(Get-AzRoleDefinition -Id "").Actions`**. + +Oppure chiama direttamente l'API con **`az rest --method GET --uri "https://management.azure.com//subscriptions//providers/Microsoft.Authorization/roleDefinitions/?api-version=2020-08-01-preview" | jq ".properties"`**. + + +Nella sezione seguente puoi trovare **informazioni sui servizi Azure più comuni e su come enumerarli**: {{#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 3e45f0680..000000000 --- a/src/pentesting-cloud/azure-security/az-privilege-escalation/README.md +++ /dev/null @@ -1 +0,0 @@ -# Az - Privilege Escalation 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..ede4b31a9 --- /dev/null +++ b/src/pentesting-cloud/azure-security/az-unauthenticated-enum-and-initial-entry/az-storage-unauth.md @@ -0,0 +1,41 @@ +# Az - Storage Unauth + +{{#include ../../../banners/hacktricks-training.md}} + +## Storage Unauth + +Per ulteriori informazioni sullo storage, controlla: + +{{#ref}} +../az-services/az-storage.md +{{#endref}} + +### Open Storage + +Puoi scoprire storage aperti con uno strumento come [**InvokeEnumerateAzureBlobs.ps1**](https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1) che utilizzerà il file **`Microburst/Misc/permutations.txt`** per generare permutazioni (molto semplici) per cercare di **trovare account di storage aperti**. +```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 +``` +Puoi anche utilizzare un metodo da [**MicroBust**](https://github.com/NetSPI/MicroBurst) per tale scopo. Questa funzione cercherà il nome di dominio di base (e alcune permutazioni) in diversi **azure domains** (inclusi i domini di archiviazione): +```bash +Import-Module .\MicroBurst\MicroBurst.psm1 -Verbose +Invoke-EnumerateAzureSubDomains -Base corp -Verbose +``` +### SAS URLs + +Un _**shared access signature**_ (SAS) URL è un URL che **fornisce accesso** a una certa parte di un account di Storage (può essere un intero contenitore, un file...) con alcune specifiche autorizzazioni (lettura, scrittura...) sulle risorse. Se ne trovi uno leaked potresti essere in grado di accedere a informazioni sensibili, appaiono così (questo è per accedere a un contenitore, se stesse solo concedendo accesso a un file, il percorso dell'URL conterrà anche quel file): + +`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/) per accedere ai dati + + +{{#include ../../../banners/hacktricks-training.md}}