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 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 {% 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 {% endcontent-ref %}

CSRF/Clickjacking

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

Funcionalidad de recordarme

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 🎥