mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
66 lines
4.4 KiB
Markdown
66 lines
4.4 KiB
Markdown
# 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/\<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.
|
|
|
|
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}}
|