mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-22 20:53:37 +00:00
92 lines
6.5 KiB
Markdown
92 lines
6.5 KiB
Markdown
# UUID Insecurities
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## Basic Information
|
|
|
|
Gli Identificatori Universali Unici (UUID) sono **numeri a 128 bit utilizzati per identificare in modo univoco 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 come 32 cifre esadecimali. Ci sono diverse versioni di UUID, ognuna delle quali serve a 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.
|
|
|
|
{% hint style="success" %}
|
|
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 di M** indica la **versione** dell'UUID. Nell'esempio sopra, è UUID v**1**.
|
|
* La **posizione di N** indica la variante dell'UUID.
|
|
{% endhint %}
|
|
|
|
## 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 breve intervallo di tempo.
|
|
|
|
### 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. **Impostazione Iniziale**:
|
|
|
|
* 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. **Esecuzione**:
|
|
|
|
* 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. **Analisi**:
|
|
|
|
* L'attaccante ora ha due UUID generati in un breve intervallo di tempo (\`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. **Attacco Brute Force:**
|
|
|
|
* 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 blocca tali tentativi, l'attaccante può rapidamente testare tutti gli UUID possibili nell'intervallo.
|
|
|
|
5. **Accesso Ottenuto:**
|
|
|
|
* 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/)
|
|
|
|
{% hint style="success" %}
|
|
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Support HackTricks</summary>
|
|
|
|
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
|
|
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
|
|
|
</details>
|
|
{% endhint %}
|