# Bypass de 2FA/OTP
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PRs al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
## **Bypass de autenticación de dos factores** ### **Bypass directo** Para saltarse el 2FA, simplemente **intenta acceder directamente al siguiente punto final** (necesitas conocer la ruta del siguiente punto final). Si esto no funciona, intenta cambiar el **encabezado Referrer** como si vinieras de la página de 2FA. ### **Reutilización de token** Tal vez puedas reutilizar un token previamente utilizado dentro de la cuenta para autenticarte. ### Compartir tokens no utilizados Verifica si puedes obtener el token de tu cuenta y trata de usarlo para saltarte el 2FA en una cuenta diferente. ### Token filtrado ¿Se filtró el token en una respuesta de la aplicación web? ### Enlace de verificación de correo electrónico Intenta usar el **enlace de verificación de correo electrónico recibido cuando se creó la cuenta** para ver si, incluso si se configuró el 2FA, aún puedes acceder a tu perfil solo con ese enlace ([publicación](https://srahulceh.medium.com/behind-the-scenes-of-a-security-bug-the-perils-of-2fa-cookie-generation-496d9519771b)). ### Permiso de sesión Usando la misma sesión, inicia el flujo utilizando tu cuenta y la cuenta de la víctima. Cuando llegues al punto de 2FA en ambas cuentas, completa el 2FA con tu cuenta pero no accedas a la siguiente parte. En lugar de eso, intenta acceder al siguiente paso con el flujo de la cuenta de la víctima. Si el backend solo establece un booleano dentro de tus sesiones diciendo que has pasado el 2FA con éxito, podrás saltarte el 2FA de la víctima. ### Función de restablecimiento de contraseña En casi todas las aplicaciones web, la **función de restablecimiento de contraseña inicia sesión automáticamente** al completar el procedimiento de restablecimiento.\ Verifica si se envía un **correo** con un **enlace** para **restablecer la contraseña** y si puedes **reutilizar** ese **enlace** para restablecer la contraseña tantas veces como desees (incluso si la víctima cambia su dirección de correo electrónico). ### OAuth Si puedes comprometer la cuenta del usuario en una plataforma de **OAuth** confiable (Google, Facebook...) ### Fuerza bruta #### Falta de límite de velocidad ¿Hay algún límite en el número de códigos que puedes probar, para que puedas simplemente hacer fuerza bruta? Ten cuidado con un posible límite de velocidad "silencioso", siempre prueba varios códigos y luego el real para confirmar la vulnerabilidad. #### Límite de flujo pero sin límite de velocidad En este caso, hay un límite de flujo (tienes que hacer fuerza bruta muy lentamente: 1 hilo y algo de espera antes de 2 intentos) pero no hay límite de velocidad. Entonces, con suficiente tiempo, puedes encontrar el código válido. #### Reenviar el código y restablecer el límite Hay un límite de velocidad, pero cuando "reenvías el código", se envía el mismo código y se restablece el límite de velocidad. Entonces, puedes hacer fuerza bruta en el código mientras lo reenvías para que nunca se alcance el límite de velocidad. #### Bypass del límite de velocidad del lado del cliente {% content-ref url="rate-limit-bypass.md" %} [rate-limit-bypass.md](rate-limit-bypass.md) {% endcontent-ref %} #### Falta de límite de velocidad en la cuenta del usuario A veces puedes configurar el 2FA para algunas acciones dentro de tu cuenta (cambiar correo electrónico, contraseña...). Sin embargo, incluso en los casos en que hay un límite de velocidad cuando intentaste iniciar sesión, no hay ningún límite de velocidad para proteger las acciones dentro de la cuenta. #### Falta de límite de velocidad al reenviar el código por SMS No podrás saltarte el 2FA, pero podrás hacer que la empresa gaste dinero. #### Regeneración infinita de OTP Si puedes **generar un nuevo OTP infinitas veces**, el OTP es lo suficientemente **simple** (4 números) y puedes probar hasta 4 o 5 tokens por OTP generado, simplemente prueba los mismos 4 o 5 tokens cada vez y genera OTP hasta que coincida con los que estás usando. ### Condición de carrera Consulta la sección sobre el bypass de 2FA en la siguiente página: {% content-ref url="race-condition.md" %} [race-condition.md](race-condition.md) {% endcontent-ref %} ### CSRF/Clickjacking Verifica si hay una vulnerabilidad de Cross Site Request Forgery (CSRF) o Clickjacking para desactivar el 2FA. ### Funcionalidad de recordarme #### Cookie adivinable Si la funcionalidad de "recordarme" utiliza una nueva cookie con un código adivinable, intenta adivinarlo. #### Dirección IP Si la funcionalidad de "recordarme" está vinculada a tu dirección IP, puedes intentar averiguar la dirección IP de la víctima e impersonarla utilizando el encabezado **X-Forwarded-For**. ### Versiones antiguas #### Subdominios Si puedes encontrar algunos subdominios de "pruebas" con la funcionalidad de inicio de sesión, es posible que estén utilizando versiones antiguas que no admiten la autenticación de dos factores (por lo que se omite directamente) o esos puntos finales podrían admitir una versión vulnerable de la autenticación de dos factores. #### APIs Si descubres que la autenticación de dos factores utiliza una API ubicada en un directorio /v\* (como "/v3/"), esto probablemente significa que hay puntos finales de API antiguos que podrían ser vulnerables a algún tipo de omisión de la autenticación de dos factores. ### Sesiones anteriores Cuando se habilita la autenticación de dos factores, las sesiones anteriores creadas deben finalizarse. Esto se debe a que cuando un cliente tiene su cuenta comprometida, puede querer protegerla activando la autenticación de dos factores, pero si las sesiones anteriores no se finalizan, esto no lo protegerá. ### Control de acceso inadecuado a códigos de respaldo Los códigos de respaldo se generan inmediatamente después de habilitar la autenticación de dos factores y están disponibles en una sola solicitud. Después de cada llamada subsiguiente a la solicitud, los códigos pueden regenerarse o permanecer sin cambios (códigos estáticos). Si existen configuraciones incorrectas de CORS/vulnerabilidades de XSS y otros errores que permiten "extraer" los códigos de respaldo de la solicitud de respuesta del punto final del código de respaldo, entonces el atacante podría robar los códigos y omitir la autenticación de dos factores si se conocen el nombre de usuario y la contraseña. ### Divulgación de información Si notas que aparece información confidencial en la página de autenticación de dos factores que no conocías previamente (como el número de teléfono), esto se puede considerar una vulnerabilidad de divulgación de información. ### **Restablecimiento de contraseña == desactivar la autenticación de dos factores** 1. Crea una cuenta y activa la autenticación de dos factores. 2. Cierra sesión en esa cuenta. 3. Ahora, ve a la página de restablecimiento de contraseña olvidada. 4. Cambia tu contraseña. 5. Ahora intenta iniciar sesión. 6. Si no se te solicita ingresar un código de autenticación de dos factores, puedes informarlo. ## Referencias {% 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 🎥 * ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)! * Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family) * Obtén el [**swag oficial de PEASS y HackTricks**](https://peass.creator-spring.com) * **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo de Discord**](https://discord.gg/hRep4RUj7f) o al [**grupo de Telegram**](https://t.me/peass) o **sígueme** en **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.** * **Comparte tus trucos de hacking enviando PR al** [**repositorio de hacktricks**](https://github.com/carlospolop/hacktricks) **y al** [**repositorio de hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).