SameSite Lax bypass via method override writeup

Descripción

This lab’s change email function is vulnerable to CSRF. To solve the lab, perform a CSRF attack that changes the victim’s email address. You should use the provided exploit server to host your attack.

You can log in to your own account using the following credentials: wiener:peter

SameSite Strict bypass via client-side redirect writeup

Entraremos en el laboratorio. Iremos a ‘My account’ e iniciaremos sesión con el usuario ‘wiener’ y la contraseña ‘peter’.

A diferencia del laboratorio anterior (SameSite Lax bypass via method override) registrarnos veremos que la cookie de sesión tiene el valor ‘Strict’, por lo que la petición para realizar el ataque CSRF debe de venir sí o sí de la misma página y con el mismo protocolo:

Para esto, tendremos que encontrar otra vulnerabilidad en la página que nos permita hacer que, cuando el usuario entre en ella, desde la propia página se realice el cambio de correo. Exploraremos la página con el logger encendido y, al enviar un comentario veremos que se realiza una redirección.

Una vez que se envía el post:

Se llama al siguiente JavaScript:

Este JavaScript, al no comprobar el valor de ‘postId’, es vulnerable a Path Traversal. Podemos darle la suficiente información para que redirija al usuario a la página de ‘change-email’, autocomplete el formulario y lo envíe automáticamente. Para ello cambiaremos la URL por:

https://0a6b003704768b148254ac7a005f00fa.web-security-academy.net/post/comment/confirmation?postId=../my-account/change-email

Luego, proporcionaremos a la URL el parámetro ‘email’ con un valor distinto a la cuenta que hemos usado para hacer las pruebas. La URL tomará el aspecto:

https://0a6b003704768b148254ac7a005f00fa.web-security-academy.net/post/comment/confirmation?postId=../my-account/change-email?email=test2@cyberhub.es

Autocompletando así el campo del formulario.

Nota: El nombre del parámetro ‘email’ se obtiene de inspeccionar el elemento HTML del formulario y copiar el valor de su etiqueta ‘name’:

Ahora añadiremos a la URL el siguiente código para que el formulario se envíe automáticamente:

https://0a6b003704768b148254ac7a005f00fa.web-security-academy.net/post/comment/confirmation?postId=../../my-account/change-email?email=test2%40cyberhub.es%26submit=1

Nota: El & debe estar codificado como URL (%26).

Al entrar en esta URL nos cambiará automáticamente el correo. Ahora tenemos que hacer que esto se haga a través de un JavaScript que se enviará a la víctima:

<script>
document.location="https://0a6b003704768b148254ac7a005f00fa.web-security-academy.net/post/comment/confirmation?postId=../my-account/change-email?email=test%40cyberhub.es%26submit=1"
</script>

Al enviar el exploit a la víctima y esperar varios segundos se completará el laboratorio:

Nota: Es necesario esperar varios segundos sin probar el exploit, dado que le quitaremos el correo a la víctima y no se lo podremos cambiar.

Deja una respuesta

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