6.4 KiB
UUID Insecurities
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
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 v1.
- 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:
- 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`.
- 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`.
- 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.
- 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.
- 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
- Możesz wykrywać te typy UUID w Burp Suite za pomocą rozszerzenia UUID Detector.
References
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.