2ïž2FA
Mindmap

Checklist
Méthode 1:
Changer le code 4XX en code 200 OK.
Méthode 2:
Intercepter la demande de 2FA avec burp
Forward la requĂȘte
Regarder si il n'y a pas de leak en réponse
Méthode 3:
Chercher d'éventuels leaks dans les fichiers JS.
Méthode 4:
VĂ©rifier si on peu utiliser plusieurs fois le mĂȘme code.
Méthode 5:
Vérifier si il y a un rate limit en tentant de brute force le code.
Tenter des contournements de rate limit génériques.
Vérifier si la fonction de resend ne réinitialise pas le compteur.
Méthode 6:
Vérifier si changer de mot de passe ou d'email désactive le 2FA.
Méthode 7:
Tester s'il est possible d'utiliser du clickjacking avec des iframes pour forcer l'utilisateur à désactiver son 2FA.
Méthode 8:
Tenter d'utiliser un code "null" ou "000000"
Méthode 9:
Tenter de passer la page de 2FA (https://target.com/login => https://target.com/account)
Utiliser le header referer pour faire croire à l'application qu'on est bien passé par cette étape.
Exemple:
GET /account
Host: target.com
Referer: https://target.com/login
Méthode 10:
Utiliser le code de validation de l'attaquant sur le compte d'une cible.
Méthode 11:
Essayer de gĂ©nĂ©rer 2 codes de vĂ©rifications pour le mĂȘme compte et regarder si celui-ci est bien changĂ© Ă chaque demande.
Méthode 12:
VĂ©rifier si la gĂ©nĂ©ration du code est basĂ© sur le moment de la demande en envoyant la demande exactement au mĂȘme moment. (race condition)
Méthode 13:
Manipulation des méthodes HTTP, URL, ParamÚtres (aléatoires ou malformés)
Méthode 14:
Se connecter sur des navigateurs différents puis vérifier si activer ou modifier les paramÚtres de 2FA déconnecte la premiÚre session.
Méthode 15:
VĂ©rifier la requĂȘte d'authentification avec puis sans 2FA permet parfois de relever quelques informations utiles.
Sans
RequĂȘte:
{"email" : "[email protected]" , "password" : " abc1234" , "mfa" : null , "code" : ""}
Réponse:
Location: https://target.com/user/dashboard
Avec
RequĂȘte:
{"email" : "[email protected]" , "password" : " abc1234" , "mfa" : true , "code" : ""}
Réponse:
Location: https://target.com/v1/proxy/authentication/authenticate
Dans ce cas, peut-ĂȘtre que si on modifie la requĂȘte en envoyant ceci avec le 2FA d'activĂ© on pourra bypass le bypass.
{"email" : "[email protected]" , "password" : " abc1234" , "mfa" : null , "code" : ""}
ou en allant directement sur le lien vers le dashboard.
Méthode 16:
Dans le cas ou le 2FA serait géré avec une appli mobile tier type Google authenticator. L'application devrait vous donner des codes de backup uniques à sauvegarder.
Dans ce cas, sélectionner la connexion avec le code de backup et vérifier la bonne validation de la fonctionnalité en entrant un code aléatoire. (Avec un peu de chance aucune vérification n'est faite)
ressource: https://medium.com/@ultranoob/weird-and-simple-2fa-bypass-without-any-test-b869e09ac261
Méthode 17:
Envoyer une demande de mot de passe oublié ave 2FA.
Entrer un mauvais code de vérification.
Si un code d'erreur est généré dans l'url, essayer de changer la valeur de ce code.
Méthode 18:
Si aprÚs plusieurs demandes de vérification sont raté, il arrive que certains site demande de se connecter avec username et password aprÚs 3 code de vérification raté par exemple.
Dans ce cas voici une technique pour bypass cette méthode.
Dans burp:
Récupérez les page de login et de vérification GET et POST dans le HTTP history.
Allez dans "Projet options" puis dans Session handling rules cliquez sur "Add"
Dans scope choisissez "include all URLs"
Ensuite, dans Details > Rule Actions, cliqez su "Add".
SĂ©lectionnez les requĂȘtes:
GET /login
POST /login
GET /verification
Cliquez sur "OK" puis sur "Test macro", dans la rĂ©ponse Ă la requĂȘte POST /verification, sĂ©lectionnez le dtexte de la demande de code (Veuillez entrer le code de vĂ©rification 4-digit)
Retournez dans Proxy > HTTP history.
Envoyez le POST /verification dans "Intruder".
Bruteforce le paramĂštre contenant le code de 0000 Ă 9999.
Méthode 19:
2FA implémenté en api REST (exp: /rest/login)
Exp: { "username":"user","pass":"password":"SecurityToken":"173572537"}
Vérifier si un des endpoints accepte SOAP (exp: /endpoint/Soap/version).
Si c'est le cas, Ă©crire un message sans SecurityToken et envoyer la requĂȘte.
Exp:
Si les dĂ©veloppeurs ont oubliĂ© d'implĂ©menter le 2FA dans les endpoints SOAP alors vous devriez ĂȘtre connectĂ©
Méthode 20:
Changer d'adresse email
Si un lien est envoyé à l'ancien email pour prévenir du changement et qu'il y a un lien permettant d'annuler le changement,
Suivre le lien (si il redirige vers la page de connexion)
Entrer ses identifiants
Si le second facteur n'est pas demandé alors la manipulation a fonctionné.
Méthode 21:
Vérifier si il existe une API d'une ancienne version qui n'avait pas encore le 2FA.
Méthode 22:
Vérifier la durée de validité du code.
Méthode 23:
Vérifier si passer par un lien tier contourne la demande de 2FA (lien de réinitialisation de mot de passe, lien dans une newsletter...)
Méthode 24:
Si utilisation de OAuth, tenter de se connecter en OAuth via un sous-domaine et vérifier si la demande de 2FA est effectuée.
Si il n'y a pas de 2FA sur le sous-domaine et que le cookie de session s'applique à des domaines qui demandent du 2FA vous devriez pouvoir ouvrir une session sans avoir besoin de passer par l'étape de 2FA.
Outils
MFASweep
MFASweep est un script powershell créé spécifiquement pour les contournements de MFA Microsoft (O365, Azure, ADFS...)
Exemple d'utilisation:
> Invoke-MFASweep -Username [email protected] -Password P@ssw0rd123!
ressource: https://github.com/dafthack/MFASweep
Mis Ă jour
Ce contenu vous a-t-il été utile�