Password Reset Broken Logic

SUMMARY

Debemos autenticarnos con la cuenta del usuario carlos a traves del login de un sitio web. Además, el enunciado del laboratorio nos provee las credenciales del usuario wiener. Primero, analice la lógica utilizada en la funcionalidad Restablecer Contraseña, que me redirigía a una página web que constaba de un formulario HTML donde debía indicar el username o un email donde se iba a enviar un correo electrónico con la URL de la página web donde iba a restablecer la contraseña de la cuenta del usuario especificado. Luego, accedí a la bandeja de entrada del correo electrónico del usuario wiener para acceder a la URL, que constaba de un parámetro GET token que tenía un valor con un alto grado de entropía.Luego, fui redirigido a una pagina web que constaba de un formulario con dos campos escondidos que contenían el valor del token y el username.Luego, modifique el username y elimine el valor del token de la solicitud POST realizada desde el formulario, logrando modificar el password de carlos, debido a que el sitio web no verificaba el valor del token ingresado en la solicitud.

RESOLUCION

En este laboratorio tenemos que autenticarnos exitosamente en un login de un sitio web con el usuario carlos. Para ello la plataforma de PortSwigger (https://portswigger.net/web-security/authentication/other-mechanisms/lab-password-reset-broken-logic) nos proveen las credenciales de un usuario valido. (wiener:peter).

Podemos observar que en login del sitio web se ha implementado una funcionalidad para Restablecer Contraseña. Ademas, esta funcionalidad esta implementada para que el usuario que quiere restablecer su contraseña, ingrese su username o email, y luego recibira en la bandeja de entrada de su correo electronico, un mensaje que va contener una URL, que consta de un parametro GET llamdo token, que va estar asociada con la cuenta del usuario y tiene un alto grado de entropia. Ademas, al acceder a la URL, el sitio web comprueba si el token es valido, y nos redirige a una pagina web con otro formulario HTML para realizar el restablecimiento de la contraseña. Ademas, si analizamos el codigo fuente de esta pagina web, podremos observar que el formulario consta de dos campos escondidos cuyos valores viene a ser el valor del parametro GET token y el username del usuario.

Ahora interceptaremos la solicitud POST HTTP que se realizara hacia el servidor web para el restablecimiento de la contraseña, y modificaremos el valor del campo username y de eliminaremos el campo del token con el fin de analizar la respuesta HTTP del servidor web, y comprobar si es que la aplicación web realizara una verificacion de los valroes de estos campos.

Podemos observar que la respuesta HTTP tiene un codigo de estado HTTP igual a 302 por lo que vamos a ser redirigidos automaticamente a la ruta especifica en la cabecera Location, que viene a ser la pagina de inicio del sitio web. Por lo tanto, con esto podemos indicar que la aplicación o sitio web no realiza una adecuada verificacion o validacion del valor del token ingresado en la solicitud POST, por lo que pudimos cambiar la contraseña de la cuenta del usuario carlos.

De esta manera logramos resolver este laboratorio.