UUID Insecurities
Reading time: 4 minutes
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Basic Information
Gli Identificatori Universali Unici (UUID) sono numeri a 128 bit utilizzati per identificare univocamente le informazioni nei sistemi informatici. Gli UUID sono essenziali nelle applicazioni in cui sono necessari identificatori unici senza coordinamento centrale. Sono comunemente utilizzati come chiavi di database e possono riferirsi a vari elementi come documenti e sessioni.
Gli UUID sono progettati per essere unici e difficili da indovinare. Sono strutturati in un formato specifico, divisi in cinque gruppi rappresentati da 32 cifre esadecimali. Esistono diverse versioni di UUID, ognuna con scopi diversi:
- UUID v1 è basato sul tempo, incorporando il timestamp, la sequenza dell'orologio e l'ID del nodo (indirizzo MAC), ma può potenzialmente esporre informazioni di sistema.
- UUID v2 è simile a v1 ma include modifiche per domini locali (non ampiamente utilizzato).
- UUID v3 e v5 generano UUID utilizzando valori hash da namespace e nome, con v3 che utilizza MD5 e v5 che utilizza SHA-1.
- UUID v4 è generato quasi interamente in modo casuale, fornendo un alto livello di anonimato ma con un leggero rischio di duplicati.
tip
Nota che la versione e la sottoversione dell'UUID di solito appaiono nella stessa posizione all'interno dell'UUID. Ad esempio in:
12345678 - abcd - 1a56 - a539 - 103755193864
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
- La posizione della M indica la versione dell'UUID. Nell'esempio sopra, è UUID v1.
- La posizione della N indica la variante dell'UUID.
Sandwich attack
L'"Attacco Sandwich" è un tipo specifico di attacco che sfrutta la prevedibilità della generazione di UUID v1 nelle applicazioni web, in particolare in funzionalità come il ripristino della password. L'UUID v1 è generato in base al tempo, alla sequenza dell'orologio e all'indirizzo MAC del nodo, il che può renderlo in qualche modo prevedibile se un attaccante riesce a ottenere alcuni di questi UUID generati in un intervallo di tempo ravvicinato.
Example
Immagina un'applicazione web che utilizza UUID v1 per generare link di ripristino della password. Ecco come un attaccante potrebbe sfruttare questo per ottenere accesso non autorizzato:
- Initial Setup:
- L'attaccante ha il controllo su due account email: `attacker1@acme.com` e `attacker2@acme.com`.
- L'account email della vittima è `victim@acme.com`.
- Execution:
- L'attaccante attiva un ripristino della password per il suo primo account (`attacker1@acme.com`) e riceve un link di ripristino della password con un UUID, ad esempio `99874128-7592-11e9-8201-bb2f15014a14`.
- Immediatamente dopo, l'attaccante attiva un ripristino della password per l'account della vittima (`victim@acme.com`) e poi rapidamente per il secondo account controllato dall'attaccante (`attacker2@acme.com`).
- L'attaccante riceve un link di ripristino per il secondo account con un UUID, ad esempio `998796b4-7592-11e9-8201-bb2f15014a14`.
- Analysis:
- L'attaccante ora ha due UUID generati in un intervallo di tempo ravvicinato (`99874128` e `998796b4`). Data la natura sequenziale degli UUID basati sul tempo, l'UUID per l'account della vittima cadrà probabilmente tra questi due valori.
- Brute Force Attack:
- L'attaccante utilizza uno strumento per generare UUID tra questi due valori e testa ogni UUID generato tentando di accedere al link di ripristino della password (ad esempio, `https://www.acme.com/reset/<generated-UUID>`).
- Se l'applicazione web non limita adeguatamente il tasso o non blocca tali tentativi, l'attaccante può rapidamente testare tutti gli UUID possibili nell'intervallo.
- Access Gained:
- Una volta scoperto l'UUID corretto per il link di ripristino della password della vittima, l'attaccante può reimpostare la password della vittima e ottenere accesso non autorizzato al suo account.
Tools
- Puoi eseguire automaticamente l'attacco sandwich con lo strumento: https://github.com/Lupin-Holmes/sandwich
- Puoi rilevare questi tipi di UUID in Burp Suite con l'estensione UUID Detector.
References
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.