CSRF where token is not tied to user session writeup

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:

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í:

  1. Nos aseguraremos que ‘Include auto-submit script’ esté desactivado.
  2. Cambiaremos el valor de email por el de un correo que no esté en uso.
  3. Cambiaremos el valor de csrf por el nuestro obtenido en el paso 1.
  4. 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()">
  5. 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.

Deja una respuesta

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