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:
backup (Busca copias de scripts y archivos en el servidor web)
brute_login_form (Fuerza bruta en formularios de acceso usando una lista de diccionario)
buster (Módulo tipo DirBuster)
cms (Escaneo para detectar CMS y sus versiones)
cookieflags (Comprueba los flags Secure y HttpOnly)
crlf (Inyección CR-LF en encabezados HTTP)
csp (Detecta falta de CSP o configuración CSP débil)
csrf (Detecta formularios no protegidos contra CSRF o con tokens anti-CSRF débiles)
exec (Ejecución de código o inyección de comandos)
file (Path traversal, inclusión de archivos, etc)
htaccess (Restricciones htaccess mal configuradas)
htp (Identifica tecnologías web usando la base de datos HashThePlanet)
http_headers (Comprueba los encabezados de seguridad HTTP)
https_redirect (Comprueba las redirecciones https)
ldap (Detección de inyección LDAP basada en errores y booleana)
log4shell (Detecta sitios web vulnerables a CVE-2021-44228)
methods (Busca métodos HTTP disponibles poco comunes como PUT)
network_device (Busca archivos comunes para detectar dispositivos de red)
nikto (Busca vulnerabilidades conocidas probando la existencia de URLs y comprobando las respuestas)
permanentxss (Reescanea todo el objetivo después de la ejecución del módulo xss buscando payloads previamente contaminados)
printer (Detecta impresoras de red, obtiene información del modelo y del firmware)
redirect (Open Redirects)
shellshock (Prueba el ataque Shellshock, ver Wikipedia <https://en.wikipedia.org/wiki/Shellshock_%28software_bug%29>__)
spring4shell (Detecta sitios web vulnerables a CVE-2020-5398)
sql (Detección de inyección SQL basada en errores y booleana)
ssl (Evalúa la seguridad de la configuración de certificados SSL/TLS, requiere sslscan <https://github.com/rbsec/sslscan>__)
ssrf (Server Side Request Forgery)
takeover (Subdomain takeover)
timesql (Vulnerabilidades de inyección SQL detectadas con metodología basada en tiempo)
upload (Vulnerabilidades de subida de archivos)
wapp (No es un módulo de ataque, obtiene las tecnologías web con versiones y categorías en uso en el objetivo, encuentra los CVE correspondientes)
wp_enum (Enumera plugins y temas en un sitio web Wordpress)
xss (Módulo de inyección XSS)
xxe (Ataque de XML External Entity)
Los nombres de módulos se pueden indicar como una lista separada por comas usando la opción "-m" o "--module".
Cómo obtener los mejores resultados
Para encontrar más vulnerabilidades (ya que algunos ataques se basan en errores), puedes modificar
la configuración de tu servidor web.
Por ejemplo, puedes establecer los siguientes valores en tu configuración de PHP:
.. code-block::
root@kitploit:~
safe_mode = Off
display_errors = On (recommended)
magic_quotes_gpc = Off
allow_url_fopen = On
mysql.trace_mode = On
Dónde obtener ayuda
En el prompt, solo escribe el siguiente comando para obtener el uso básico:
root@kitploit:~
wapiti -h
También puedes echar un vistazo a la página man (wapiti.1 o wapiti.1.html) para más detalles sobre cada opción.
Crear o mejorar generadores y plantillas de informes
Enviar correcciones de errores, parches...
Escribir algunas GUIs
Crear una herramienta para convertir archivos PCAP a archivos de sesión sqlite3 de Wapiti
Hablar de Wapiti a tu alrededor
Licencia
Wapiti se distribuye bajo la Licencia Pública General de GNU versión 2 (GPL).
El código fuente está disponible en Github <https://github.com/wapiti-scanner/wapiti>__.
Wapiti es un software de ciberseguridad. Realiza evaluaciones de seguridad sobre un objetivo proporcionado, lo que puede provocar fallos y bloqueos en el objetivo, así como una posible pérdida de datos.
El uso de Wapiti para atacar un objetivo sin el consentimiento previo de su propietario es ilegal. Es responsabilidad del usuario final cumplir todas las leyes locales aplicables.
Los desarrolladores y las personas involucradas en el proyecto Wapiti no asumen ninguna responsabilidad y no son responsables de ningún uso indebido o daño causado por este programa.