Az - Illicit Consent Grant
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Le applicazioni Azure richiedono permessi per accedere ai dati dell'utente (informazioni di base, ma anche accesso a documenti, invio di email...).
Se consentito, un utente normale può concedere il consenso solo per i "permessi a basso impatto". In tutti gli altri casi, è richiesto il consenso dell'amministratore.
GA
, ApplicationAdministrator
, CloudApplication
Administrator
e un ruolo personalizzato che include il permesso di concedere permessi alle applicazioni
possono fornire consenso a livello di tenant.
Solo i permessi che non richiedono il consenso dell'amministratore sono classificati come a basso impatto. Questi sono i permessi richiesti per l'accesso di base come openid, profile, email, User.Read e offline_access. Se un'organizzazione consente il consenso degli utenti per tutte le app, un dipendente può concedere il consenso a un'app per leggere quanto sopra dal proprio profilo.
Pertanto, un attaccante potrebbe preparare un App malevola e con un phishing, far sì che l'utente accetti l'App e rubi i suoi dati.
Non autenticato: Da un account esterno creare un'applicazione con i permessi User.Read
e User.ReadBasic.All
, ad esempio, phishing di un utente, e sarai in grado di accedere alle informazioni della directory.
Questo richiede che l'utente phishing possa accettare app OAuth da ambienti esterni!
Autenticato: Dopo aver compromesso un principale con privilegi sufficienti, creare un'applicazione all'interno dell'account e phishing di un utente privilegiato che può accettare permessi OAuth privilegiati.
In questo caso puoi già accedere alle informazioni della directory, quindi il permesso User.ReadBasic.All
non è più interessante.
Probabilmente sei interessato a permessi che richiedono un amministratore per concederli, perché un utente normale non può dare alcun permesso alle app OAuth, ecco perché devi phishing solo quegli utenti (più avanti parleremo di quali ruoli/permissi concedono questo privilegio)
Il seguente comando PowerShell viene utilizzato per controllare la configurazione del consenso per gli utenti in Azure Active Directory (Azure AD) riguardo alla loro capacità di concedere consenso alle applicazioni:
Disabilita il consenso degli utenti: Questa impostazione proibisce agli utenti di concedere permessi alle applicazioni. Non è consentito alcun consenso degli utenti alle applicazioni.
Gli utenti possono acconsentire a app di editori verificati o della tua organizzazione, ma solo per i permessi che selezioni: Questa impostazione consente a tutti gli utenti di acconsentire solo a applicazioni pubblicate da un editore verificato e a applicazioni registrate nel proprio tenant. Aggiunge un livello di controllo consentendo il consenso solo per permessi specifici.
Gli utenti possono acconsentire a tutte le app: Questa impostazione è più permissiva e consente a tutti gli utenti di acconsentire a qualsiasi permesso per le applicazioni, purché tali permessi non richiedano il consenso amministrativo.
Politica di consenso per app personalizzata: Questa impostazione indica che è in atto una politica personalizzata, che può essere adattata a requisiti organizzativi specifici e può comportare una combinazione di restrizioni basate sull'editore dell'app, sui permessi richiesti dall'app e su altri fattori.
In un attacco di consenso illecito, gli attaccanti ingannano gli utenti finali inducendoli a concedere permessi a un'applicazione malevola registrata con Azure. Questo avviene facendo apparire l'applicazione legittima, portando le vittime a cliccare inconsapevolmente su un pulsante "Accetta". Di conseguenza, Azure AD emette un token al sito dell'attaccante, consentendo loro di accedere e manipolare i dati della vittima, come leggere o inviare email e accedere a file, senza necessitare di un account organizzativo.
L'attacco coinvolge diversi passaggi mirati a una azienda generica. Ecco come potrebbe svolgersi:
Registrazione del Dominio e Hosting dell'Applicazione: L'attaccante registra un dominio che somiglia a un sito affidabile, ad esempio, "safedomainlogin.com". Sotto questo dominio, viene creato un sottodominio (ad es., "companyname.safedomainlogin.com") per ospitare un'applicazione progettata per catturare codici di autorizzazione e richiedere token di accesso.
Registrazione dell'Applicazione in Azure AD: L'attaccante registra quindi un'Applicazione Multi-Tenant nel proprio Tenant di Azure AD, chiamandola con il nome dell'azienda target per apparire legittima. Configura l'URL di reindirizzamento dell'applicazione per puntare al sottodominio che ospita l'applicazione malevola.
Impostazione dei Permessi: L'attaccante configura l'applicazione con vari permessi API (ad es., Mail.Read
, Notes.Read.All
, Files.ReadWrite.All
, User.ReadBasic.All
, User.Read
). Questi permessi, una volta concessi dall'utente, consentono all'attaccante di estrarre informazioni sensibili per conto dell'utente.
Distribuzione di Link Malevoli: L'attaccante crea un link contenente l'ID client dell'applicazione malevola e lo condivide con gli utenti target, ingannandoli per concedere il consenso.
L'attacco può essere facilitato utilizzando strumenti come 365-Stealer.
Se l'attaccante ha un certo livello di accesso a un utente nell'organizzazione vittima, potrebbe controllare se la politica dell'organizzazione consente all'utente di accettare app:
Per eseguire l'attacco, l'attaccante dovrebbe creare una nuova App nel proprio Tenant Azure (in Registrazioni app), configurata con i permessi:
User.ReadBasic.All
è all'interno di Microsoft Graph
in Permessi delegati
. (I permessi dell'applicazione richiederanno sempre un'approvazione extra).
User.ReadBasic.All
è il permesso che ti permetterà di leggere le informazioni di tutti gli utenti nell'organizzazione se concesso.
Ricorda che solo GA
, ApplicationAdministrator
, CloudApplication
Administrator
e un ruolo personalizzato che include permesso di concedere permessi alle applicazioni
possono fornire consenso a livello di tenant. Quindi, dovresti phishing un utente con uno di quei ruoli se vuoi che approvi un App che richiede consenso da parte dell'amministratore.
Puoi anche creare un'App tramite cli con:
Controlla https://www.alteredsecurity.com/post/introduction-to-365-stealer per imparare come configurarlo.
Nota che il token di accesso ottenuto sarà per il graph endpoint con gli ambiti: User.Read
e User.ReadBasic.All
(le autorizzazioni richieste). Non sarai in grado di eseguire altre azioni (ma queste sono sufficienti per scaricare informazioni su tutti gli utenti nell'organizzazione).
Puoi anche utilizzare questo strumento per eseguire questo attacco.
Una volta ottenuto l'accesso all'utente, puoi fare cose come rubare documenti sensibili e persino caricare file di documenti compromessi.
Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)