UUID Insecurities

Unterstütze HackTricks

Grundinformationen

Universell eindeutige Identifikatoren (UUIDs) sind 128-Bit-Zahlen, die verwendet werden, um Informationen in Computersystemen eindeutig zu identifizieren. UUIDs sind in Anwendungen, in denen eindeutige Identifikatoren ohne zentrale Koordination erforderlich sind, unerlässlich. Sie werden häufig als Datenbankschlüssel verwendet und können sich auf verschiedene Elemente wie Dokumente und Sitzungen beziehen.

UUIDs sind so konzipiert, dass sie einzigartig und schwer zu erraten sind. Sie sind in einem bestimmten Format strukturiert, das in fünf Gruppen unterteilt ist, die als 32 hexadezimale Ziffern dargestellt werden. Es gibt verschiedene Versionen von UUIDs, die jeweils unterschiedliche Zwecke erfüllen:

  • UUID v1 ist zeitbasiert und umfasst den Zeitstempel, die Uhrsequenz und die Knoten-ID (MAC-Adresse), kann jedoch potenziell Systeminformationen offenbaren.

  • UUID v2 ist ähnlich wie v1, enthält jedoch Modifikationen für lokale Domänen (nicht weit verbreitet).

  • UUID v3 und v5 generieren UUIDs unter Verwendung von Hashwerten aus Namespace und Name, wobei v3 MD5 und v5 SHA-1 verwendet.

  • UUID v4 wird fast vollständig zufällig generiert und bietet ein hohes Maß an Anonymität, birgt jedoch ein geringes Risiko von Duplikaten.

Beachte, dass die Version und Unterversion der UUID normalerweise an derselben Stelle innerhalb der UUID erscheint. Zum Beispiel in: 12345678 - abcd - 1a56 - a539 - 103755193864 xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx

  • Die Position des M zeigt die UUID Version an. Im obigen Beispiel ist es UUID v1.

  • Die Position des N zeigt die UUID-Variante an.

Sandwich-Angriff

Der "Sandwich-Angriff" ist eine spezifische Art von Angriff, die die Vorhersehbarkeit der UUID v1-Generierung in Webanwendungen ausnutzt, insbesondere bei Funktionen wie Passwortzurücksetzungen. UUID v1 wird basierend auf Zeit, Uhrsequenz und der MAC-Adresse des Knotens generiert, was es etwas vorhersehbar macht, wenn ein Angreifer einige dieser in kurzer Zeit generierten UUIDs erhalten kann.

Beispiel

Stell dir eine Webanwendung vor, die UUID v1 zur Generierung von Links für Passwortzurücksetzungen verwendet. So könnte ein Angreifer dies ausnutzen, um unbefugten Zugriff zu erlangen:

  1. Erste Einrichtung:

  • Der Angreifer hat Kontrolle über zwei E-Mail-Konten: `attacker1@acme.com` und `attacker2@acme.com`.

  • Das E-Mail-Konto des Ziels ist `victim@acme.com`.

  1. Ausführung:

  • Der Angreifer löst eine Passwortzurücksetzung für sein erstes Konto (`attacker1@acme.com`) aus und erhält einen Link zur Passwortzurücksetzung mit einer UUID, sagen wir `99874128-7592-11e9-8201-bb2f15014a14`.

  • Unmittelbar danach löst der Angreifer eine Passwortzurücksetzung für das Konto des Opfers (`victim@acme.com`) und dann schnell für das zweite, vom Angreifer kontrollierte Konto (`attacker2@acme.com`) aus.

  • Der Angreifer erhält einen Zurücksetzlink für das zweite Konto mit einer UUID, sagen wir `998796b4-7592-11e9-8201-bb2f15014a14`.

  1. Analyse:

  • Der Angreifer hat nun zwei UUIDs, die in kurzer Zeit generiert wurden (`99874128` und `998796b4`). Angesichts der sequenziellen Natur zeitbasierter UUIDs wird die UUID für das Konto des Opfers wahrscheinlich zwischen diesen beiden Werten liegen.

  1. Brute-Force-Angriff:

  • Der Angreifer verwendet ein Tool, um UUIDs zwischen diesen beiden Werten zu generieren und testet jede generierte UUID, indem er versucht, auf den Link zur Passwortzurücksetzung zuzugreifen (z. B. `https://www.acme.com/reset/<generated-UUID>`).

  • Wenn die Webanwendung solche Versuche nicht angemessen drosselt oder blockiert, kann der Angreifer schnell alle möglichen UUIDs im Bereich testen.

  1. Zugriff erlangt:

  • Sobald die korrekte UUID für den Zurücksetzlink des Opfers entdeckt wird, kann der Angreifer das Passwort des Opfers zurücksetzen und unbefugten Zugriff auf dessen Konto erlangen.

Werkzeuge

Referenzen

Unterstütze HackTricks

Last updated