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 :
- Si vous souhaitez voir votre entreprise annoncée dans HackTricks ou télécharger HackTricks en PDF, consultez les PLANS D'ABONNEMENT !
- Obtenez le swag officiel PEASS & HackTricks
- Découvrez La famille PEASS, notre collection exclusive de NFT
- Rejoignez le 💬 groupe Discord ou le groupe Telegram ou suivez nous sur Twitter 🐦 @carlospolopm.
- Partagez vos astuces de piratage en soumettant des PR aux HackTricks et HackTricks Cloud dépôts GitHub.
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é :
- 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`.
- 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`.
- 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.
- 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.
- 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
- Vous pouvez effectuer l'attaque sandwich automatiquement avec l'outil : https://github.com/Lupin-Holmes/sandwich
- Vous pouvez détecter ce type d'UUID dans Burp Suite avec l'extension UUID Detector.