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 l'authentification.

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 fait que définir 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).

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 essais), 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 l'envoi du code par 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 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 falsification de requête intersite (CSRF) ou de détournement de clic (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 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 double authentification (elle est donc directement contournée) ou ces points d'accès pourraient prendre en charge une version vulnérable de la double authentification.

APIs

Si vous constatez que la double authentification utilise une API située sous un répertoire /v* (comme "/v3/"), cela signifie probablement qu'il existe d'anciens points d'accès à l'API qui pourraient être vulnérables à une contournement de la double authentification.

Sessions précédentes

Lorsque la double authentification 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 double authentification, 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 de la double authentification 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 configurations incorrectes de CORS/vulnérabilités XSS et d'autres bugs qui vous permettent de "récupérer" les codes de secours à partir de la réponse de la requête de l'endpoint des codes de secours, alors l'attaquant pourrait voler les codes et contourner la double authentification 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 double authentification 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 double authentification

  1. Créez un compte et activez la double authentification.
  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 de saisir un code de double authentification, 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 🎥