hacktricks/pentesting-web/2fa-bypass.md

10 KiB

Contournement de l'authentification à deux facteurs (2FA/OTP)

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Contournement de l'authentification à deux facteurs

Contournement direct

Pour contourner le 2FA, essayez d'accéder directement au point de terminaison suivant (vous devez connaître le chemin du point de terminaison suivant). Si cela ne fonctionne pas, essayez de modifier l'en-tête Referrer comme si vous veniez de la page 2FA.

Réutilisation de token

Peut-être pouvez-vous réutiliser un token précédemment utilisé dans le compte pour vous authentifier.

Partage de tokens inutilisés

Vérifiez si vous pouvez obtenir le token de votre compte et essayez de l'utiliser pour contourner le 2FA dans un compte différent.

Token divulgué

Le token est-il divulgué dans une réponse de l'application web ?

Lien de vérification par e-mail

Essayez d'utiliser le lien de vérification par e-mail reçu lors de la création du compte pour voir si, même si le 2FA a été configuré, vous pouvez toujours accéder à votre profil juste avec ce lien (post).

Permission de session

En utilisant la même session, commencez le flux en utilisant votre compte et celui de la victime. Lorsque vous atteignez le point 2FA sur les deux comptes, complétez le 2FA avec votre compte mais n'accédez pas à la partie suivante. Au lieu de cela, essayez d'accéder à l'étape suivante avec le flux du compte de la victime. Si le back-end a seulement défini un booléen dans vos sessions indiquant que vous avez réussi à passer le 2FA, vous pourrez contourner le 2FA de la victime.

Fonction de réinitialisation de mot de passe

Dans presque toutes les applications web, la fonction de réinitialisation de mot de passe connecte automatiquement l'utilisateur à l'application après que la procédure de réinitialisation soit terminée.
Vérifiez si un mail est envoyé avec un lien pour réinitialiser le mot de passe et si vous pouvez réutiliser ce lien pour réinitialiser le mot de passe autant de fois que vous le souhaitez (même si la victime change son adresse e-mail).

Une autre option pour contourner le 2FA avec la fonctionnalité de réinitialisation de mot de passe est de réinitialiser le mot de passe avec accès au mail et d'utiliser le nouveau mot de passe pour se connecter, il se pourrait que le 2FA ne soit pas utilisé après un changement de mot de passe.

OAuth

Si vous pouvez compromettre le compte de l'utilisateur sur une plateforme OAuth de confiance (Google, Facebook...)

Force brute

Absence de limite de taux

Y a-t-il une limite au nombre de codes que vous pouvez essayer, afin que vous puissiez simplement les forcer brutalement ? Faites attention à une possible limite de taux "silencieuse", essayez toujours plusieurs codes puis le vrai pour confirmer la vulnérabilité.

Limite de taux de flux mais pas de limite de taux

Dans ce cas, il y a une limite de taux de flux (vous devez le forcer très lentement : 1 thread et un peu de sommeil avant 2 essais) mais pas de limite de taux. Donc, avec suffisamment de temps, vous pourrez trouver le code valide.

Renvoyer le code et réinitialiser la limite

Il y a une limite de taux mais lorsque vous "renvoyez le code", le même code est envoyé et la limite de taux est réinitialisée. Ensuite, vous pouvez forcer le code tout en le renvoyant afin que la limite de taux ne soit jamais atteinte.

Contournement de la limite de taux côté client

{% content-ref url="rate-limit-bypass.md" %} rate-limit-bypass.md {% endcontent-ref %}

Absence de limite de taux dans le compte de l'utilisateur

Parfois, vous pouvez configurer le 2FA pour certaines actions à l'intérieur de votre compte (changer de mail, mot de passe...). Cependant, même dans les cas où il y a une limite de taux lorsque vous avez essayé de vous connecter, il n'y a aucune limite de taux pour protéger les actions à l'intérieur du compte.

Absence de limite de taux pour renvoyer le code par SMS

Vous ne pourrez pas contourner le 2FA mais vous pourrez gaspiller l'argent de l'entreprise.

Régénération infinie d'OTP

Si vous pouvez générer un nouvel OTP un nombre infini de fois, que l'OTP est assez simple (4 chiffres), et que vous pouvez essayer jusqu'à 4 ou 5 tokens par OTP généré, vous pouvez simplement essayer les mêmes 4 ou 5 tokens à chaque fois et générer des OTP jusqu'à ce qu'il corresponde à ceux que vous utilisez.

Condition de course

Consultez la section sur le contournement du 2FA de la page suivante :

{% content-ref url="race-condition.md" %} race-condition.md {% endcontent-ref %}

CSRF/Clickjacking

Vérifiez s'il y a une vulnérabilité de Cross Site Request Forgery (CSRF) ou de Clickjacking pour désactiver le 2FA.

Fonctionnalité "Se souvenir de moi"

Si la fonctionnalité "se souvenir de moi" utilise un nouveau cookie avec un code devinable, essayez de le deviner.

Adresse IP

Si la fonctionnalité "se souvenir de moi" est attachée à votre adresse IP, vous pouvez essayer de déterminer l'adresse IP de la victime et de l'usurper en utilisant l'en-tête X-Forwarded-For.

Anciennes versions

Sous-domaines

Si vous pouvez trouver des sous-domaines "de test" avec la fonctionnalité de connexion, ils pourraient utiliser d'anciennes versions qui ne prennent pas en charge le 2FA (donc il est directement contourné) ou ces points de terminaison pourraient supporter une version vulnérable du 2FA.

APIs

Si vous trouvez que le 2FA utilise une API située sous un répertoire /v*/ (comme "/v3/"), cela signifie probablement qu'il existe des points de terminaison d'API plus anciens qui pourraient être vulnérables à une sorte de contournement du 2FA.

Sessions précédentes

Lorsque le 2FA est activé, les sessions précédemment créées devraient être terminées. Cela est dû au fait que lorsqu'un client a son compte compromis, il pourrait vouloir le protéger en activant le 2FA, mais si les sessions précédentes ne sont pas terminées, cela ne le protégera pas.

Contrôle d'accès inapproprié aux codes de secours

Les codes de secours sont générés immédiatement après l'activation du 2FA et sont disponibles sur une seule requête. Après chaque appel ultérieur à la requête, les codes peuvent être régénérés ou rester inchangés (codes statiques). S'il y a des mauvaises configurations CORS/vulnérabilités XSS et d'autres bugs qui vous permettent de "tirer" les codes de secours de la requête de réponse du point de terminaison des codes de secours, alors l'attaquant pourrait voler les codes et contourner le 2FA si le nom d'utilisateur et le mot de passe sont connus.

Divulgation d'informations

Si vous remarquez que certaines informations confidentielles apparaissent sur la page 2FA que vous ne connaissiez pas auparavant (comme le numéro de téléphone), cela peut être considéré comme une vulnérabilité de divulgation d'informations.

Réinitialisation du mot de passe == désactivation du 2FA

  1. Créez un compte et activez le 2FA.
  2. Déconnectez-vous de ce compte.
  3. Maintenant, allez à la page de réinitialisation du mot de passe oublié.
  4. Changez votre mot de passe.
  5. Maintenant, essayez de vous connecter.
  6. Si on ne vous demande pas d'entrer un code 2FA, vous pouvez le signaler.

Références

{% embed url="https://medium.com/@iSecMax/two-factor-authentication-security-testing-and-possible-bypasses-f65650412b35" %}

{% embed url="https://azwi.medium.com/2-factor-authentication-bypass-3b2bbd907718" %}

Apprenez le piratage AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :