Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
corsair_scan — Automatisierter CORS-Fehlkonfigurationsscanner, der Origin-Header-Injection, Wildcard-Reflexion und Credential-Leakage in Webanwendungen und APIs testet. | Kitploit
Tools/GitHubGitHub/santandersecurityresearch/corsair_scan
SchwachstellenscannerAPI-SicherheitstestsWebsicherheitFehlkonfiguration
GitHubsantandersecurityresearch/corsair_scan

corsair_scan

Automatisierter CORS-Fehlkonfigurationsscanner, der Origin-Header-Injection, Wildcard-Reflexion und Credential-Leakage in Webanwendungen und APIs testet.

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
12215vor 5 JahrenVon Kitploit geprüft

GitHub release Github all releases HitCount Total alerts Language grade: Python MIT license

corsair_scan

Willkommen bei Corsair_scan

Corsair_scan ist ein Sicherheitstool zum Testen von Fehlkonfigurationen beim Cross-Origin Resource Sharing (CORS). CORS ist ein Mechanismus, der es erlaubt, eingeschränkte Ressourcen auf einer Webseite von einer anderen Domain anzufragen, die nicht die Domain ist, von der die erste Ressource ausgeliefert wurde. Ist dies nicht ordnungsgemäß konfiguriert, können nicht autorisierte Domains auf diese Ressourcen zugreifen.

Was ist CORS?

CORS ist ein auf HTTP-Headern basierender Mechanismus, der es einem Server erlaubt, andere Ursprünge (Domain, Schema oder Port) als den eigenen anzugeben, von denen ein Browser das Laden von Ressourcen erlauben soll. Dies geschieht durch das Hinzufügen neuer HTTP-Header, mit denen Server beschreiben können, welche Ursprünge berechtigt sind, diese Informationen aus einem Webbrowser zu lesen.

CORS stützt sich auch auf einen Mechanismus, bei dem Browser eine "Preflight"-Anfrage an den Server senden, der die Cross-Origin-Ressource hostet, um zu prüfen, ob der Server die eigentliche Anfrage zulassen wird. In diesem Preflight sendet der Browser Header, die die HTTP-Methode und die Header angeben, die in der eigentlichen Anfrage verwendet werden.

Das häufigste und problematischste Sicherheitsproblem bei der Implementierung von CORS ist die fehlende Validierung/Whitelistung von Anfragestellern. Allzu oft sehen wir den Wert für Access-Control-Allow-Origin auf '*' gesetzt.

Leider ist dies der Standardwert und erlaubt daher jeder Domain im Web, auf die Ressourcen dieser Site zuzugreifen.

Gemäß dem OWASP Application Security Verification Standard (ASVS) fordert die Anforderung 14.5.3:

"Verifizieren Sie, dass der Cross-Origin Resource Sharing (CORS) Access-Control-Allow-Origin-Header eine strenge Allow-Liste von vertrauenswürdigen Domains und Subdomains verwendet, um abzugleichen, und den Ursprung 'null' nicht unterstützt."

Wie funktioniert corsair_scan?

Corsair_scan funktioniert, indem es eine Anfrage (oder eine Liste von Anfragen), die als Parameter empfangen wird, erneut sendet und dann einen Wert in den Origin-Header injiziert. Abhängig vom Inhalt des Access-Control-Allow-Origin-Headers in der Antwort auf diese Anfrage können wir feststellen, ob die CORS-Konfiguration korrekt ist oder nicht. Es gibt drei Szenarien, die auf eine Fehlkonfiguration von CORS hinweisen:

  • Der in der Anfrage gesendete gefälschte Ursprung wird in Access-Control-Allow-Origin reflektiert.
  • Der Wert von Access-Control-Allow-Origin ist '*'.
  • Der Wert von Access-Control-Allow-Origin ist 'null'.

Wenn CORS als fehlkonfiguriert erkannt wird, prüfen wir, ob die Antwort den Header Access-Control-Allow-Credentials enthält, was bedeutet, dass der Server erlaubt, Credentials in Cross-Origin-Anfragen zu übermitteln.

Häufig verwenden CORS-Konfigurationen Platzhalter, z. B. wird alles unter *.example.com akzeptiert. Das bedeutet, dass die Ursprungsdomain domain.com.evil.com akzeptiert wird, da sie dem angegebenen Regex entspricht. Um dem entgegenzuwirken, testet corsair_scan vier Szenarien:

  • Injektion einer Fake-Domain: Wir setzen den Origin-Header auf https://scarymonster.com, auch wenn die ursprüngliche Anfrage keinen Origin-Header hat.
  • Wenn die ursprüngliche Anfrage einen Origin-Header hat (der Klarheit halber nehmen wir an, es sei https://example.com):
    • Pre-Domain-Injektion: Wir hängen unsere Fake-Domain links an die ursprüngliche Domain an. In unserem Beispiel wird der Origin auf https://scarymonsterexample.com gesetzt.
    • Post-Domain-Injektion: Das Gegenteil von Pre-Domain, also eine Verkettung auf der rechten Seite. Der Origin wird https://example.com.scarymonster.com sein.
    • Sub-Domain-Injektion: Manchmal whitelistet die CORS-Konfiguration alle Subdomains unter einer bestimmten Domain. Obwohl dies an sich kein Problem ist, kann es schwerwiegend sein, wenn eine der Domains anfällig für XSS ist. Der Origin in diesem Szenario wird https://scarymonster.example.com sein.

Wie installiere ich es?

Dieses Projekt wurde mit Python 3.9 entwickelt, sollte aber mit jeder Python 3.x-Version funktionieren. Die beste Methode zur Installation ist die Verwendung von pip.

pip3 install corsair_scan --user

Wie verwende ich es?

Corsair kann sowohl als Python-Modul als auch als CLI verwendet werden.

Python-Modul

Die Methode, die den CORS-Scan durchführt, ist corsair_scan. Hier ist ihre Definition:

corsair_scan

Empfängt eine Liste von Anfragen und einen Parameter, um die Zertifikatsprüfung in der Anfrage zu aktivieren/deaktivieren.

Eingabe:

  • data [List]: Eine Liste von Anfragen. Jede Anfrage ist ein Dictionary, das die relevanten Daten für die Anfrage enthält:

    • url_data [Dict]: Dies ist ein Dictionary, das alle relevanten Daten für die Anfrage enthält:
      • url [String]: Dies ist die URL, an die die Anfrage gesendet wird.
      • verb [String]: Das Verb für die Anfrage (get, post, patch, delete, options, ...).
      • params [String]: Der in der Anfrage gesendete Body (falls vorhanden).
      • headers [Dict]: Dies ist ein Dict mit allen Headern, die in der Anfrage enthalten sind.
  • verify [Boolean] [Default: True]: Sendet diesen Wert für jede Anfrage an corsair_scan_single_url.

Ausgabe:

  • final_report [List]: Enthält den vollständigen Bericht für den durchgeführten Test. Wenn filter auf true gesetzt ist, wird dem Bericht auch eine Zusammenfassung des Tests hinzugefügt.
    • report [List]: Liste detaillierter Einzelberichte mit dem durchgeführten Test.
    • summary [Dict]: Zusammenfassung der im Scan erkannten Probleme.

Beispiel

root@kitploit:~
import corsair_scan.corsair_scan as corsair
url_data = {}
data = []
verb =  'GET'
url = 'https://example.com/'
params = 'user=user1&password=1234'
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
           'Accept-Language': 'en-GB,en;q=0.5', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1',
           'Origin': 'https://example.com',
           'Host': 'example.com'}

url_data['verb'] = verb
url_data['url'] = url
url_data['params'] = params
url_data['headers'] = headers
data.append(url_data)

print (corsair.corsair_scan(data, verify=True))

Antwort:

root@kitploit:~
{'report': [{'fake_origin': {'Access-Control-Allow-Origin': 'https://scarymonster.com',
                             'Origin': 'https://scarymonster.com',
                             'credentials': True,
                             'error': False,
                             'misconfigured': True,
                             'status_code': 200},
             'post-domain': {'Access-Control-Allow-Origin': 'https://example.com.scarymonster.com',
                             'Origin': 'https://example.com.scarymonster.com',
                             'credentials': True,
                             'error': False,
                             'misconfigured': True,
                             'status_code': 200},
             'pre-domain': {'Access-Control-Allow-Origin': 'https://scarymonsterexample.com',
                            'Origin': ' https://scarymonsterexample.com',
                            'credentials': True,
                            'error': False,
                            'misconfigured': True,
                            'status_code': 200},
             'sub-domain': {'Access-Control-Allow-Origin': 'https://scarymonster.example.com',
                            'Origin': 'https://scarymonster.example.com',
                            'credentials': True,
                            'error': False,
                            'misconfigured': True,
                            'status_code': 200},
             'url': 'https://example.com/',
             'verb': 'GET'}],
 'summary': {'error': [], 'misconfigured': [{'credentials': True,
                    'misconfigured_test': ['fake_origin',
                                           'sub-domain',
                                           'pre-domain',
                                           'post-domain'],
                    'status_code': 200,
                    'url': 'https://domain.com',
                    'verb': 'GET'}]}}

CLI

Im Rahmen der pip-Paketinstallation wird eine CLI installiert. Die Syntax zur Ausführung lautet wie folgt:

corsair FILE [-nv/--noverify][-r/--report]

Die CLI benötigt eine JSON-Datei mit einer Liste von Anfragen, um den Scan durchzuführen. Eine Beispieldatei wird als Teil der Tests bereitgestellt:

root@kitploit:~
[{
  "verb": "GET",
  "url": "https://example.com/",
  "params": "user=user1&password=1234",
  "headers": {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Language": "en-GB,en;q=0.5",
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1",
    "Origin": "https://example.com",
    "Host": "example.com"
  }
}]

Es gibt auch zwei optionale Parameter:

  • -nv / --noverify: Zum Überspringen der Zertifikatsvalidierung, falls Sie gegen eine Site mit einem selbstsignierten Zertifikat testen.
  • -r / --report: Speichert den Bericht als JSON-Datei.

Beispiel

CLI-Bericht

Roadmap

  • Veröffentlichung von corsair_scan als CLI-Tool ✅
  • Lesen von URL-Daten aus einer Textdatei ✅
  • Verbesserung des Berichtsformats

Wer steckt dahinter?

Corsair_scan wurde vom Santander UK Security Engineering Team entwickelt, das sich zusammensetzt aus:

  • David Albone
  • Javier Domínguez Ruiz
  • Fernando Cabrerizo
  • Jonathan Strong
  • James Howieson
Tool herunterladen