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 :