
Pipeline automatisé de validation XSS pour CVE-2020-3580 avec découverte basée sur Shodan, correspondance de périmètre, et tests canary à validation par approbation pour les points de terminaison SAML WebVPN Cisco ASA/FTD.
Cisco ASA / FTD XSS réfléchi dans le endpoint SAML SP ACS de WebVPN
(/+CSCOE+/saml/sp/acs). Corrigé dans
cisco-sa-asaftd-xss-multiple-FCB3vPZe.
Ce dépôt contient :
xss.html — un PoC vérifiable manuellement pour des cibles autorisées.src/ — un pipeline de découverte et de validation avec prise en compte du périmètre.docs/ — méthodologie et éthique.┌──────────┐ ┌──────────────┐ ┌────────────────────┐ ┌────────────────┐ ┌──────────────┐
│ Shodan │ → │ correspond. │ → │ approbation man. │ → │ vérif. canary │ → │ brouillon │
│ (3 dorks)│ │ périmètre │ │ refus par défaut │ │ pas d'exéc. JS │ │ rapport MD │
└──────────┘ └──────────────┘ └────────────────────┘ └────────────────┘ └──────────────┘
Chaque étape écrit un artefact JSON inspectable et s'exécute indépendamment.
Le validateur n'exécute pas alert(). Il POST une chaîne canary unique
contenant <>"' bruts et évalue le corps de la réponse. Les hits confirmés
reçoivent un brouillon Markdown avec le xss.html original inclus pour que le
relecteur du programme puisse le vérifier dans son propre navigateur.
La validation est soumise à approbation. Une correspondance de périmètre n'est
qu'un point de départ ; le brief actuel du programme est le contrat. Avant toute
validation active, examinez la politique du programme et définissez les indicateurs
d'approbation de la cible dans 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 # ajoutez votre clé Shodan, éventuellement les tokens H1/BC
creds.env est dans .gitignore. Le .gitignore bloque tout fichier correspondant
à *.env (sauf *.env.example), ainsi que data/ et reports/ pour garder les
listes de cibles et les extraits de validation hors du dépôt public.
La commande de bout en bout par défaut s'arrête intentionnellement avant la validation :
python -m src.pipeline run
Cela écrit data/validation_approvals.json avec tous les indicateurs d'approbation
à false. Examinez chaque brief de programme actuel et mettez les trois champs
à true uniquement lorsque la cible est toujours dans le périmètre et que ce type
de validation est autorisé :
{
"manual_policy_reviewed": true,
"automated_testing_allowed": true,
"cve_testing_allowed": true
}
Ensuite, validez et générez les brouillons de rapport :
python -m src.pipeline validate
python -m src.pipeline report
Ou étape par étape :
python -m src.pipeline discover # Shodan → data/shodan_hits.json
python -m src.pipeline scope # correspondance → data/in_scope.json
python -m src.pipeline approve-template # → data/validation_approvals.json
python -m src.pipeline validate # vérifications canary approuvées uniquement
python -m src.pipeline report # → reports/<host>__CVE-2020-3580.md
Pour les cibles de laboratoire privé uniquement, validate --allow-unapproved
contourne le fichier d'approbation. Pour les équipements anciens où la validation
de certificat est impossible, validate --allow-insecure-tls désactive la
vérification TLS pour cette exécution.
L'étape scope fonctionne sans aucune clé API — elle tire les données de
arkadiyt/bounty-targets-data. L'ajout de H1_USERNAME + H1_API_TOKEN dans
creds.env peut l'enrichir avec des données fraîches de l'API HackerOne Hacker
lorsque H1_LIVE=true est défini.
Tout se trouve dans creds.env. Voir creds.env.example pour la liste complète.
Les réglages notables :
SCOPE_PLATFORMS — séparés par des virgules. Par défaut hackerone,bugcrowd.
Ajoutez intigriti et yeswehack pour une couverture plus large.TARGET_RPM — requêtes par minute par hôte. Par défaut 10. Ne l'augmentez pas
sans raison.TLS_VERIFY — par défaut true.REQUIRE_VALIDATION_APPROVAL — par défaut true.docs/ETHICS.md — ce que la correspondance de périmètre
autorise et n'autorise pas, et ce que le validateur ne fait délibérément pas.docs/METHODOLOGY.md — comment fonctionne la notation
de réflexion et pourquoi chaque étape existe.Pas un outil d'exploitation de masse. Pas un 0day. Pas un substitut à la lecture du brief du programme sur la plateforme avant de soumettre. Le matcher de périmètre est un point de départ ; le texte de la politique est le contrat.
MIT. Voir LICENSE.