Azure Pentesting
STO ANCORA COSTRUENDO LA METODOLOGIA AZURE
Informazioni di Base
Az - Basic InformationMetodologia Azure Pentester/Red Team
Per auditare un ambiente AZURE è molto importante sapere: quali servizi vengono utilizzati, cosa è esposto, chi ha accesso a cosa, e come sono collegati i servizi interni di Azure e i servizi esterni.
Dal punto di vista del Red Team, il primo passo per compromettere un ambiente Azure è riuscire a ottenere alcune credenziali per Azure AD. Ecco alcune idee su come farlo:
Leaks in github (o simili) - OSINT
Ingegneria Sociale
Riutilizzo delle password (password leaks)
Vulnerabilità nelle applicazioni ospitate su Azure
Server Side Request Forgery con accesso all'endpoint dei metadati
Lettura di File Locali
/home/USERNAME/.azure
C:\Users\USERNAME\.azure
Il file
accessTokens.json
inaz cli
prima della versione 2.30 - Gen2022 - memorizzava token di accesso in chiaroIl file
azureProfile.json
contiene informazioni sull'utente loggato.az logout
rimuove il token.Le versioni precedenti di
Az PowerShell
memorizzavano token di accesso in chiaro inTokenCache.dat
. Memorizza anche ServicePrincipalSecret in chiaro inAzureRmContext.json
. Il cmdletSave-AzContext
può essere utilizzato per memorizzare token. UsaDisconnect-AzAccount
per rimuoverli.3rd parties breached
Dipendente Interno
Phishing Comune (credenziali o Oauth App)
Anche se non hai compromesso nessun utente all'interno del tenant Azure che stai attaccando, puoi raccogliere alcune informazioni da esso:
Az - Unauthenticated Enum & Initial EntryDopo aver ottenuto le credenziali, devi sapere a chi appartengono quelle credenziali, e a cosa hanno accesso, quindi devi eseguire una base di enumerazione:
Enumerazione di Base
Ricorda che la parte più rumorosa dell'enumerazione è il login, non l'enumerazione stessa.
SSRF
Se hai trovato una SSRF in una macchina all'interno di Azure, controlla questa pagina per trucchi:
Bypassare le Condizioni di Login
Nei casi in cui hai alcune credenziali valide ma non puoi effettuare il login, queste sono alcune protezioni comuni che potrebbero essere in atto:
IP whitelisting -- Devi compromettere un IP valido
Restrizioni geografiche -- Scopri dove vive l'utente o dove sono gli uffici dell'azienda e ottieni un IP dalla stessa città (o almeno dal paese)
Browser -- Forse è consentito solo un browser da 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.
Subdomain Takeover
Whoami
Impara come installare az cli, AzureAD e Az PowerShell nella sezione Az - AzureAD.
Una delle prime cose che devi sapere è chi sei (in quale ambiente ti trovi):
Uno dei comandi più importanti per enumerare Azure è Get-AzResource
da Az PowerShell poiché ti permette di conoscere le risorse su cui il tuo utente corrente ha visibilità.
Puoi ottenere le stesse informazioni nella console web andando su https://portal.azure.com/#view/HubsExtension/BrowseAll o cercando "Tutte le risorse"
Enumerazione AzureAD
Per impostazione predefinita, qualsiasi utente dovrebbe avere abbastanza permessi per enumerare cose come utenti, gruppi, ruoli, service principals... (controlla permessi predefiniti di AzureAD). Puoi trovare qui una guida:
Az - AzureAD (AAD)Ora che hai alcune informazioni sulle tue credenziali (e se sei un red team speriamo che non sei stato rilevato). È il momento di capire quali servizi vengono utilizzati nell'ambiente. Nella sezione seguente puoi controllare alcuni modi per enumerare alcuni servizi comuni.
Service Principal e Access Policy
Un servizio Azure può avere una System Identity (del servizio stesso) o utilizzare una User Assigned Managed Identity. Questa Identità può avere una Access Policy per, ad esempio, un KeyVault per leggere i segreti. Queste Access Policies dovrebbero essere ristrette (principio del minimo privilegio), ma potrebbero avere più permessi del necessario. Tipicamente un App Service utilizzerebbe KeyVault per recuperare segreti e certificati.
Quindi è utile esplorare queste identità.
App Service SCM
Console Kudu per accedere al 'container' dell'App Service.
Webshell
Usa portal.azure.com e seleziona la shell, oppure usa shell.azure.com, per una bash o powershell. Il 'disco' di questa shell è memorizzato come un file immagine in un storage-account.
Azure DevOps
Azure DevOps è separato da Azure. Ha repository, pipelines (yaml o release), boards, wiki e altro. I Variable Groups sono utilizzati per memorizzare valori di variabili e segreti.
Strumenti di Recon Automatici
Last updated