
Pipeline automatizzata di validazione XSS per CVE-2020-3580 con scoperta basata su Shodan, corrispondenza dell'ambito e test canary con approvazione per endpoint SAML WebVPN di Cisco ASA/FTD.
Cisco ASA / FTD XSS riflesso nell'endpoint WebVPN SAML SP ACS
(/+CSCOE+/saml/sp/acs). Corretto in
cisco-sa-asaftd-xss-multiple-FCB3vPZe.
Questo repository contiene:
xss.html — un PoC verificabile manualmente per target autorizzati.src/ — un pipeline di scoperta e validazione con consapevolezza dell'ambito.docs/ — metodologia ed etica.┌──────────┐ ┌──────────────┐ ┌────────────────────┐ ┌────────────────┐ ┌──────────────┐
│ Shodan │ → │ scope match │ → │ manual approval │ → │ canary check │ → │ MD report │
│ (3 dorks)│ │ (H1, BC, +) │ │ deny-by-default │ │ no JS exec │ │ drafts │
└──────────┘ └──────────────┘ └────────────────────┘ └────────────────┘ └──────────────┘
Ogni fase scrive un artefatto JSON ispezionabile e viene eseguita indipendentemente.
Il validatore non esegue alert(). Invia in POST una stringa canary univoca contenente i caratteri <>"' non elaborati e valuta il corpo della risposta. I riscontri confermati ricevono una bozza in Markdown con l'originale xss.html incluso, affinché il revisore del programma possa verificarlo nel proprio browser.
La validazione è soggetta ad approvazione. Una corrispondenza di ambito è solo un punto di partenza; il brief del programma corrente è il contratto. Prima della validazione attiva, esaminare la policy del programma e impostare i flag di approvazione del target in data/validation_approvals.json.
git clone https://github.com/cruxN3T/CVE-2020-3580
cd CVE-2020-3580
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp creds.env.example creds.env
$EDITOR creds.env # aggiungi la tua chiave Shodan, opzionalmente i token H1/BC
creds.env è in gitignore. Il file .gitignore blocca qualsiasi file che corrisponde a *.env (tranne *.env.example), più data/ e reports/ per tenere le liste dei target e gli estratti di validazione fuori dal repository pubblico.
Il comando end-to-end predefinito si ferma intenzionalmente prima della validazione:
python -m src.pipeline run
Questo scrive data/validation_approvals.json con tutti i flag di approvazione impostati su false. Esamina ciascun brief del programma corrente e imposta tutti e tre i campi su true solo quando il target è ancora in ambito e questo tipo di validazione è consentito:
{
"manual_policy_reviewed": true,
"automated_testing_allowed": true,
"cve_testing_allowed": true
}
Quindi validare e generare bozze di report:
python -m src.pipeline validate
python -m src.pipeline report
Oppure fase per fase:
python -m src.pipeline discover # Shodan → data/shodan_hits.json
python -m src.pipeline scope # match → data/in_scope.json
python -m src.pipeline approve-template # → data/validation_approvals.json
python -m src.pipeline validate # approved canary checks only
python -m src.pipeline report # → reports/<host>__CVE-2020-3580.md
Solo per target di laboratorio privati, validate --allow-unapproved bypassa il file di approvazione. Per appliance legacy in cui la validazione del certificato è impossibile, validate --allow-insecure-tls disabilita la verifica TLS per quella esecuzione.
La fase scope funziona senza chiavi API — preleva da arkadiyt/bounty-targets-data. Aggiungere H1_USERNAME + H1_API_TOKEN a creds.env può arricchire i dati con dati freschi dall'API Hacker di HackerOne quando H1_LIVE=true è impostato.
Tutto risiede in creds.env. Vedi creds.env.example per l'elenco completo. Le opzioni degne di nota:
SCOPE_PLATFORMS — separato da virgole. Predefinito a hackerone,bugcrowd. Aggiungi intigriti e yeswehack per una copertura più ampia.TARGET_RPM — richieste per host al minuto. Predefinito 10. Non aumentare questo valore senza motivo.TLS_VERIFY — predefinito a true.REQUIRE_VALIDATION_APPROVAL — predefinito a true.docs/ETHICS.md — cosa la corrispondenza di ambito autorizza e non autorizza, e cosa il validatore deliberatamente non fa.docs/METHODOLOGY.md — come funziona la valutazione della riflessione e perché ogni fase esiste.Non è uno strumento di sfruttamento di massa. Non è un 0day. Non è un sostituto della lettura del brief del programma sulla piattaforma prima di inviare. Il matcher di ambito è un punto di partenza; il testo della policy è il contratto.
MIT. Vedi LICENSE.