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

11 KiB

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

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Contournement de l'authentification à deux facteurs

Contournement direct

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

Réutilisation du jeton

Il est possible de réutiliser un jeton précédemment utilisé à l'intérieur du compte pour s'authentifier.

Partage de jetons inutilisés

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

Jeton divulgué

Le jeton 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 était activé, vous pouvez toujours accéder à votre profil uniquement avec ce lien (post).

Autorisation de session

En utilisant la même session, démarrez le flux en utilisant votre compte et le compte de la victime. Lorsque vous atteignez le point 2FA sur les deux comptes, terminez 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 ne définit qu'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 du mot de passe

Dans presque toutes les applications web, la fonction de réinitialisation du mot de passe connecte automatiquement l'utilisateur à l'application une fois la procédure de réinitialisation terminée.
Vérifiez si un e-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 du mot de passe est de réinitialiser le mot de passe avec accès à l'e-mail et d'utiliser le nouveau mot de passe pour vous connecter, il est possible qu'après un changement de mot de passe, le 2FA ne soit pas utilisé.

OAuth

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

Brute force

Absence de limite de taux

Y a-t-il une limite sur le nombre de codes que vous pouvez essayer, afin que vous puissiez simplement effectuer une attaque par force brute ? Faites attention à une éventuelle limite de taux "silencieuse", essayez toujours plusieurs codes, puis le vrai pour confirmer la vulnérabilité.

Limite de débit du flux mais pas de limite de taux

Dans ce cas, il y a une limite de débit du flux (vous devez effectuer une attaque par force brute très lentement : 1 thread et une pause avant 2 tentatives), mais pas de limite de taux. Donc, avec suffisamment de temps, vous pouvez trouver le code valide.

Renvoi du code et réinitialisation de la limite

Il y a une limite de taux, mais lorsque vous "renvoyez le code", le même code est renvoyé et la limite de taux est réinitialisée. Ensuite, vous pouvez effectuer une attaque par force brute du code tout en le renvoyant, de sorte que la limite de taux n'est 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 (changement d'e-mail, de mot de passe...). Cependant, même dans les cas où il y a une limite de taux lorsque vous essayez 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 lors de la réception du code via SMS

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

Régénération infinie de l'OTP

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

Condition de concurrence

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

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

CSRF/Clickjacking

Vérifiez s'il existe une vulnérabilité de Cross Site Request Forgery (CSRF) ou de Clickjacking pour désactiver la 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 liée à votre adresse IP, vous pouvez essayer de déterminer l'adresse IP de la victime et vous faire passer pour elle en utilisant l'en-tête X-Forwarded-For.

Anciennes versions

Sous-domaines

Si vous trouvez des sous-domaines de "test" avec la fonctionnalité de connexion, ils pourraient utiliser d'anciennes versions qui ne prennent pas en charge la 2FA (donc elle est contournée directement) ou ces points d'extrémité pourraient prendre en charge une version vulnérable de la 2FA.

APIs

Si vous constatez que la 2FA utilise une API située sous un répertoire /v* (comme "/v3/"), cela signifie probablement qu'il existe d'anciens points d'extrémité d'API qui pourraient être vulnérables à une certaine forme de contournement de la 2FA.

Sessions précédentes

Lorsque la 2FA est activée, les sessions précédentes créées doivent être terminées. Cela est nécessaire car lorsqu'un client voit son compte compromis, il peut vouloir le protéger en activant la 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 sauvegarde

Les codes de sauvegarde sont générés immédiatement après l'activation de la 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 existe des erreurs de configuration CORS/XSS et d'autres bugs qui permettent de "tirer" les codes de sauvegarde de la réponse de la requête de l'endpoint du code de sauvegarde, alors l'attaquant pourrait voler les codes et contourner la 2FA si le nom d'utilisateur et le mot de passe sont connus.

Divulgation d'informations

Si vous remarquez des informations confidentielles apparaissant sur la page de la 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 de la 2FA

  1. Créez un compte et activez la 2FA.
  2. Déconnectez-vous de ce compte.
  3. Maintenant, allez sur la page de réinitialisation du mot de passe.
  4. Changez votre mot de passe.
  5. Essayez maintenant 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" %}

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥