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 : carlos

  • Mot 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 :

  1. Créer une nouvelle macro dans Burp Suite.

  • Inclure les requêtes suivantes dans la macro :

    • GET /login

    • POST /login

    • GET /login2

  1. 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

  1. Intercepter la requête POST contenant le paramètre mfa-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