Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
corsair_scan — Scanner automatizzato per la configurazione errata CORS che testa l'iniezione dell'header Origin, la riflessione del wildcard e la perdita di credenziali attraverso applicazioni web e API. | Kitploit
Strumenti/GitHubGitHub/santandersecurityresearch/corsair_scan
Scanner di VulnerabilitàTest di Sicurezza delle APISicurezza WebConfigurazione Errata
GitHubsantandersecurityresearch/corsair_scan

corsair_scan

Scanner automatizzato per la configurazione errata CORS che testa l'iniezione dell'header Origin, la riflessione del wildcard e la perdita di credenziali attraverso applicazioni web e API.

Vedi Repository
1221555 anni faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

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

corsair_scan

Benvenuti in Corsair_scan

Corsair_scan è uno strumento di sicurezza per testare configurazioni errate di Cross-Origin Resource Sharing (CORS). CORS è un meccanismo che consente di richiedere risorse limitate su una pagina web da un dominio diverso da quello in cui è stata servita la prima risorsa. Se non è configurato correttamente, domini non autorizzati possono accedere a tali risorse.

Cos'è CORS?

CORS è un meccanismo basato su intestazioni HTTP che permette a un server di indicare eventuali altre origini (dominio, schema o porta) diverse dalla propria da cui un browser dovrebbe consentire il caricamento di risorse. Funziona aggiungendo nuove intestazioni HTTP che consentono ai server di descrivere quali origini sono autorizzate a leggere tali informazioni da un browser web.

CORS si basa anche su un meccanismo mediante il quale i browser effettuano una richiesta "preflight" al server che ospita la risorsa cross-origin, per verificare che il server consentirà la richiesta effettiva. In tale preflight, il browser invia intestazioni che indicano il metodo HTTP e le intestazioni che verranno utilizzate nella richiesta effettiva.

Il problema di sicurezza più comune e problematico nell'implementazione di CORS è la mancata validazione/whitelist dei richiedenti. Troppo spesso vediamo il valore di Access-Control-Allow-Origin impostato a '*'.

Purtroppo, questo è il valore predefinito e quindi consente a qualsiasi dominio sul web di accedere alle risorse del sito.

Secondo lo standard di verifica della sicurezza delle applicazioni OWASP (ASVS), il requisito 14.5.3 afferma

Verificare che l'intestazione Access-Control-Allow-Origin del Cross-Origin Resource Sharing (CORS) utilizzi una lista di autorizzazione rigorosa di domini e sottodomini attendibili per la corrispondenza e non supporti l'origine "null".

Come funziona corsair_scan?

Corsair_scan funziona reinviando una richiesta (o un elenco di richieste) ricevuta come parametro e quindi iniettando un valore nell'intestazione Origin. A seconda del contenuto dell'intestazione Access-Control-Allow-Origin nella risposta a questa richiesta, possiamo stabilire se la configurazione CORS è corretta o meno. Ci sono tre scenari che indicano che CORS è configurato in modo errato:

  • L'origine falsa inviata nella richiesta viene riflessa in Access-Control-Allow-Origin
  • Il valore di Access-Control-Allow-Origin è *
  • Il valore di Access-Control-Allow-Origin è null

Se si scopre che CORS è configurato in modo errato, controlliamo se la risposta contiene l'intestazione Access-Control-Allow-Credentials, il che significa che il server consente di includere le credenziali nelle richieste cross-origin.

Spesso, le configurazioni CORS utilizzano caratteri jolly, ad esempio accettando qualsiasi cosa sotto example.com. Ciò significa che l'origine domain.com.evil.com verrà accettata poiché corrisponde all'espressione regolare data. Per cercare di contrastare ciò, corsair_scan testa quattro scenari:

  • Iniezione di dominio falso: Impostiamo l'intestazione Origin su https://scarymonster.com, anche se la richiesta originale non ha un'intestazione Origin
  • Se la richiesta originale ha un'intestazione Origin (per chiarezza, supponiamo che sia https://example.com):
    • Iniezione pre-dominio: Concateniamo il nostro dominio falso al dominio originale a sinistra. Nel nostro esempio, l'origine sarà impostata su https://scarymonsterexample.com
    • Iniezione post-dominio: L'opposto del pre-dominio, concatenazione a destra. L'origine sarà https://example.com.scarymonster.com
    • Iniezione sottodominio: A volte la configurazione CORS inserisce nella whitelist tutti i sottodomini sotto un dato dominio. Sebbene non sia un problema di per sé, se uno dei domini è vulnerabile a XSS, può essere un problema serio. L'origine in questo scenario sarà https://scarymonster.example.com

Come lo installo?

Questo progetto è stato sviluppato con Python 3.9, ma dovrebbe funzionare con qualsiasi versione di Python 3.x. Il modo migliore per installarlo è tramite pip.

pip3 install corsair_scan --user

Come lo uso?

Corsair può essere utilizzato sia come modulo python che come CLI.

Modulo Python

Il metodo che esegue la scansione CORS è corsair_scan. Ecco la sua definizione:

corsair_scan

Riceve una lista di richieste e un parametro per abilitare/disabilitare il controllo del certificato nella richiesta

Input:

  • data [List]: Una lista di richieste. Ogni richiesta è un dizionario che contiene i dati rilevanti per la richiesta:
    • url_data [Dict]: Questo è un dizionario che contiene tutti i dati rilevanti per la richiesta:
      • url [String]: Questo è l'url a cui viene inviata la richiesta
      • verb [String]: Il verbo per la richiesta (get, post, patch, delete, options...)
      • params [String]: Il corpo inviato nella richiesta (se presente)
      • headers [Dict]: Questo è un dict con tutte le intestazioni incluse nella richiesta
  • verify [Boolean] [Default: True] : Invia questo valore a corsair_scan_single_url per ogni richiesta

Output:

  • final_report [List]: Contiene il rapporto completo per il test eseguito. Se filter è impostato su true, aggiunge anche un riepilogo del test al rapporto.
    • report [List]: Elenco di rapporti individuali dettagliati con il test eseguito
    • summary [Dict] : Riepilogo dei problemi rilevati nella scansione

Esempio

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

Risposta:

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

Come parte dell'installazione del pacchetto pip, viene installato un CLI. La sintassi per eseguirlo è la seguente:

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

Il CLI richiede un file json con un elenco di richieste per eseguire la scansione. Un file di esempio è fornito come parte dei test

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

Ci sono anche due parametri opzionali:

  • -nv / --noverify: Per saltare la convalida del certificato, se stai testando un sito con un certificato autofirmato
  • -r / --report: Salva il rapporto come file JSON

Esempio

Rapporto CLI

Roadmap

  • Rilasciare corsair_scan come strumento CLI ✅
  • Leggere dati url da un file di testo ✅
  • Migliorare il formato dei rapporti

Chi c'è dietro?

Corsair_scan è stato sviluppato dal team di Security Engineering di Santander UK composto da:

  • David Albone
  • Javier Domínguez Ruiz
  • Fernando Cabrerizo
  • Jonathan Strong
  • James Howieson
Scarica lo strumento