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

10 KiB

Bypass de 2FA/OTP

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

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).

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 usuario en la aplicación después de que se complete 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).

Otra opción para saltarse el 2FA con la funcionalidad de restablecimiento de contraseña es restablecer la contraseña con acceso al correo y usar la nueva contraseña para iniciar sesión, es posible que después de un cambio de contraseña no se use el 2FA.

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, podrás 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 {% 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, contraseña...). Sin embargo, incluso en los casos en que hay un límite de velocidad cuando intentas 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 {% endcontent-ref %}

CSRF/Clickjacking

Verifique si existe una vulnerabilidad de Cross Site Request Forgery (CSRF) o Clickjacking para desactivar el 2FA.

Funcionalidad de "Recuérdame"

Si la funcionalidad de "recuérdame" utiliza una nueva cookie con un código adivinable, intente adivinarlo.

Dirección IP

Si la funcionalidad de "recuérdame" está vinculada a su dirección IP, puede intentar averiguar la dirección IP de la víctima e impersonarla utilizando el encabezado X-Forwarded-For.

Versiones antiguas

Subdominios

Si puede encontrar algunos subdominios de "pruebas" con la funcionalidad de inicio de sesión, es posible que estén utilizando versiones antiguas que no admiten 2FA (por lo que se omite directamente) o esos puntos finales podrían admitir una versión vulnerable del 2FA.

APIs

Si descubre que el 2FA 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 bypass de 2FA.

Sesiones anteriores

Cuando se habilita el 2FA, las sesiones anteriores creadas deben finalizarse. Esto se debe a que cuando un cliente tiene su cuenta comprometida, podría querer protegerla activando el 2FA, 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 el 2FA y están disponibles en una sola solicitud. Después de cada llamada posterior 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" 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 evadir el 2FA si se conocen el nombre de usuario y la contraseña.

Divulgación de información

Si nota que aparece información confidencial en la página de 2FA que no conocía 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 2FA

  1. Crea una cuenta y activa el 2FA.
  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 2FA, 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 🎥