Wapiti - Scanner de vulnérabilités Web
Wapiti est un scanner de vulnérabilités Web écrit en Python.
http://wapiti-scanner.github.io/
Exigences
Pour fonctionner correctement, Wapiti a besoin de Python 3.10 ou 3.11
Toutes les dépendances du module Python seront installées automatiquement si vous utilisez le script setup.py ou pip install wapiti3
Voir INSTALL.md pour plus de détails sur l'installation.
L'exécution de Wapiti sur Windows peut être réalisée grâce à l'utilisation de WSL.
Comment ça marche
Wapiti fonctionne comme un scanner de vulnérabilités "boîte noire", ce qui signifie qu'il n'étudiera pas le code source des applications Web mais fonctionnera comme un fuzzer, analysant les pages de l'application Web déployée, extrayant les liens et les formulaires et attaquant les scripts, envoyer des charges utiles et rechercher des messages d'erreur, des chaînes spéciales ou des comportements anormaux.
Caractéristiques générales
- Génère des rapports de vulnérabilité dans différents formats (HTML, XML, JSON, TXT, CSV).
- Peut suspendre et reprendre un scan ou une attaque (mécanisme de session utilisant les bases de données sqlite3).
- Peut vous donner des couleurs dans le terminal pour mettre en évidence les vulnérabilités.
- Différents niveaux de verbosité.
- Un moyen rapide et facile d’activer/désactiver les modules d’attaque.
- L'ajout d'une charge utile peut être aussi simple que l'ajout d'une ligne à un fichier texte.
- Nombre configurable de tâches simultanées pour effectuer des requêtes HTTP.
Fonctionnalités de navigation
- Prend en charge les proxys HTTP, HTTPS et SOCKS5.
- Authentification HTTP sur la cible (Basic, Digest, NTLM)
- Authentification en remplissant des formulaires de connexion.
- Possibilité de restreindre la portée de l'analyse (domaine, dossier, page, URL).
- Suppression automatique d'un ou plusieurs paramètres dans les URL.
- Plusieurs protections contre les boucles sans fin d'analyse (par exemple, limite de valeurs pour un paramètre).
- Possibilité de paramétrer les premières URL à explorer (même si elles ne sont pas dans le scope).
- Peut exclure certaines URL de l'analyse et des attaques (ex : URL de déconnexion).
- Importez les cookies depuis votre navigateur Chrome ou Firefox ou en utilisant l'outil wapiti-getcookie.
- Peut activer/désactiver la vérification des certificats SSL.
- Extrayez les URL des fichiers Flash SWF.
- Essayez d'extraire les URL de javascript (interpréteur JS très basique).
- Compatible HTML5 (comprendre les balises HTML récentes).
- Plusieurs options pour contrôler le comportement et les limites du robot.
- Sauter certains noms de paramètres pendant l'attaque.
- Définition d'une durée maximale pour le processus d'analyse.
- Ajout d'en-têtes HTTP personnalisés ou définition d'un agent utilisateur personnalisé.
- Utiliser un navigateur sans tête Firefox pour l'exploration
- Chargement de votre propre code python pour les cas d'authentification compliqués (voir l'option --form-script)
- Ajout d'une URL ou d'un PATH personnalisé pour mettre à jour la base de données Wappalyzer
- Analyser les API REST à partir d'un fichier OpenAPI (swagger)
Attaques prises en charge
- Injections SQL (basées sur les erreurs, basées sur les booléens, basées sur le temps) et injections XPath
- Injections LDAP (basées sur les erreurs et basées sur les booléens)
- Cross Site Scripting (XSS) réfléchi et permanent
- Détection de divulgation de fichiers (include local et distant, require, fopen, readfile...)
- Détection d'exécution de commandes (eval(), system(), passtru()...)
- Injection XXE (entité externe XML)
- CRLF Injection
- Recherche de fichiers potentiellement dangereux sur le serveur (merci à la base de données Nikto)
- Contournement des configurations htaccess faibles
- Rechercher des copies (sauvegarde) des scripts sur le serveur
- Choc d'obus
- Énumération des dossiers et des fichiers (comme DirBuster)
- Forgerie de requêtes côté serveur (via l'utilisation d'un site Web Wapiti externe)
- Redirections ouvertes
- Détection de méthodes HTTP peu courantes (comme PUT)
- Évaluateur CSP de base
- Formulaire de connexion Brute Force (à l'aide d'une liste de dictionnaires)
- Vérification des en-têtes de sécurité HTTP
- Vérification des indicateurs de sécurité des cookies (indicateurs sécurisés et http uniquement)
- Détection de base de Cross Site Request Forgery (CSRF)
- La prise d'empreintes digitales des applications Web à l'aide de la base de données Wappalyzer donne des informations CVE associées
- Énumération des modules CMS pour Wordpress, Drupal, Joomla, SPIP, etc
- Détection des reprises de sous-domaines
- Détection Log4Shell (CVE-2021-44228)
- Détection Spring4Shell (CVE-2020-5398)
- Vérifier les redirections https
- Rechercher les vulnérabilités de téléchargement de fichiers
- Détection des périphériques réseau
- Injectez également des charges utiles dans le corps JSON
Wapiti prend en charge les méthodes HTTP GET et POST pour les attaques. Il prend également en charge le multipart et peut injecter des charges utiles dans les noms de fichiers (téléchargement). Afficher un avertissement lorsqu'une anomalie est trouvée (par exemple 500 erreurs et délais d'attente). Fait la différence entre les vulnérabilités XSS permanentes et reflétées.
Noms des modules
Les attaques susmentionnées sont liées aux noms de modules suivants :
- sauvegarde (Rechercher des copies de scripts et d'archives sur le serveur Web)
- brute_login_form (formulaire de connexion Brute Force utilisant une liste de dictionnaires)
- buster (module de type DirBuster)
- cms (Scan pour détecter les CMS et leurs versions)
- cookieflags (Vérifie les indicateurs Secure et HttpOnly)
- crlf (injection CR-LF dans les en-têtes HTTP)
- csp (Détecter le manque de CSP ou une configuration CSP faible)
- csrf (Détecte les formulaires non protégés contre CSRF ou utilisant des jetons anti-CSRF faibles)
- exec (exécution de code ou injection de commande)
- fichier (traversée du chemin, inclusion de fichier, etc.)
- htaccess (restrictions htaccess mal configurées)
- htp (Identifier les technologies web utilisées dans la base de données HashThePlanet)
- http_header (Vérifiez les en-têtes de sécurité HTTP)
- https_redirect (Vérifiez les redirections https)
- ldap (Détection d'injection LDAP basée sur les erreurs et basée sur les booléens)
- log4shell (Détecte les sites Web vulnérables à CVE-2021-44228)
- méthodes (Recherchez les méthodes HTTP disponibles peu courantes comme PUT)
- network_device (Recherchez les fichiers communs pour détecter les périphériques réseau)
- nikto (Recherchez les vulnérabilités connues en testant l'existence de l'URL et en vérifiant les réponses)
- permanentxss (Réanalysez la cible entière après l'exécution du module xss à la recherche de charges utiles précédemment entachées)
- rediriger (Ouvrir les redirections)
- shellshock (Test de l'attaque Shellshock, voir Wikipédia)
- spring4shell (Détecte les sites Web vulnérables à CVE-2020-5398)
- sql (détection d'injection SQL basée sur les erreurs et basée sur les booléens)
- ssl (Évaluer la sécurité de la configuration du certificat SSL/TLS, nécessite sslscan)
- ssrf (contrefaçon de requête côté serveur)
- reprise (reprise de sous-domaine)
- timesql (vulnérabilités d'injection SQL détectées avec une méthodologie basée sur le temps)
- télécharger (vulnérabilités de téléchargement de fichiers)
- wapp (Pas un module d'attaque, récupère les technologies web avec les versions et catégories utilisées sur la cible, trouve les CVE correspondants)
- wp_enum (Énumérer les plugins et les thèmes sur un site Web Wordpress)
- xss (module d'injection XSS)
- xxe (attaque d'entité externe XML)
Les noms de modules peuvent être donnés sous forme de liste séparée par des virgules en utilisant l'option "-m" ou "--module".
Comment obtenir les meilleurs résultats
Pour trouver plus de vulnérabilités (car certaines attaques sont basées sur des erreurs), vous pouvez modifier les configurations de votre serveur Web.
Par exemple, vous pouvez définir les valeurs suivantes dans votre configuration PHP :
safe_mode = Désactivé
display_errors = activé (recommandé)
magic_quotes_gpc = Désactivé
allow_url_fopen = Activé
mysql.trace_mode = Activé
Où obtenir de l'aide
Dans l'invite, tapez simplement la commande suivante pour obtenir l'utilisation de base :
wapiti -h
Vous pouvez également consulter la page de manuel (wapiti.1 ou wapiti.1.html) pour plus de détails sur chaque option.
Nous avons également un wiki officiel plus exhaustif : https://github.com/wapiti-scanner/wapiti/wiki
Si vous avez une autre question, consultez d'abord la FAQ
Si vous trouvez un bug, remplissez un ticket : https://github.com/wapiti-scanner/wapiti/issues
Comment aider le projet Wapiti
Tu peux :
- Soutenez le projet en faisant un don ( http://sf.net/donate/index.php?group_id=168625 )
- Créer ou améliorer des modules d'attaque
- Créer ou améliorer des générateurs et des modèles de rapports
- Envoyez des corrections de bugs, des correctifs...
- Écrire des interfaces graphiques
- Créer un outil pour convertir les fichiers PCAP en fichiers de session Wapiti sqlite3
- Parlez de Wapiti autour de vous
Licence
Wapiti est publié sous la licence publique générale GNU version 2 (la GPL). Le code source est disponible sur Github.
Créé par Nicolas SURRIBAS.
Commanditaires
Cyberwatch https://cyberwatch.fr/
Sécurité pour tous https://securityforeveryone.com/
Clause de non-responsabilité
Wapiti est un logiciel de cybersécurité. Il effectue des évaluations de sécurité sur une cible fournie, ce qui peut entraîner des dysfonctionnements et des plantages sur la cible, ainsi qu'une perte potentielle de données.
L'utilisation de Wapiti pour attaquer une cible sans le consentement préalable de son propriétaire est illégale. Il est de la responsabilité de l'utilisateur final de respecter toutes les lois locales applicables.
Les développeurs et les personnes impliquées dans le projet Wapiti n'assument aucune responsabilité et ne sont pas responsables de toute mauvaise utilisation ou dommage causé par ce programme.