
Descripción
This lab’s email change functionality is vulnerable to CSRF. It uses tokens to try to prevent CSRF attacks, but they aren’t fully integrated into the site’s session handling system.
To solve the lab, use your exploit server to host an HTML page that uses a CSRF attack to change the viewer’s email address.
You have two accounts on the application that you can use to help design your attack. The credentials are as follows:
wiener:peter
carlos:montoya
CSRF where token is tied to non-session cookie writeup
Entraremos en el laboratorio. Iremos a ‘My account’ e iniciaremos sesión con el usuario ‘wiener’ y la contraseña ‘peter’. Al hacerlo la aplicación nos pondrá una cookie llamada ‘csrfKey’. Este es un intento de hacer más segura la funcionalidad.

Ahora, para realizar el ataque CSRF, no sólo tendremos que tomar el token CSRF de la petición, sino también esta cookie (cCdA63IQWT49lHeIQDwt8Cft4ePilQ28). De nuevo, igual que el laboratorio anterior (CSRF where token is not tied to user session), dividiremos el laboratorio en tres partes:
Obtener un token CSRF válido
Realizaremos este paso igual que en el laboratorio anterior, interceptando la petición de cambio de correo con el ‘Proxy’ de Burp Suite, anotando el valor del token y dropeando la petición. En mi caso el token es ‘3DY94af7GvWV1kPpPHFaYrjwoOVyeqGT’.

Insertar en la víctima nuestra cookie CSRF
Esto lo conseguiremos gracias a la barra de búsqueda, que guarda en nuestro navegador la última búsqueda realizada:
Podremos modificar la URL de la siguiente forma:
?search=test%0d%0aSet-Cookie:%20csrfKey=3DY94af7GvWV1kPpPHFaYrjwoOVyeqGT%3b%20SameSite=None
Haciendo que la cookie ‘csrfKey’ de la víctima tome el valor de la nuestra.
Crear el exploit para la víctima
Tomaremos la petición del cambio de correo y la enviaremos al ‘Repeater’ con Ctrl + R o Click dercho -> Send to Repeater. Allí pulsaremos Click derecho -> Engagement tools -> Generate CSRF PoC. Modificaremos la petición tal que así:

- Nos aseguraremos que ‘Include auto-submit script’ esté desactivado.
- Cambiaremos el valor de email por el de un correo que no esté en uso.
- Cambiaremos el valor de csrf por el nuestro obtenido en el paso 1.
- Añadiremos el siguiente código, cambiando la URL del laboratorio, para insertar el valor de la cookie:
<img src="https://0aee00cd03905308815d16570004000c.web-security-academy.net/?search=test%0d%0aSet-Cookie:%20csrfKey=LgSd84dWkCw7yPPHjIvRqn0elHnJ4NGl%3b%20SameSite=None" onerror="document.forms[0].submit()">
- Pulsaremos ‘Store’ y ‘Deliver exploit to victim’.

Al hacerlo habremos completado el laboratorio:

Nota: Es probable que el token caduque, por lo que puede ser que haya que regenerar los valores de csrf y csrfKey.