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.
En el apartado de My Account podemos ver un enlace que se llama 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.
Si clickeamos, nos llevará a una página donde podremos cambiar la 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.
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.
Ahora miramos en los logs del 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.
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.