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

151 lines
11 KiB
Markdown
Raw Normal View History

# Contournement de l'authentification à deux facteurs (2FA/OTP)
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
* Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? Ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
2022-04-28 16:01:33 +00:00
</details>
## **Contournement de l'authentification à deux facteurs**
2022-04-28 16:01:33 +00:00
### **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é
2023-06-03 13:10:46 +00:00
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](https://srahulceh.medium.com/behind-the-scenes-of-a-security-bug-the-perils-of-2fa-cookie-generation-496d9519771b)).
### 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.\
2023-06-03 13:10:46 +00:00
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](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](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"
#### Cookie devinable
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
2022-04-28 16:01:33 +00:00
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.
2022-04-28 16:01:33 +00:00
### 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" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Partagez vos astuces de piratage en soumettant des PR au** [**repo hacktricks**](https://github.com/carlospolop/hacktricks) **et au** [**repo hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>