mirror of
https://github.com/HackTricks-wiki/hacktricks-cloud.git
synced 2026-01-15 14:23:16 -08:00
Translated ['src/pentesting-cloud/azure-security/README.md', 'src/pentes
This commit is contained in:
@@ -2,7 +2,9 @@
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Informazioni di Base
|
||||
## Informazioni di base
|
||||
|
||||
Impara le basi di Azure e Entra ID nella pagina seguente:
|
||||
|
||||
{{#ref}}
|
||||
az-basic-information/
|
||||
@@ -12,65 +14,69 @@ az-basic-information/
|
||||
|
||||
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**.
|
||||
|
||||
Dal punto di vista di un Red Team, il **primo passo per compromettere un ambiente Azure** è riuscire a ottenere alcune **credenziali** per Azure AD. Ecco alcune idee su come farlo:
|
||||
Dal punto di vista del Red Team, il **primo passo per compromettere un ambiente Azure** è riuscire a ottenere un **foothold**.
|
||||
|
||||
- **Leaks** in github (o simili) - OSINT
|
||||
- **Ingegneria** Sociale
|
||||
- Riutilizzo della **Password** (leak di password)
|
||||
- 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
|
||||
- **Lettura di File Locali**
|
||||
- `/home/USERNAME/.azure`
|
||||
- `C:\Users\USERNAME\.azure`
|
||||
- Il file **`accessTokens.json`** in `az cli` prima della versione 2.30 - Gen2022 - memorizzava **token di accesso in chiaro**
|
||||
- Il file **`azureProfile.json`** contiene **info** sull'utente connesso.
|
||||
- **`az logout`** rimuove il token.
|
||||
- Le versioni precedenti di **`Az PowerShell`** memorizzavano i **token di accesso** in **chiaro** in **`TokenCache.dat`**. Memorizza anche il **ServicePrincipalSecret** in **chiaro** in **`AzureRmContext.json`**. Il cmdlet **`Save-AzContext`** può essere utilizzato per **memorizzare** **token**.\
|
||||
Usa `Disconnect-AzAccount` per rimuoverli.
|
||||
- Terze parti **compromesse**
|
||||
- **Dipendente** Interno
|
||||
- [**Phishing Comune**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html) (credenziali o App Oauth)
|
||||
- [Phishing con Codice Dispositivo di Autenticazione](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- [**Password Spraying** di Azure](az-unauthenticated-enum-and-initial-entry/az-password-spraying.md)
|
||||
### Enumerazione esterna e accesso iniziale
|
||||
|
||||
Anche se non hai **compromesso alcun utente** all'interno del tenant Azure che stai attaccando, puoi **raccogliere alcune informazioni** da esso:
|
||||
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...
|
||||
|
||||
Controlla la pagina seguente per imparare come eseguire l'**enumerazione esterna**:
|
||||
|
||||
{{#ref}}
|
||||
az-unauthenticated-enum-and-initial-entry/
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> Dopo aver ottenuto le credenziali, devi sapere **a chi appartengono queste credenziali**, e **a cosa hanno accesso**, quindi devi eseguire alcune enumerazioni di base:
|
||||
|
||||
## Enumerazione di Base
|
||||
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.
|
||||
- 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)
|
||||
- [Phishing con codice dispositivo](az-unauthenticated-enum-and-initial-entry/az-device-code-authentication-phishing.md)
|
||||
- **Violazioni** di terze parti
|
||||
- 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/)
|
||||
- Se un laptop di uno sviluppatore è compromesso ([WinPEAS e LinPEAS](https://github.com/peass-ng/PEASS-ng) possono trovare queste informazioni):
|
||||
- Dentro **`<HOME>/.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
|
||||
- **`msal_token_cache.json`** contiene token di accesso e token di aggiornamento. Solo in Linux e macOS
|
||||
- **`service_principal_entries.bin`** e msal_token_cache.bin sono utilizzati in Windows e sono crittografati con DPAPI
|
||||
- **`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\<username>\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\<username>\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)
|
||||
|
||||
> [!NOTE]
|
||||
> Ricorda che la parte **più rumorosa** dell'enumerazione è il **login**, non l'enumerazione stessa.
|
||||
> Ricorda che di solito la parte **più rumorosa** dell'enumerazione è il **login**, non l'enumerazione stessa.
|
||||
|
||||
### SSRF
|
||||
### Strumenti Azure e Entra ID
|
||||
|
||||
Se hai trovato un SSRF in una macchina all'interno di Azure controlla questa pagina per trucchi:
|
||||
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):
|
||||
|
||||
{{#ref}}
|
||||
https://book.hacktricks.wiki/en/generic-methodologies-and-resources/phishing-methodology/index.html
|
||||
az-enumeration-tools.md
|
||||
{{#endref}}
|
||||
|
||||
### Bypassare le Condizioni di Login
|
||||
### Bypassare le condizioni di login
|
||||
|
||||
<figure><img src="../../images/image (268).png" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
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:
|
||||
|
||||
- **Whitelist 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 solo un browser di un certo OS (Windows, Linux, Mac, Android, iOS) è consentito. Scopri quale OS utilizza la vittima/azienda.
|
||||
- **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 averlo bypassato, potresti essere in grado di tornare alla tua configurazione iniziale e avrai ancora accesso.
|
||||
|
||||
### Presa di Controllo di Sottodomini
|
||||
|
||||
- [https://godiego.co/posts/STO-Azure/](https://godiego.co/posts/STO-Azure/)
|
||||
Dopo aver bypassato, potresti essere in grado di tornare alla tua configurazione iniziale e avrai ancora accesso.
|
||||
|
||||
### Whoami
|
||||
|
||||
@@ -91,16 +97,7 @@ az account management-group list #Not allowed by default
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AzureAD" }}
|
||||
```bash
|
||||
#Get the current session state
|
||||
Get-AzureADCurrentSessionInfo
|
||||
#Get details of the current tenant
|
||||
Get-AzureADTenantDetail
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Az PowerShell" }}
|
||||
{{#tab name="Az" }}
|
||||
```bash
|
||||
# Get the information about the current context (Account, Tenant, Subscription etc.)
|
||||
Get-AzContext
|
||||
@@ -110,43 +107,79 @@ Get-AzContext -ListAvailable
|
||||
Get-AzSubscription
|
||||
#Get Resource group
|
||||
Get-AzResourceGroup
|
||||
# Enumerate all resources visible to the current user
|
||||
Get-AzResource
|
||||
# Enumerate all Azure RBAC role assignments
|
||||
Get-AzRoleAssignment # For all users
|
||||
Get-AzRoleAssignment -SignInName test@corp.onmicrosoft.com # For current user
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="Mg" }}
|
||||
```bash
|
||||
#Get the current session
|
||||
Get-MgContext
|
||||
```
|
||||
{{#endtab }}
|
||||
|
||||
{{#tab name="AzureAD" }}
|
||||
```bash
|
||||
#Get the current session state
|
||||
Get-AzureADCurrentSessionInfo
|
||||
#Get details of the current tenant
|
||||
Get-AzureADTenantDetail
|
||||
```
|
||||
{{#endtab }}
|
||||
{{#endtabs }}
|
||||
|
||||
> [!CAUTION]
|
||||
> Uno dei comandi più importanti per enumerare Azure è **`Get-AzResource`** da Az PowerShell poiché ti consente di **conoscere le risorse a cui il tuo utente attuale ha visibilità**.
|
||||
>
|
||||
> 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"
|
||||
|
||||
### Enumerazione di Entra ID
|
||||
### Enumerazione di Entra ID e Escalation dei Privilegi
|
||||
|
||||
Per impostazione predefinita, qualsiasi utente dovrebbe avere **sufficienti autorizzazioni per enumerare** cose come utenti, gruppi, ruoli, service principal... (controlla [autorizzazioni predefinite di AzureAD](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 AzureAD predefiniti](az-basic-information/index.html#default-user-permissions)).\
|
||||
Puoi trovare qui una guida:
|
||||
|
||||
{{#ref}}
|
||||
az-services/az-azuread.md
|
||||
{{#endref}}
|
||||
|
||||
> [!NOTE]
|
||||
> Ora che **hai alcune informazioni sulle tue credenziali** (e se sei un red team speriamo che **non sei stato rilevato**). È tempo di scoprire quali servizi vengono utilizzati nell'ambiente.\
|
||||
> Nella sezione seguente puoi controllare alcuni modi per **enumerare alcuni servizi comuni.**
|
||||
Controlla gli **Strumenti di Post-Exploitation** per trovare strumenti per escalare i privilegi in Entra ID come **AzureHound:**
|
||||
|
||||
## App Service SCM
|
||||
{{#ref}}
|
||||
az-enumeration-tools.md#automated-post-exploitation-tools
|
||||
{{#endref}}
|
||||
|
||||
Console Kudu per accedere al 'container' dell'App Service.
|
||||
|
||||
## Webshell
|
||||
### Enumerare i Servizi Azure
|
||||
|
||||
Usa portal.azure.com e seleziona la shell, oppure usa shell.azure.com, per un bash o powershell. Il 'disco' di questa shell è memorizzato come un file immagine in un storage-account.
|
||||
Una volta che sai chi sei, puoi iniziare a enumerare i **servizi Azure a cui hai accesso**.
|
||||
|
||||
## Azure DevOps
|
||||
Il comando Az PowerShell **`Get-AzResource`** ti consente di **conoscere le risorse su cui il tuo utente attuale ha visibilità**.
|
||||
|
||||
Azure DevOps è separato da Azure. Ha repository, pipeline (yaml o release), board, wiki e altro. I Gruppi di Variabili vengono utilizzati per memorizzare valori di variabili e segreti.
|
||||
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/<subscription-id>/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`**
|
||||
|
||||
Nella sezione seguente puoi trovare informazioni sui servizi Azure più comuni e su come enumerarli:
|
||||
|
||||
{{#ref}}
|
||||
az-services/
|
||||
{{#endref}}
|
||||
|
||||
### Escalation dei Privilegi, Post-Exploitation e Persistenza nei Servizi Azure
|
||||
|
||||
Una volta che sai come è strutturato l'ambiente Azure e quali servizi vengono utilizzati, puoi iniziare a cercare modi per **escalare i privilegi, muoverti lateralmente, eseguire altri attacchi di post-exploitation e mantenere la persistenza**.
|
||||
|
||||
Nella sezione seguente puoi trovare informazioni su come escalare i privilegi nei servizi Azure più comuni:
|
||||
|
||||
{{#ref}}
|
||||
az-privilege-escalation/
|
||||
{{#endref}}
|
||||
|
||||
Nella seguente puoi trovare informazioni su come eseguire attacchi di post-exploitation nei servizi Azure più comuni:
|
||||
|
||||
{{#ref}}
|
||||
az-post-exploitation/
|
||||
{{#endref}}
|
||||
|
||||
Nella seguente puoi trovare informazioni su come mantenere la persistenza nei servizi Azure più comuni:
|
||||
|
||||
{{#ref}}
|
||||
az-persistence/
|
||||
{{#endref}}
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
Reference in New Issue
Block a user