
Automatisierte XSS-Validierungspipeline für CVE-2020-3580 mit Shodan-basierter Erkennung, Scope-Abgleich und genehmigungspflichtigem Canary-Testing für Cisco ASA/FTD WebVPN-SAML-Endpunkte.
Cisco ASA / FTD reflektiertes XSS im WebVPN SAML SP ACS Endpunkt
(/+CSCOE+/saml/sp/acs). Gepatched in
cisco-sa-asaftd-xss-multiple-FCB3vPZe.
Dieses Repository enthält:
xss.html — ein menschlich überprüfbarer PoC für autorisierte Ziele.src/ — eine Erkennungs- + bereichsbewusste Validierungspipeline.docs/ — Methodik und Ethik.┌──────────┐ ┌──────────────┐ ┌────────────────────┐ ┌────────────────┐ ┌──────────────┐
│ Shodan │ → │ scope match │ → │ manual approval │ → │ canary check │ → │ MD report │
│ (3 dorks)│ │ (H1, BC, +) │ │ deny-by-default │ │ no JS exec │ │ drafts │
└──────────┘ └──────────────┘ └────────────────────┘ └────────────────┘ └──────────────┘
Jede Stufe schreibt ein überprüfbares JSON-Artefakt und läuft unabhängig.
Der Validator führt kein alert() aus. Er POSTet einen eindeutigen Canary-String,
der rohes <>"' enthält, und bewertet den Antworttext. Bestätigte Treffer erhalten
einen Markdown-Entwurf mit dem ursprünglichen xss.html, damit der Programmprüfer
es in seinem eigenen Browser verifizieren kann.
Die Validierung ist genehmigungspflichtig. Ein Scope-Match ist nur ein Ausgangspunkt;
die aktuelle Programmrichtlinie ist der Vertrag. Vor der aktiven Validierung überprüfen Sie
die Programmrichtlinie und setzen Sie die Genehmigungsflags des Ziels 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 # add your Shodan key, optionally H1/BC tokens
creds.env ist in .gitignore. Die .gitignore blockt jede Datei, die auf *.env
passt (außer *.env.example), sowie data/ und reports/, um Ziellisten
und Validierungsauszüge vom öffentlichen Repository fernzuhalten.
Der standardmäßige End-to-End-Befehl stoppt absichtlich vor der Validierung:
python -m src.pipeline run
Das schreibt data/validation_approvals.json mit allen Genehmigungsflags auf
false. Überprüfen Sie jede aktuelle Programmrichtlinie und setzen Sie alle drei Felder
auf true, nur wenn das Ziel noch im Scope ist und diese Art von Validierung erlaubt ist:
{
"manual_policy_reviewed": true,
"automated_testing_allowed": true,
"cve_testing_allowed": true
}
Dann validieren und Berichtsentwürfe generieren:
python -m src.pipeline validate
python -m src.pipeline report
Oder stufenweise:
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
Nur für private Laborziele umgeht validate --allow-unapproved die
Genehmigungsdatei. Für Legacy-Geräte, bei denen eine Zertifikatsvalidierung unmöglich ist,
deaktiviert validate --allow-insecure-tls die TLS-Überprüfung für diesen Durchlauf.
Die scope-Stufe funktioniert ohne API-Schlüssel – sie bezieht Daten von
arkadiyt/bounty-targets-data. Das Hinzufügen von H1_USERNAME + H1_API_TOKEN in
creds.env kann dies mit aktuellen Daten von der HackerOne Hacker API ergänzen, wenn
H1_LIVE=true gesetzt ist.
Alles lebt in creds.env. Siehe creds.env.example für die vollständige Liste.
Die wichtigen Parameter:
SCOPE_PLATFORMS — kommagetrennt. Standard: hackerone,bugcrowd. Fügen Sie
intigriti und yeswehack hinzu, wenn Sie eine breitere Abdeckung wünschen.TARGET_RPM — Anforderungen pro Host pro Minute. Standard 10. Erhöhen Sie dies nicht ohne
Grund.TLS_VERIFY — Standard: true.REQUIRE_VALIDATION_APPROVAL — Standard: true.docs/ETHICS.md — was Scope-Match autorisiert und was nicht,
und was der Validator bewusst nicht tut.docs/METHODOLOGY.md — wie die Reflexionsbewertung
funktioniert und warum jede Stufe existiert.Kein Massenexploit-Tool. Kein 0-Day. Kein Ersatz für das Lesen der Programmrichtlinie auf der Plattform, bevor Sie einen Bericht einreichen. Der Scope-Matcher ist ein Ausgangspunkt; der Richtlinientext ist der Vertrag.
MIT. Siehe LICENSE.