A veces la lógica defectuosa en la autenticación de dos factores significa que después de que un usuario haya completado el paso inicial de inicio de sesión, el sitio web no verifica adecuadamente que el mismo usuario está completando el segundo paso.
Por ejemplo, el usuario inicia sesión con sus credenciales normales en el primer paso de la siguiente manera:
POST /login-steps/first HTTP/1.1Host: vulnerable-website.com...username=carlos&password=qwerty
A continuación, se les asigna una cookie relacionada con su cuenta, antes de llevarles al segundo paso del proceso de inicio de sesión:
Al enviar el código de verificación, la solicitud utiliza esta cookie para determinar a qué cuenta está intentando acceder el usuario:
POST /login-steps/second HTTP/1.1Host: vulnerable-website.comCookie: account=carlos...verification-code=123456
En este caso, un atacante podría iniciar sesión utilizando sus propias credenciales, pero luego cambiar el valor de la cookie de cuenta a cualquier nombre de usuario arbitrario al enviar el código de verificación.
Esto es extremadamente peligroso si el atacante es capaz de forzar el código de verificación, ya que le permitiría acceder a cuentas de usuarios arbitrarios basándose únicamente en su nombre de usuario. Ni siquiera necesitarían conocer la contraseña del usuario.
LAB
20250804230131.png
La manera de explotar el sitio web es de la siguiente manera:
Debemos que interceptar las solicitudes cuando ingresamos las credenciales de wiener y en una de ellos con encontraremos que este hace una solicitud GET con una cookie en la que lleva el nombre de usuario al cual envía el código "2FA"
20250804234423.png
Entonces el modo de ataque es que cambiemos el valor de verify de wiener a carlos.
20250804234331.png
Una vez cambiada, se le enviara el código 2FA al correo del usuario carlos pero no sabemos el correo de este usuario, por lo que teniendo la cookie usada para que se genere el envió de código al usuario realizaremos fuerza bruta para encontrar el código.
20250804234506.png
Luego de generar números de 4 dígitos y realizar un ataque del tipo sniper attack
20250804234539.png
Luego de esperar un poco encontraremos el código correcto.