2FA bypass par attaque de force brute
2FA bypass using a brute-force attack
Ce laboratoire présente une authentification à deux facteurs vulnérable à une attaque par force brute. Les identifiants de l’utilisateur sont déjà connus, mais le code de vérification 2FA n’est pas accessible. L’objectif est de forcer le code MFA afin d’accéder au compte de Carlos.
Victime :
carlosMot de passe :
montoya

Contexte de l’authentification 2FA
Après une connexion réussie avec le nom d’utilisateur et le mot de passe, l’application demande un code MFA.
La requête envoyée côté serveur ressemble à ceci :
Problème rencontré
Lorsqu’on teste plusieurs codes MFA, le serveur indique que le token CSRF n’est plus valide.

L’application redirige alors automatiquement vers la page de login.
À chaque nouvel accès à la page de connexion, un nouveau token CSRF est généré.
Cela empêche une attaque de force brute directe sur le paramètre mfa-code.

Mise en place de la solution (Burp Suite)
Pour contourner cette protection, une macro est utilisée afin de régénérer automatiquement un token CSRF valide à chaque tentative.


Étapes :
Créer une nouvelle macro dans Burp Suite.

Inclure les requêtes suivantes dans la macro :
GET /loginPOST /loginGET /login2

Vérifier que la macro permet bien d’extraire un nouveau token CSRF à chaque exécution.

La macro est maintenant prête et fonctionnelle.
Attaque par force brute du code MFA
Intercepter la requête
POSTcontenant le paramètremfa-code.

Envoyer cette requête à Intruder.
Définir le payload sur le champ
mfa-code.Configurer une plage de valeurs de 0000 à 9999, avec un format à 4 chiffres obligatoires.

Associer la macro pour que le CSRF soit mis à jour automatiquement à chaque requête.

Résultat
Le token CSRF change correctement à chaque tentative.
Lorsqu’un code MFA valide est testé, la réponse du serveur diffère.
Le code correct est identifiable par une réponse
302 Found, indiquant une redirection réussie vers le compte utilisateur.

Mis à jour