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:

  1. Identify the vulnerability in the way the website generates password reset tokens.
  2. Obtain a valid password reset token for the user carlos.
  3. Log in as carlos.
  4. 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:

  1. La petición del cambio de contraseña con el usuario ‘wiener’.
  2. La petición del cambio de contraseña con el usuario ‘carlos’.
  3. 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:

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *