2
0
Fork 0
mirror of https://github.com/carlospolop/hacktricks synced 2025-02-21 08:28:27 +00:00
hacktricks/pentesting-web/uuid-insecurities.md

5.3 KiB

Bezpieczeństwo UUID

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

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:

  1. 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`.
  1. 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`.
  1. 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.
  1. 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.
  1. 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

Odnośniki