Wapiti - Escáner de vulnerabilidades 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 es un escáner de vulnerabilidades web escrito en Python.
http://wapiti-scanner.github.io/
Requisitos
Para funcionar correctamente, Wapiti necesita Python 3.12, 3.13 o 3.14.
Todas las dependencias de módulos de Python se instalarán automáticamente si usas el script setup.py o pip install wapiti3
Consulta INSTALL.md <https://github.com/wapiti-scanner/wapiti/blob/master/INSTALL.md>__ para más detalles sobre la instalación.
Ejecutar Wapiti en Windows se puede lograr mediante el uso de WSL <https://learn.microsoft.com/en-us/training/modules/get-started-with-windows-subsystem-for-linux/>__.
Cómo funciona
Wapiti funciona como un escáner de vulnerabilidades de "caja negra", lo que significa que no estudia el código fuente de las aplicaciones web, sino que funciona como un fuzzer, escaneando las páginas de la aplicación web desplegada, extrayendo enlaces y formularios, y atacando los scripts, enviando payloads y buscando mensajes de error, cadenas especiales o comportamientos anómalos.
Características generales
- Genera informes de vulnerabilidades en varios formatos (HTML, XML, JSON, TXT, CSV, Markdown).
- Puede suspender y reanudar un escaneo o un ataque (mecanismo de sesión usando bases de datos sqlite3).
- Puede darte colores en la terminal para resaltar vulnerabilidades.
- Diferentes niveles de verbosidad.
- Forma rápida y sencilla de activar/desactivar módulos de ataque.
- Añadir un payload puede ser tan fácil como añadir una línea a un archivo de texto.
- Número configurable de tareas concurrentes para realizar peticiones HTTP.
Características de navegación
- Soporte de proxies HTTP, HTTPS y SOCKS5.
- Autenticación HTTP en el objetivo (Basic, Digest, NTLM)
- Autenticación mediante el relleno de formularios de acceso.
- Capacidad de restringir el alcance del escaneo (dominio, carpeta, página, url).
- Eliminación automática de uno o más parámetros en las URLs.
- Múltiples salvaguardas contra bucles infinitos de escaneo (por ejemplo, límite de valores para un parámetro).
- Posibilidad de establecer las primeras URLs a explorar (incluso si están fuera del alcance).
- Puede excluir algunas URLs del escaneo y de los ataques (ej: URL de cierre de sesión).
- Importar cookies desde tu navegador Chrome o Firefox o usando la herramienta
wapiti-getcookie.
- Puede activar / desactivar la verificación de certificados SSL.
- Intenta extraer URLs de javascript (intérprete de JS muy básico).
- Compatible con HTML5 (entiende etiquetas HTML recientes).
- Varias opciones para controlar el comportamiento y los límites del rastreador.
- Omitir algunos nombres de parámetros durante el ataque.
- Establecer un tiempo máximo para el proceso de escaneo.
- Añadir algunos encabezados HTTP personalizados o establecer un User-Agent personalizado.
- Usar un navegador Firefox headless para el rastreo
- Cargar tu propio código Python para casos de autenticación complicados (ver la opción
--form-script)
- Añadir una URL o RUTA personalizada para actualizar la base de datos de Wappalyzer
- Escanear APIs REST proporcionadas por un archivo OpenAPI (swagger)
Ataques compatibles
- Inyecciones SQL (basadas en errores, booleanas, basadas en tiempo) e inyecciones XPath
- Inyecciones LDAP (basadas en errores y booleanas)
- Cross Site Scripting (XSS) reflejado y permanente
- Detección de divulgación de archivos (include, require, fopen, readfile... locales y remotos)
- Detección de ejecución de comandos (eval(), system(), passtru()...)
- Inyección XXE (Xml eXternal Entity)
- Inyección CRLF
- Búsqueda de archivos potencialmente peligrosos en el servidor (gracias a la base de datos de Nikto)
- Bypass de configuraciones htaccess débiles
- Búsqueda de copias (backup) de scripts en el servidor
- Shellshock
- Enumeración de carpetas y archivos (tipo DirBuster)
- Server Side Request Forgery (mediante el uso de un sitio web externo de Wapiti)
- Open Redirects
- Detección de métodos HTTP poco comunes (como PUT)
- Evaluador CSP básico
- Fuerza bruta en formularios de acceso (usando una lista de diccionario)
- Comprobación de encabezados de seguridad HTTP
- Comprobación de flags de seguridad en cookies (flags secure y httponly)
- Detección básica de Cross Site Request Forgery (CSRF)
- Fingerprinting de aplicaciones web usando la base de datos de Wappalyzer, proporciona información de CVE relacionada
- Enumeración de módulos CMS para Wordpress, Drupal, Joomla, Magento, SPIP, Typo3, etc
- Detección de subdomain takeovers
- Detección de Log4Shell (CVE-2021-44228)
- Detección de Spring4Shell (CVE-2022-22965)
- Comprobación de redirecciones https
- Comprobación de vulnerabilidades de subida de archivos
- Detección de dispositivos de red
- Inyecta payloads también en el cuerpo JSON
Wapiti soporta métodos HTTP GET y POST para los ataques.
También soporta multipart y puede inyectar payloads en los nombres de archivo (upload).
Muestra una advertencia cuando se encuentra una anomalía (por ejemplo, errores 500 y timeouts)
Diferencia entre vulnerabilidades XSS permanentes y reflejadas.
Nombres de módulos
Los ataques mencionados están vinculados a los siguientes nombres de módulos: