hacktricks/pentesting-web/uuid-insecurities.md

93 lines
6.4 KiB
Markdown
Raw Normal View History

# 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
Uniwersalne identyfikatory unikalne (UUID) to **128-bitowe liczby używane do unikalnej identyfikacji informacji** w systemach komputerowych. UUID są niezbędne w aplikacjach, w których unikalne identyfikatory są konieczne bez centralnej koordynacji. Są powszechnie używane jako klucze w bazach danych i mogą odnosić się do różnych elementów, takich jak dokumenty i sesje.
UUID są zaprojektowane tak, aby były unikalne i **trudne do odgadnięcia**. Są strukturalnie zorganizowane w określonym formacie, podzielone na pięć grup reprezentowanych jako 32 cyfry szesnastkowe. Istnieją różne wersje UUID, z których każda służy innym celom:
* **UUID v1** jest oparty na czasie, zawiera znacznik czasu, sekwencję zegara i identyfikator węzła (adres MAC), ale może potencjalnie ujawniać informacje o systemie.
* **UUID v2** jest podobny do v1, ale zawiera modyfikacje dla lokalnych domen (nie jest szeroko stosowany).
* **UUID v3 i v5** generują UUID przy użyciu wartości skrótu z przestrzeni nazw i nazwy, przy czym v3 używa MD5, a v5 używa SHA-1.
* **UUID v4** jest generowany prawie całkowicie losowo, zapewniając wysoki poziom anonimowości, ale z niewielkim ryzykiem duplikatów.
{% hint style="success" %}
Zauważ, że wersja i subwersja UUID zazwyczaj pojawiają się w tym samym miejscu w UUID. Na przykład w:\
12345678 - abcd - 1a56 - a539 - 103755193864\
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
* **Pozycja M** wskazuje na **wersję** UUID. W powyższym przykładzie to UUID v**1**.
* **Pozycja N** wskazuje na wariant UUID.
{% endhint %}
## Sandwich attack
Atak "Sandwich" to specyficzny rodzaj ataku, który **wykorzystuje przewidywalność generacji UUID v1 w aplikacjach internetowych**, szczególnie w funkcjach takich jak resetowanie hasła. UUID v1 jest generowany na podstawie czasu, sekwencji zegara i adresu MAC węzła, co może sprawić, że będzie on w pewnym stopniu przewidywalny, jeśli atakujący uzyska niektóre z tych UUID wygenerowanych blisko w czasie.
### Example
Wyobraź sobie aplikację internetową, która używa UUID v1 do generowania linków do resetowania hasła. Oto jak atakujący może to wykorzystać, aby uzyskać nieautoryzowany dostęp:
1. **Początkowa konfiguracja**:
* Atakujący ma kontrolę nad dwoma kontami e-mail: \`attacker1@acme.com\` i \`attacker2@acme.com\`.
* Konto e-mail ofiary to \`victim@acme.com\`.
2. **Wykonanie**:
* Atakujący inicjuje reset hasła dla swojego pierwszego konta (\`attacker1@acme.com\`) i otrzymuje link do resetowania hasła z UUID, powiedzmy \`99874128-7592-11e9-8201-bb2f15014a14\`.
* Natychmiast po tym atakujący inicjuje reset hasła dla konta ofiary (\`victim@acme.com\`) a następnie szybko dla drugiego konta kontrolowanego przez atakującego (\`attacker2@acme.com\`).
* Atakujący otrzymuje link do resetowania hasła dla drugiego konta z UUID, powiedzmy \`998796b4-7592-11e9-8201-bb2f15014a14\`.
3. **Analiza**:
* Atakujący ma teraz dwa UUID wygenerowane blisko w czasie (\`99874128\` i \`998796b4\`). Biorąc pod uwagę sekwencyjny charakter UUID opartych na czasie, UUID dla konta ofiary prawdopodobnie będzie mieścił się pomiędzy tymi dwoma wartościami.
4. **Atak brute force**:
* Atakujący używa narzędzia do generowania UUID pomiędzy tymi dwoma wartościami i testuje każdy wygenerowany UUID, próbując uzyskać dostęp do linku do resetowania hasła (np. \`https://www.acme.com/reset/\<generated-UUID>\`).
* Jeśli aplikacja internetowa nie ogranicza odpowiednio liczby prób lub nie blokuje takich prób, atakujący może szybko przetestować wszystkie możliwe UUID w tym zakresie.
5. **Uzyskany dostęp**:
* Gdy poprawny UUID dla linku do resetowania hasła ofiary zostanie odkryty, atakujący może zresetować hasło ofiary i uzyskać nieautoryzowany dostęp do jej konta.
### Tools
* Możesz automatycznie przeprowadzić atak sandwich za pomocą narzędzia: [**https://github.com/Lupin-Holmes/sandwich**](https://github.com/Lupin-Holmes/sandwich)
* Możesz wykrywać te typy UUID w Burp Suite za pomocą rozszerzenia [**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 %}