5.3 KiB
Bezpieczeństwo UUID
Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakowania, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na GitHubie.
Podstawowe informacje
Uniwersalne unikalne identyfikatory (UUID) to 128-bitowe liczby używane do unikalnej identyfikacji informacji w systemach komputerowych. UUID są niezbędne w aplikacjach, gdzie wymagane są unikalne identyfikatory bez centralnej koordynacji. Są one często używane jako klucze baz 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. Mają określony format, podzielony 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 ujawnić informacje systemowe.
- UUID v2 jest podobny do v1, ale zawiera modyfikacje dla domen lokalnych (rzadko używany).
- UUID v3 i v5 generują UUID za pomocą 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 podwersja UUID zazwyczaj pojawia się na tej samej pozycji wewnątrz UUID. Na przykład w:
12345678 - abcd - 1a56 - a539 - 103755193864
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx
- Pozycja M wskazuje wersję UUID. W powyższym przykładzie jest to UUID v1.
- Pozycja N wskazuje wariant UUID. {% endhint %}
Atak kanapkowy
"Atak kanapkowy" to konkretny rodzaj ataku, który wykorzystuje przewidywalność generowania UUID v1 w aplikacjach internetowych, zwłaszcza 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 jest on w pewnym stopniu przewidywalny, jeśli atakujący może uzyskać niektóre z tych UUID wygenerowanych blisko w czasie.
Przykład
Wyobraź sobie aplikację internetową, która używa UUID v1 do generowania linków resetowania hasła. Oto jak atakujący może wykorzystać to do uzyskania nieautoryzowanego dostępu:
- Początkowe przygotowanie:
- Atakujący kontroluje dwa konta e-mail: `atakujący1@acme.com` i `atakujący2@acme.com`.
- Konto e-mail celu to `ofiara@acme.com`.
- Wykonanie:
- Atakujący inicjuje resetowanie hasła dla swojego pierwszego konta (`atakujący1@acme.com`) i otrzymuje link resetowania hasła z UUID, na przykład `99874128-7592-11e9-8201-bb2f15014a14`.
- Bezpośrednio po tym atakujący inicjuje resetowanie hasła dla konta ofiary (`ofiara@acme.com`) i następnie szybko dla drugiego kontrolowanego konta atakującego (`atakujący2@acme.com`).
- Atakujący otrzymuje link resetowania dla drugiego konta z UUID, na przykład `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 znajdzie się między tymi dwoma wartościami.
- Atak siłowy:
- Atakujący używa narzędzia do generowania UUID między tymi dwoma wartościami i testuje każdy wygenerowany UUID, próbując uzyskać dostęp do linku resetowania hasła (np. `https://www.acme.com/reset/<wygenerowany-UUID>`).
- Jeśli aplikacja internetowa nie ogranicza odpowiednio liczby prób lub blokuje takie próby, atakujący może szybko przetestować wszystkie możliwe UUID w zakresie.
- Uzyskanie dostępu:
- Po odkryciu poprawnego UUID dla linku resetowania hasła ofiary, atakujący może zresetować hasło ofiary i uzyskać nieautoryzowany dostęp do jej konta.
Narzędzia
- Możesz automatycznie przeprowadzić atak kanapkowy za pomocą narzędzia: https://github.com/Lupin-Holmes/sandwich
- Możesz wykryć ten rodzaj UUID w Burp Suite za pomocą rozszerzenia UUID Detector.