# UUID Insecurities {{#include ../banners/hacktricks-training.md}} ## 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 v**1**. > - 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: 1. **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\`. 2. **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\`. 3. **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. 4. **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/\\`). - 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. 5. **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**](https://github.com/Lupin-Holmes/sandwich) - Puoi rilevare questi tipi di UUID in Burp Suite con l'estensione [**UUID Detector**](https://portswigger.net/bappstore/65f32f209a72480ea5f1a0dac4f38248). ## References - [https://versprite.com/blog/universally-unique-identifiers/](https://versprite.com/blog/universally-unique-identifiers/) {{#include ../banners/hacktricks-training.md}}