
Descripción
This lab contains a password reset mechanism. Although it doesn’t contain a race condition, you can exploit the mechanism’s broken cryptography by sending carefully timed requests.
To solve the lab:
- Identify the vulnerability in the way the website generates password reset tokens.
- Obtain a valid password reset token for the user
carlos
. - Log in as
carlos
. - Access the admin panel and delete the user
carlos
.
You can log into your account with the following credentials: wiener:peter
.
Exploiting time-sensitive vulnerabilities writeup
Accedemos al laboratorio, vamos a ‘My account’, entramos en ‘Forgot password?’ y capturamos con el ‘Logger’ la petición de enviar el formulario con el usuario ‘wiener’:

Enviaremos esta petición al ‘Repeater’ con Ctrl + R o Click derecho -> Send to Repeater. Allí necesitaremos 2 copias de esta petición, teniendo 3 en total:
- La petición del cambio de contraseña con el usuario ‘wiener’.
- La petición del cambio de contraseña con el usuario ‘carlos’.
- Una petición GET a ‘/forgot-password’ sin la cookie de sesión para generar un token CSRF y una Cookie de sesión nuevas, que usaremos en la petición de ‘carlos’.
Enviaremos las dos peticiones a la vez, en el mismo grupo, y como son HTTP2 con el método paralelo. Accederemos al ‘Email client’, copiaremos la URL y cambiaremos ‘wiener’ por ‘carlos’:

Nota: A veces esto no funcionará, y habrá que generar otra cookie de sesión y token CSRF para la petición de ‘carlos’ y volverlo a enviar. En mi caso funcionó con la primera petición tardando 391 ms y la segunda 93 ms, pero tuve que enviarlas 15 veces para que funcionara.
Al cambiar la contraseña de ‘carlos’ iniciaremos sesión en su cuenta, iremos a ‘Admin panel’, lo borraremos y completaremos el laboratorio:
