Password Reset Poisoning - Portswigger

En este laboratorio de PortSwigger nuestro objetivo será cambiar la contraseña del usuario carlos burlando la funcionalidad de reseteo de contraseña.

Portswigger nos da un usuario para que probemos las funcionalidades (wiener:peter).

Laboratorio: Basic password reset poisoning

Índice

Funcionamiento normal del reseteo

Antes de intentar hackearlo vamos a intentar entender el funcionamiento de cómo se resetea una contraseña para poder ver si encontramos alguna falla.

Login

En el apartado de My Account podemos ver un enlace que se llama Forgot Password?.

Forgot Password

Nos pide un nombre de usuario al cual resetear la contraseña. Para poder ver el funcionamiento completo ponemos el usuario wiener.

Nos avisará de que se ha enviado un email con link para resetar la contraseña. Si vamos al exploit server al apartado de emails podremos verlo.

Email

Si clickeamos, nos llevará a una página donde podremos cambiar la contraseña.

Cambiar contraseña

Si nos fijamos en todo el proceso, nos podremos dar cuenta de que el factor clave para cambiar la contraseña es el token que se nos envía al correo. Si tuviesemos ese token del usuario carlos podríamos cambiar su contraseña en la última página de cambio de contraseña.

Robando el token

Tras prueba y error nos daremos cuenta de que el Header del Host tiene repercusión en el email final, es decir, el enlace para cambiar la contraseña usará ese host especificado.

Cambiando Host

Al haber cambiado el Host a example.com se puede observar que el enlace ahora va dirigido a ese host. Si modificamos la request para que vaya al usuario carlos y que el Host sea nuestro exploit server y logramos que este usuario dé click en el enlace modificado, tendremos su token.

Cambiando la request

Ahora miramos en los logs del exploit server:

Exploit server

Ahora podemos ir a la página para cambiar la contraseña y en el apartado del token en la url ponemos el robado.

Cambiando la contraseña

Habiendo cambiado la contraseña si ahora nos logueamos con el usuario carlos y la nueva contraseña que hemos puesto completaríamos el laboratorio.

Laboratorio completado