Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
corsair_scan — Scanner automatisé de mauvaises configurations CORS qui teste l'injection d'en-tête Origin, la réflexion de wildcard et la fuite d'identifiants à travers les applications web et les API. | Kitploit
Outils/GitHubGitHub/santandersecurityresearch/corsair_scan
Scanners de VulnérabilitésTests de Sécurité des APISécurité WebMauvaise Configuration
GitHubsantandersecurityresearch/corsair_scan

corsair_scan

Scanner automatisé de mauvaises configurations CORS qui teste l'injection d'en-tête Origin, la réflexion de wildcard et la fuite d'identifiants à travers les applications web et les API.

Voir le dépôt

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
12215il y a 5 ansVérifié par Kitploit

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

corsair_scan

Bienvenue sur Corsair_scan

Corsair_scan est un outil de sécurité pour tester les mauvaises configurations de Cross-Origin Resource Sharing (CORS). CORS est un mécanisme qui permet à des ressources restreintes d'une page web d'être demandées depuis un autre domaine que celui à partir duquel la première ressource a été servie. Si cela n'est pas correctement configuré, des domaines non autorisés peuvent accéder à ces ressources.

Qu'est-ce que CORS ?

CORS est un mécanisme basé sur les en-têtes HTTP qui permet à un serveur d'indiquer d'autres origines (domaine, schéma ou port) que la sienne à partir desquelles un navigateur devrait autoriser le chargement de ressources. Il fonctionne en ajoutant de nouveaux en-têtes HTTP qui permettent aux serveurs de décrire quelles origines sont autorisées à lire ces informations depuis un navigateur web.

CORS repose également sur un mécanisme par lequel les navigateurs effectuent une requête « preflight » vers le serveur hébergeant la ressource cross-origin, afin de vérifier que le serveur autorisera la requête réelle. Dans cette pré-vérification, le navigateur envoie des en-têtes qui indiquent la méthode HTTP et les en-têtes qui seront utilisés dans la requête réelle.

Le problème de sécurité le plus courant et le plus problématique lors de l'implémentation de CORS est l'absence de validation/whitelisting des demandeurs. Trop souvent, nous voyons la valeur de Access-Control-Allow-Origin définie sur « * ». Malheureusement, c'est la valeur par défaut et permet ainsi à n'importe quel domaine sur le web d'accéder aux ressources de ce site.

Selon la norme de vérification de sécurité des applications OWASP (ASVS), l'exigence 14.5.3 stipule

Vérifiez que l'en-tête Cross-Origin Resource Sharing (CORS) Access-Control-Allow-Origin utilise une liste d'autorisation stricte de domaines et sous-domaines de confiance pour la correspondance et ne supporte pas l'origine « null ».

Comment fonctionne corsair_scan ?

Corsair_scan fonctionne en renvoyant une requête (ou une liste de requêtes) reçue en paramètre, puis en injectant une valeur dans l'en-tête Origin. En fonction du contenu de l'en-tête Access-Control-Allow-Origin dans la réponse à cette requête, nous pouvons déterminer si la configuration CORS est correcte ou non. Trois scénarios indiquent que CORS est mal configuré :

  • L'origine fictive envoyée dans la requête est reflétée dans Access-Control-Allow-Origin
  • La valeur de Access-Control-Allow-Origin est *
  • La valeur de Access-Control-Allow-Origin est null

Si CORS est mal configuré, nous vérifions si la réponse contient l'en-tête Access-Control-Allow-Credentials, ce qui signifie que le serveur autorise l'inclusion des identifiants dans les requêtes cross-origin.

Souvent, les configurations CORS utilisent des caractères génériques, par exemple en acceptant tout ce qui se trouve sous * example.com *. Cela signifie que le domaine domain.com.evil.com sera accepté car il correspond à l'expression régulière donnée. Pour tenter de contrer cela, corsair_scan teste quatre scénarios :

  • Fake domain injection : Nous définissons l'en-tête Origin sur https://scarymonster.com, même si la requête originale n'a pas d'en-tête Origin
  • Si la requête originale a un en-tête Origin (pour plus de clarté, supposons qu'il s'agit de https://example.com) :
    • Pre-domain injection : Nous concaténons notre domaine fictif au domaine original sur la gauche. Dans notre exemple, l'origine sera définie sur https://scarymonsterexample.com
    • Post-domain injection : L'inverse du pre-domain, juste une concaténation sur la droite. L'origine sera https://example.com.scarymonster.com
    • Sub-domain injection : Parfois, la configuration CORS met en liste blanche tous les sous-domaines d'un domaine donné. Bien que cela ne soit pas un problème en soi, si l'un des domaines est vulnérable à XSS, cela peut constituer un problème sérieux. L'origine dans ce scénario sera https://scarymonster.example.com

Comment l'installer ?

Ce projet a été développé avec Python 3.9, mais devrait fonctionner avec n'importe quelle version de Python 3.x. La meilleure façon de l'installer est d'utiliser pip.

pip3 install corsair_scan --user

Comment l'utiliser ?

Corsair peut être utilisé à la fois comme un module python ou comme une CLI.

Module Python

La méthode qui effectue le scan CORS est corsair_scan. Voici sa définition :

corsair_scan

Reçoit une liste de requêtes et un paramètre pour activer/désactiver la vérification du certificat dans la requête.

Entrée :

  • data [List] : Une liste de requêtes. Chaque requête est un dictionnaire qui contient les données pertinentes pour la requête :
    • url_data [Dict] : C'est un dictionnaire qui contient toutes les données pertinentes pour la requête :
      • url [String] : C'est l'URL où la requête est envoyée
      • verb [String] : Le verbe pour la requête (get, post, patch, delete, options...)
      • params [String] : Le corps envoyé dans la requête (le cas échéant)
      • headers [Dict] : C'est un dictionnaire avec tous les en-têtes inclus dans la requête
  • verify [Boolean] [Défaut : True] : Envoie cette valeur à corsair_scan_single_url pour chaque requête

Sortie :

  • final_report [List] : Contient le rapport complet pour le test effectué. Si filter est défini sur true, il ajoute également un résumé du test au rapport.
    • report [List] : Liste des rapports individuels détaillés avec le test effectué
    • summary [Dict] : Résumé des problèmes détectés lors du scan

Exemple

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))

Réponse :

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

Dans le cadre de l'installation du paquet pip, une CLI est installée. La syntaxe d'exécution est la suivante :

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

La CLI a besoin d'un fichier json avec une liste de requêtes pour effectuer le scan. Un exemple de fichier est fourni dans le cadre des tests :

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"
  }
}]

Il existe également deux paramètres optionnels :

  • -nv / --noverify : Pour ignorer la validation du certificat, si vous testez un site avec un certificat auto-signé
  • -r / --report : Sauvegarde le rapport sous forme de fichier JSON

Exemple

Rapport CLI

Feuille de route

  • Publier corsair_scan en tant qu'outil CLI ✅
  • Lire les données URL depuis un fichier texte ✅
  • Améliorer le format des rapports

Qui est derrière ?

Corsair_scan a été développé par l'équipe de sécurité de Santander UK qui sont :

  • David Albone
  • Javier Domínguez Ruiz
  • Fernando Cabrerizo
  • Jonathan Strong
  • James Howieson
Télécharger l’outil