
Le Prime kit d'audit et d'exploitation de la falsification de requête intersite (CSRF).
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
Origin: null) ainsi que les contournements par méthode de substitution et Content-Type.--max-urls, --max-depth et --crawl-timeout).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.
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.
Voyons quelques scénarios réels de XSRFProbe en action :
Pour les informations d'utilisation complètes, veuillez consulter le wiki — Utilisation générale et Utilisation avancée.
XSRFProbe peut être facilement installé via une seule commande :
pip install xsrfprobe
pip install .
xsrfprobe --help
--browser, --auto-validate-poc) nécessitent en plus que geckodriver soit disponible dans votre PATH (ou pointé via --geckodriver-path).xsrfprobe-output. Dans ce dossier, vous pouvez consulter les journaux détaillés et les informations collectées lors des scans (passez --json pour un rapport lisible par machine).XSRFProbe est actuellement en v3.0.0 et le travail est sous licence GNU General Public License (GPLv3).
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 !
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.
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
| 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 |