6.9 KiB
UUID Insecurities
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Consultez les plans d'abonnement!
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs aux HackTricks et HackTricks Cloud dépôts github.
Basic Information
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 comme 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és en cinq groupes représentés par 32 chiffres hexadécimaux. Il existe différentes versions de UUID, chacune servant à des fins différentes :
- UUID v1 est basé sur le temps, incorporant l'horodatage, la séquence d'horloge et l'ID de 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 dans 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, c'est UUID v1.
- La position du N indique le variant de l'UUID. {% endhint %}
Sandwich attack
L'« attaque Sandwich » est un type spécifique d'attaque qui exploite la prévisibilité de la génération de UUID v1 dans les applications web, en particulier dans des fonctionnalités comme les réinitialisations de mot de passe. Le 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 peut le rendre quelque peu prévisible si un attaquant peut obtenir certains de ces UUID générés à proximité dans le temps.
Example
Imaginez une application web qui utilise 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é :
- Configuration initiale :
- L'attaquant contrôle deux comptes email : `attacker1@acme.com` et `attacker2@acme.com`.
- Le compte email de la cible est `victim@acme.com`.
- Exécution :
- L'attaquant déclenche une réinitialisation de mot de passe pour son premier compte (`attacker1@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 (`victim@acme.com`) puis rapidement pour le deuxième compte contrôlé par l'attaquant (`attacker2@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`.
- Analyse :
- L'attaquant a maintenant deux UUID générés à proximité dans le temps (`99874128` et `998796b4`). Étant donné la nature séquentielle des UUID basés sur le temps, le UUID pour le compte de la victime tombera probablement entre ces deux valeurs.
- 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/<generated-UUID>`).
- Si l'application web ne limite pas adéquatement le taux ou ne bloque pas de telles tentatives, l'attaquant peut rapidement tester tous les UUID possibles dans la plage.
- Accès obtenu :
- Une fois le bon UUID pour le lien de réinitialisation de mot de passe de la victime découvert, l'attaquant peut réinitialiser le mot de passe de la victime et obtenir un accès non autorisé à son compte.
Tools
- Vous pouvez effectuer l'attaque sandwich automatiquement avec l'outil : https://github.com/Lupin-Holmes/sandwich
- Vous pouvez détecter ces types de UUID dans Burp Suite avec l'extension UUID Detector.
References
{% hint style="success" %}
Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Consultez les plans d'abonnement!
- Rejoignez le 💬 groupe Discord ou le groupe telegram ou suivez nous sur Twitter 🐦 @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PRs aux HackTricks et HackTricks Cloud dépôts github.