Wapiti - Scanneur de vulnérabilités Web
.. image:: https://img.shields.io/pypi/v/wapiti3?label=PyPI&logo=PyPI&logoColor=white&color=blue
:alt: PyPI version
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://img.shields.io/pypi/pyversions/wapiti3
:alt: Supported Python versions
:target: https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md
.. image:: https://img.shields.io/github/license/wapiti-scanner/wapiti
:alt: License: GPL-2.0
:target: https://github.com/wapiti-scanner/wapiti/blob/master/LICENSE
.. image:: https://img.shields.io/pypi/dd/wapiti3
:alt: Downloads per day on PyPi
:target: https://pypi.python.org/pypi/wapiti3
.. image:: https://codecov.io/gh/wapiti-scanner/wapiti/branch/master/graph/badge.svg?token=GFEIORAFB8
:target: https://codecov.io/gh/wapiti-scanner/wapiti
Wapiti est un scanneur de vulnérabilités web écrit en Python.
http://wapiti-scanner.github.io/
Prérequis
Pour fonctionner correctement, Wapiti nécessite Python 3.12, 3.13 ou 3.14.
Toutes les dépendances des modules Python seront installées automatiquement si vous utilisez le script setup.py ou pip install wapiti3.
Voir INSTALL.md <https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md>__ pour plus de détails sur l'installation.
L'exécution de Wapiti sur Windows peut être réalisée via l'utilisation de WSL <https://learn.microsoft.com/en-us/training/modules/get-started-with-windows-subsystem-for-linux/>__.
Wapiti fonctionne comme un scanneur de vulnérabilités « boîte noire », ce qui signifie qu'il n'étudie pas le code source des applications web mais agit comme un fuzzer, en scannant les pages de l'application web déployée, en extrayant les liens et les formulaires et en attaquant les scripts, en envoyant des payloads et en recherchant des messages d'erreur, des chaînes de caractères spéciales ou des comportements anormaux.
Fonctionnalités générales
- Génère des rapports de vulnérabilités dans divers formats (HTML, XML, JSON, TXT, CSV, Markdown).
- Peut suspendre et reprendre un scan ou une attaque (mécanisme de session utilisant des bases de données sqlite3).
- Peut afficher des couleurs dans le terminal pour mettre en évidence les vulnérabilités.
- Différents niveaux de verbosité.
- Moyen rapide et simple d'activer/désactiver les modules d'attaque.
- Ajouter un payload peut être aussi simple que d'ajouter une ligne à un fichier texte.
- Nombre configurable de tâches concurrentes pour effectuer les requêtes HTTP.
Fonctionnalités de navigation
- Prise en charge des proxys HTTP, HTTPS et SOCKS5.
- Authentification HTTP sur la cible (Basic, Digest, NTLM).
- Authentification en remplissant les formulaires de connexion.
- Capacité à restreindre le périmètre du scan (domaine, dossier, page, url).
- Suppression automatique d'un ou plusieurs paramètres dans les URL.
- Plusieurs protections contre les boucles infinies de scan (par exemple, limite de valeurs pour un paramètre).
- Possibilité de définir les premières URL à explorer (même si elles sont hors périmètre).
- Peut exclure certaines URL du scan et des attaques (par exemple : URL de déconnexion).
- Importer les cookies de votre navigateur Chrome ou Firefox ou en utilisant l'outil
wapiti-getcookie.
- Peut activer / désactiver la vérification des certificats SSL.
- Tente d'extraire les URL du javascript (interpréteur JS très basique).
- Compatible HTML5 (comprend les balises HTML récentes).
- Plusieurs options pour contrôler le comportement et les limites du robot d'exploration.
- Ignorer certains noms de paramètres pendant l'attaque.
- Définir un temps maximum pour le processus de scan.
- Ajouter des en-têtes HTTP personnalisés ou définir un User-Agent personnalisé.
- Utiliser un navigateur Firefox sans tête (headless) pour l'exploration.
- Charger votre propre code python pour les cas d'authentification complexes (voir l'option
--form-script).
- Ajouter une URL ou un CHEMIN personnalisé pour mettre à jour la base de données Wappalyzer.
- Scanner les API REST à partir d'un fichier OpenAPI (swagger).
Attaques prises en charge
- Injections SQL (basées sur les erreurs, booléennes, temporelles) et injections XPath
- Injections LDAP (basées sur les erreurs et booléennes)
- 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 (Xml eXternal Entity)
- Injection CRLF
- Recherche de fichiers potentiellement dangereux sur le serveur (grâce à la base de données Nikto)
- Contournement des configurations htaccess faibles
- Recherche de copies (sauvegardes) de scripts sur le serveur
- Shellshock
- Énumération de dossiers et de fichiers (type DirBuster)
- Server Side Request Forgery (via l'utilisation d'un site Web Wapiti externe)
- Redirections ouvertes
- Détection de méthodes HTTP inhabituelles (comme PUT)
- Évaluateur CSP de base
- Force brute sur formulaire de connexion (en utilisant une liste de dictionnaire)
- Vérification des en-têtes de sécurité HTTP
- Vérification des indicateurs de sécurité des cookies (indicateurs secure et httponly)
- Détection de base des Cross Site Request Forgery (CSRF)
- Empreinte (fingerprinting) des applications web à l'aide de la base de données Wappalyzer, fournit des informations sur les CVE associées
- Énumération des modules CMS pour Wordpress, Drupal, Joomla, Magento, SPIP, Typo3, etc.
- Détection de détournements de sous-domaines
- Détection de Log4Shell (CVE-2021-44228)
- Détection de Spring4Shell (CVE-2022-22965)
- Vérification des redirections https
- Vérification des vulnérabilités d'upload de fichiers
- Détection des équipements réseau
- Injection de payloads également 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 payloads dans les noms de fichiers (upload).
Affiche un avertissement lorsqu'une anomalie est détectée (par exemple, erreurs 500 et timeouts).
Fait la différence entre les vulnérabilités XSS permanentes et réfléchies.
Noms des modules
Les attaques susmentionnées sont liées aux noms de modules suivants :
- backup (Recherche des copies de scripts et d'archives sur le serveur web)
- brute_login_form (Force brute sur formulaire de connexion à l'aide d'une liste de dictionnaire)
- 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étecte l'absence de CSP ou une configuration CSP faible)
- csrf (Détecte les formulaires non protégés contre les CSRF ou utilisant des jetons anti-CSRF faibles)
- exec (Exécution de code ou injection de commandes)
- file (Traversée de chemin, inclusion de fichiers, etc.)
- htaccess (Restrictions htaccess mal configurées)
- htp (Identifie les technologies web à l'aide de la base de données HashThePlanet)
- http_headers (Vérifie les en-têtes de sécurité HTTP)
- https_redirect (Vérifie les redirections https)
- ldap (Détection d'injections LDAP basées sur les erreurs et booléennes)
- log4shell (Détecte les sites web vulnérables à CVE-2021-44228)
- methods (Recherche les méthodes HTTP disponibles inhabituelles comme PUT)
- network_device (Recherche des fichiers courants pour détecter les équipements réseau)
- nikto (Recherche des vulnérabilités connues en testant l'existence d'URL et en vérifiant les réponses)
- permanentxss (Rescanne l'ensemble de la cible après l'exécution du module xss à la recherche de payloads préalablement marqués)
- printer (Détecte les imprimantes réseau, récupère les informations de modèle et de firmware)
- redirect (Redirections ouvertes)
- shellshock (Teste l'attaque Shellshock, voir
Wikipedia <https://en.wikipedia.org/wiki/Shellshock_%28software_bug%29>__)
- spring4shell (Détecte les sites web vulnérables à CVE-2020-5398)
- sql (Détection d'injections SQL basées sur les erreurs et booléennes)
- ssl (Évalue la sécurité de la configuration des certificats SSL/TLS, nécessite
sslscan <https://github.com/rbsec/sslscan>__)
- ssrf (Server Side Request Forgery)
- takeover (Détournement de sous-domaine)
- timesql (Vulnérabilités d'injection SQL détectées avec la méthodologie basée sur le temps)
Les noms de modules peuvent être fournis sous forme de liste séparée par des virgules en utilisant l'option "-m" ou "--module".
Pour trouver plus de vulnérabilités (car certaines attaques sont basées sur les erreurs), vous pouvez modifier la configuration de votre serveur web.
Par exemple, vous pouvez définir les valeurs suivantes dans votre configuration PHP :
.. code-block::
safe_mode = Off
display_errors = On (recommended)
magic_quotes_gpc = Off
allow_url_fopen = On
mysql.trace_mode = On
Où obtenir de l'aide
Dans l'invite de commandes, tapez simplement la commande suivante pour obtenir l'utilisation de base :
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 <https://github.com/wapiti-scanner/wapiti/blob/master/doc/FAQ.md>__
Si vous trouvez un bug, créez un ticket (issue) : https://github.com/wapiti-scanner/wapiti/issues
Vous pouvez :
- Soutenir 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 les générateurs de rapports et les modèles
- Envoyer des correctifs, des patchs...
- Écrire des interfaces graphiques (GUI)
- Créer un outil pour convertir les fichiers PCAP en fichiers de session sqlite3 de Wapiti
- Parler de Wapiti autour de vous
Licence
Wapiti est publié sous la licence publique générale GNU version 2 (GPL). Le code source est disponible sur Github <https://github.com/wapiti-scanner/wapiti>__.
Créé par Nicolas SURRIBAS.
Cyberwatch https://cyberwatch.com/
Security For Everyone https://securityforeveryone.com/
IP-Nina https://ip-ninja.com/
Avertissement
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 tout usage abusif ou dommage causé par ce programme.