hacktricks/pentesting-web/uuid-insecurities.md

5.8 KiB

Vulnérabilités des UUID

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert de l'équipe rouge AWS de HackTricks)!

Autres façons de soutenir HackTricks :

Informations de base

Les Identifiants Universellement Uniques (UUID) sont des nombres de 128 bits utilisés pour identifier de manière unique des informations dans les systèmes informatiques. Les UUID sont essentiels dans les applications où des identifiants uniques sont nécessaires sans coordination centrale. Ils sont couramment utilisés comme clés de base de données et peuvent faire référence à divers éléments tels que des documents et des sessions.

Les UUID sont conçus pour être uniques et difficiles à deviner. Ils sont structurés dans un format spécifique, divisé en cinq groupes représentés par 32 chiffres hexadécimaux. Il existe différentes versions d'UUID, chacune servant à des fins différentes :

  • UUID v1 est basé sur le temps, incorporant le timestamp, la séquence d'horloge et l'ID du nœud (adresse MAC), mais il peut potentiellement exposer des informations système.
  • UUID v2 est similaire à v1 mais inclut des modifications pour les domaines locaux (peu utilisé).
  • UUID v3 et v5 génèrent des UUID en utilisant des valeurs de hachage à partir de l'espace de noms et du nom, v3 utilisant MD5 et v5 utilisant SHA-1.
  • UUID v4 est généré presque entièrement de manière aléatoire, offrant un haut niveau d'anonymat mais avec un léger risque de doublons.

{% hint style="success" %} Notez que la version et la sous-version de l'UUID apparaissent généralement à la même position à l'intérieur de l'UUID. Par exemple dans :
12345678 - abcd - 1a56 - a539 - 103755193864
xxxxxxxx - xxxx - Mxxx - Nxxx - xxxxxxxxxxxx

  • La position du M indique la version de l'UUID. Dans l'exemple ci-dessus, il s'agit de l'UUID v1.
  • La position du N indique la variante de l'UUID. {% endhint %}

Attaque Sandwich

L'« Attaque Sandwich » est un type spécifique d'attaque qui exploite la prévisibilité de la génération d'UUID v1 dans les applications web, en particulier dans des fonctionnalités telles que les réinitialisations de mot de passe. L'UUID v1 est généré en fonction du temps, de la séquence d'horloge et de l'adresse MAC du nœud, ce qui le rend quelque peu prévisible si un attaquant peut obtenir certains de ces UUID générés proches dans le temps.

Exemple

Imaginez une application web qui utilise l'UUID v1 pour générer des liens de réinitialisation de mot de passe. Voici comment un attaquant pourrait exploiter cela pour obtenir un accès non autorisé :

  1. Configuration initiale :
  • L'attaquant contrôle deux comptes e-mail : `attaquant1@acme.com` et `attaquant2@acme.com`.
  • Le compte e-mail de la cible est `victime@acme.com`.
  1. Exécution :
  • L'attaquant déclenche une réinitialisation de mot de passe pour son premier compte (`attaquant1@acme.com`) et reçoit un lien de réinitialisation de mot de passe avec un UUID, disons `99874128-7592-11e9-8201-bb2f15014a14`.
  • Immédiatement après, l'attaquant déclenche une réinitialisation de mot de passe pour le compte de la victime (`victime@acme.com`) puis rapidement pour le deuxième compte contrôlé par l'attaquant (`attaquant2@acme.com`).
  • L'attaquant reçoit un lien de réinitialisation pour le deuxième compte avec un UUID, disons `998796b4-7592-11e9-8201-bb2f15014a14`.
  1. Analyse :
  • L'attaquant a maintenant deux UUID générés proches dans le temps (`99874128` et `998796b4`). Compte tenu de la nature séquentielle des UUID basés sur le temps, l'UUID pour le compte de la victime se situera probablement entre ces deux valeurs.
  1. Attaque par Force Brute :
  • L'attaquant utilise un outil pour générer des UUID entre ces deux valeurs et teste chaque UUID généré en essayant d'accéder au lien de réinitialisation de mot de passe (par exemple, `https://www.acme.com/reset/<UUID-généré>`).
  • Si l'application web ne limite pas correctement le taux ou ne bloque pas de telles tentatives, l'attaquant peut rapidement tester tous les UUID possibles dans la plage.
  1. Accès Obtenu :
  • Une fois que le bon UUID pour le lien de réinitialisation de mot de passe de la victime est découvert, l'attaquant peut réinitialiser le mot de passe de la victime et obtenir un accès non autorisé à son compte.

Outils

Références