
XSRFProbe v3.0.0
Le Prime kit d'audit et d'exploitation de la falsification de requête intersite (CSRF).
XSRFProbe
La boîte à outils d'audit et d'exploitation de la falsification de requête intersite (Cross-Site Request Forgery).
À propos
XSRFProbe est une boîte à outils avancée d'audit et d'exploitation de la falsification de requête intersite (CSRF/XSRF). Équipée d'un moteur de crawling puissant et de nombreux contrôles systématiques, elle est capable de détecter la plupart des cas de vulnérabilités CSRF, leurs contournements associés, et de générer des preuves de concept exploitables pour chaque vulnérabilité découverte. Pour plus d'informations sur le fonctionnement de XSRFProbe, voir XSRFProbe Internals sur le wiki.
Wiki XSRFProbe • Pour commencer • Utilisation générale • Utilisation avancée • Fonctionnement interne de XSRFProbe • Galerie
Quelques fonctionnalités
- Effectue une batterie complète de vérifications systématiques — soutenues par un moteur de différenciation/benchmark des réponses — avant de déclarer un point d'accès vulnérable.
- Détecte et altère activement de nombreuses implémentations de jetons anti-CSRF : changement de méthode de requête, suppression du jeton, valeurs vides/dupliquées, jetons non liés à la session, cookies double-soumission et jetons d'en-tête personnalisés.
- Sonde la validation Referer et Origin avec des contournements du monde réel (suppression d'en-tête, astuces regex/sous-domaine,
Origin: null) ainsi que les contournements par méthode de substitution et Content-Type. - Analyse les protections SameSite des cookies, avec une énumération optionnelle des sous-domaines (via crt.sh) pour tester les contournements par domaine frère.
- Fonctionne avec un crawler puissant offrant un crawl et un scan déterministes et limités (configurables via
--max-urls,--max-depthet--crawl-timeout). - Intégration optionnelle de Firefox sans tête (Selenium) pour les tests dépendants du navigateur et la validation automatique des PoC générées.
- Détection précise de la force des jetons et analyse à l'aide de vérifications d'entropie et d'encodage.
- Peut générer à la fois des preuves de concept CSRF normales et des preuves de concept malveillantes exploitables.
- Support prêt à l'emploi pour les valeurs de cookies personnalisées, les en-têtes génériques et un rapport JSON — chaque résultat est accompagné d'une note de sévérité et d'une condition d'exploitabilité.
- L'utilisateur a le contrôle total sur tout ce que le scanner fait.
- Environnement d'interaction convivial avec prise en charge complète du mode verbeux et journalisation détaillée des erreurs, vulnérabilités et jetons.
Tests de vulnérabilité effectués :
Chaque vérification effectuée par XSRFProbe possède un identifiant unique. Cet identifiant est affiché dans la sortie console (par ex. [T6] VULNÉRABLE : ...) et stocké comme champ test_id de chaque résultat dans le rapport JSON (avec sa severity et, le cas échéant, une note exploitability sous details), de sorte que chaque résultat renvoie au test exact qui l'a produit.
| ID | Catégorie | Vérification |
|---|---|---|
D1 | Présence du jeton | Aucun jeton anti-CSRF présent (falsification de requête générique) |
D2 | Présence du jeton | Le formulaire de connexion ne possède pas de jeton CSRF (CSRF de connexion) |
T2 | Altération du jeton | Validation liée à la méthode de requête (commutation GET ↔ POST) |
T3 | Altération du jeton | Le jeton peut être complètement omis |
T4 | Altération du jeton | Le jeton n'est pas lié à la session utilisateur (relecture inter-session) |
T5 | Altération du jeton | Le jeton est lié à un cookie non-session (ex. csrfKey) |
T6 | Altération du jeton | Cookie double-soumission naïf (cookie == corps, sans liaison) |
T7 | Altération du jeton | Valeur de jeton vide acceptée |
T8 | Altération du jeton | Jeton d'en-tête personnalisé peut être omis ou falsifié |
M1 | Méthode / Content-Type | Surcharge de méthode HTTP via le paramètre _method |
M2 | Méthode / Content-Type | Surcharge de méthode HTTP via l'en-tête X-HTTP-Method-Override |
M4 | Méthode / Content-Type | Contournement de la validation via un Content-Type alternatif |
R0 | Referer | L'en-tête Referer n'est pas validé lors de la soumission du formulaire |
R1 | Referer | Contournement de la validation Referer en omettant l'en-tête |
R2a | Referer | Contournement regex Referer — cible en tant que sous-domaine attaquant |
R2b | Referer | Contournement regex Referer — cible dans la chaîne de requête |
R2c | Referer | Contournement regex Referer — cible dans le chemin |
O1 | Origin | Contournement de la validation Origin avec Origin: null |
O2 | Origin | Contournement de la validation Origin via une astuce de sous-domaine |
O3 | Origin | Contournement de la validation Origin en omettant l'en-tête |
S2 | SameSite (navigateur) | Contournement de SameSite=Strict via un gadget de redirection côté client |
S3 | SameSite (navigateur) | Contournement de SameSite=Strict via XSS sur un sous-domaine frère |
S4 | SameSite (navigateur) | Contournement de SameSite=Lax via un flux de rafraîchissement de cookie / OAuth |
C1 | Posture des cookies | Analyse de l'attribut SameSite des cookies (None/Lax/Strict) |
C2 | Posture des cookies | Aucun attribut SameSite défini sur les cookies |
E1 | Force du jeton | Le jeton utilise un encodage de hachage faible/structuré |
A1 | Force du jeton | Analyse post-scan de la prédictibilité / forgeabilité du jeton |
Les vérifications
S*nécessitent l'intégration optionnelle du navigateur sans tête (--browser). Les vérificationsT*/M*/R*/O*sont des vérifications au niveau HTTP contrôlées par le moteur de différenciation/benchmark des réponses.
Galerie
Voyons quelques scénarios réels de XSRFProbe en action :
Installation et utilisation
Pour les informations d'utilisation complètes, veuillez consulter le wiki — Utilisation générale et Utilisation avancée.
Installation via Pypi :
XSRFProbe peut être facilement installé via une seule commande :
pip install xsrfprobe
Installation manuelle :
- Pour les bases, la première étape consiste à installer l'outil :
pip install .
- Maintenant, l'outil peut être lancé via :
xsrfprobe --help
- Les tests dépendants du navigateur (
--browser,--auto-validate-poc) nécessitent en plus que geckodriver soit disponible dans votrePATH(ou pointé via--geckodriver-path). - Après avoir testé XSRFProbe sur un site, un dossier de sortie est créé dans votre répertoire de travail actuel sous le nom
xsrfprobe-output. Dans ce dossier, vous pouvez consulter les journaux détaillés et les informations collectées lors des scans (passez--jsonpour un rapport lisible par machine).
Version et licence
XSRFProbe est actuellement en v3.0.0 et le travail est sous licence GNU General Public License (GPLv3).
Avertissements
N'utilisez pas cet outil sur un site en production !
Car cet outil est conçu pour effectuer automatiquement toutes sortes de soumissions de formulaires, ce qui pourrait saboter le site. Parfois, vous pourriez endommager la base de données et probablement aussi provoquer un déni de service (DoS) sur le site.
Testez sur une configuration/un site jetable/de test !
Clause de non-responsabilité
L'utilisation de XSRFProbe pour tester des sites web sans accord mutuel préalable peut être considérée comme une activité illégale. Il est de la responsabilité finale de l'utilisateur de se conformer à toutes les lois locales, étatiques et fédérales applicables. L'auteur décline toute responsabilité et n'est pas responsable de toute mauvaise utilisation ou de tout dommage causé par ce programme.
Mot de l'auteur
Ce projet est basé entièrement sur mes propres recherches et ma propre expérience avec les applications web concernant les attaques par falsification de requête intersite (Cross-Site Request Forgery). Vous pouvez parcourir le code source pour comprendre comment cette boîte à outils a été construite. Les pull requests utiles, idées et problèmes sont les bienvenus. Si vous souhaitez voir comment XSRFProbe est développé, consultez le Tableau de développement.
Confectionné avec ♡ par @0xInfection