Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo

Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo
En el pasado статье nosotros hablamos acerca de Nemesida WAF Gratis - una herramienta gratuita para proteger sitios web y API de ataques de piratas informáticos, y en esta decidimos revisar un escáner de vulnerabilidades popular Wapiti.

Escanear un sitio web en busca de vulnerabilidades es una medida necesaria que, junto con el análisis del código fuente, permite evaluar el nivel de seguridad frente a amenazas de compromiso. Puede escanear un recurso web utilizando herramientas especializadas.

Nikto, W3af (escrito en Python 2.7, que ya no es compatible) o Arachni (ya no es compatible desde febrero) son las soluciones más populares presentadas en el segmento gratuito. Por supuesto, hay otros, por ejemplo Wapiti, en los que decidimos centrarnos.

Wapiti trabaja con los siguientes tipos de vulnerabilidades:

  • expansión de archivos (local y remoto, fopen, readfile);
  • inyecciones (inyección PHP/JSP/ASP/SQL e inyección XPath);
  • XSS (Cross Site Scripting) (reflexivo y persistente);
  • detección y ejecución de comandos (eval(), system(), passtru());
  • Inyecciones CRLF (división de respuesta HTTP, fijación de sesión);
  • incrustación de XXE (entidad externa XML);
  • SSRF (falsificación de solicitudes del lado del servidor);
  • uso de archivos potencialmente peligrosos (gracias a la base de datos Nikto);
  • configuraciones débiles de .htaccess que pueden omitirse;
  • la presencia de archivos de respaldo que revelan información confidencial (divulgación del código fuente);
  • Neurosis de guerra;
  • redirecciones abiertas;
  • Métodos HTTP no estándar que se pueden resolver (PUT).

Características:

  • Compatibilidad con proxy HTTP, HTTPS y SOCKS5;
  • autenticación mediante varios métodos: Básico, Digest, Kerberos o NTLM;
  • la capacidad de limitar el área de escaneo (dominio, carpeta, página, URL);
  • eliminación automática de uno de los parámetros en la URL;
  • múltiples precauciones contra bucles de escaneo interminables (ejemplo: ifor, valores límite para un parámetro);
  • la capacidad de establecer una prioridad para examinar las URL (incluso si no están en el área de escaneo);
  • capacidad de excluir algunas URL del análisis y ataques (por ejemplo: cierre de sesión de URL);
  • importar cookies (obtenerlas usando la herramienta wapiti-getcookie);
  • capacidad de activar/desactivar la verificación del certificado SSL;
  • la capacidad de extraer URL de JavaScript (un intérprete JS muy simple);
  • interacción con HTML5;
  • varias opciones para gestionar el comportamiento y las restricciones del rastreador;
  • establecer el tiempo máximo para el proceso de escaneo;
  • agregando algunos encabezados HTTP personalizados o configurando un User-Agent personalizado.

Características adicionales:

  • crear informes de vulnerabilidad en varios formatos (HTML, XML, JSON, TXT);
  • pausar y reanudar un análisis o ataque (mecanismo de sesión que utiliza bases de datos SQLite3);
  • retroiluminación en el terminal para resaltar vulnerabilidades;
  • diferentes niveles de tala;
  • Una forma rápida y sencilla de activar/desactivar módulos de ataque.

Instalación

La versión actual de Wapiti se puede instalar de 2 formas:

  • descargar la fuente del oficial сайта y ejecute el script de instalación, habiendo instalado previamente Python3;
  • usando el comando pip3 install wapiti3.

Después de esto, Wapiti estará listo para partir.

Trabajando con la herramienta

Para demostrar el trabajo de Wapiti, utilizaremos un stand especialmente preparado sites.vulns.pentestit.ru (recurso interno), que contiene varias vulnerabilidades (Injection, XSS, LFI/RFI) y otras deficiencias de las aplicaciones web.

La información se proporciona únicamente con fines informativos. ¡No infrinjas la ley!

Comando básico para iniciar el escáner:

# wapiti -u <target> <options>

Al mismo tiempo, hay ayuda bastante detallada con una gran cantidad de opciones de inicio, por ejemplo:

--alcance - área de aplicación
Si especifica el parámetro de alcance junto con la URL de rastreo, puede ajustar el área de rastreo del sitio especificando tanto una sola página como todas las páginas que se pueden encontrar en el sitio.

-s и -x - opciones para agregar o eliminar URL específicas. Estas opciones son útiles cuando necesita agregar o eliminar una URL específica durante el proceso de rastreo.

--saltar — el parámetro especificado con esta clave será escaneado, pero no será atacado. Útil si hay parámetros peligrosos que es mejor excluir durante el escaneo.

--verificar-ssl — habilitar o deshabilitar la verificación de certificados.
El escáner Wapiti es modular. Sin embargo, para iniciar módulos específicos, incluidos aquellos que se conectan automáticamente mientras el escáner está en ejecución, debe usar el modificador -m y enumerar los que necesita, separados por comas. Si no se utiliza la clave, todos los módulos funcionarán de forma predeterminada. En la versión más sencilla se verá así:

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Este ejemplo de uso significa que solo usaremos los módulos SQL, XSS y XXE al escanear el objetivo. Además, puede filtrar el funcionamiento de los módulos según el método deseado. Por ejemplo -m “xss: obtener, blindsql: publicar, xxe: publicar”. En este caso, el módulo xss se aplicará a las solicitudes enviadas utilizando el método GET, y el módulo blibdsql - para PUBLICAR solicitudes, etc. Por cierto, si algún módulo incluido en la lista no fue necesario durante el escaneo o lleva mucho tiempo, presionando la combinación Ctrl+C puede omitir el uso del módulo actual seleccionando el elemento correspondiente en el menú interactivo.

Wapiti admite el paso de solicitudes a través de un proxy mediante una clave -p y autenticación en el sitio de destino a través del parámetro -a. También puede especificar el tipo de autenticación: Básico, Digest, Kerberos и NTLM. Los dos últimos pueden requerir la instalación de módulos adicionales. Además, puede insertar cualquier encabezado en las solicitudes (incluidos los arbitrarios). User-Agent) y mucho más.

Para usar la autenticación puedes usar la herramienta wapiti-getcookie. Con su ayuda formamos galleta, que Wapiti utilizará al escanear. Formación galleta hecho con el comando:

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Mientras trabajamos de forma interactiva, respondemos preguntas e indicamos la información necesaria como nombre de usuario, contraseña, etc.:

Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo

La salida es un archivo en formato JSON. Otra opción es agregar toda la información necesaria a través del parámetro -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

El resultado será similar:

Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo

Al considerar la funcionalidad principal del escáner, la solicitud final para probar la aplicación web en nuestro caso fue:

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

donde entre otros parámetros:

-f и -o — formato y ruta para guardar el informe;

-m — no se recomienda conectar todos los módulos porque afectará el tiempo de prueba y el tamaño del informe;

--color — resaltar las vulnerabilidades encontradas en función de su criticidad según el propio Wapiti;

-c - usando un archivo con galleta, generado usando wapiti-getcookie;

--alcance — elegir un objetivo para el ataque. Seleccionando una opción carpeta Cada URL será rastreada y atacada, comenzando por la base. La URL base debe tener una barra diagonal (sin nombre de archivo);

--sesión de descarga — permite realizar escaneos repetidos, en los que no se tendrán en cuenta los resultados anteriores;

-A - propio User-Agent;

-p — dirección del servidor proxy, si es necesario.

Un poco sobre el informe.

El resultado del análisis se presenta en forma de un informe detallado de todas las vulnerabilidades encontradas en formato de página HTML, de forma clara y fácil de leer. El informe indicará las categorías y el número de vulnerabilidades encontradas, sus descripciones, solicitudes, comandos para rizo y consejos sobre cómo cerrarlos. Para facilitar la navegación, se agregará un enlace a los nombres de las categorías, haciendo clic en él podrá acceder a ella:

Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo

Una desventaja importante del informe es la ausencia de un mapa de la aplicación web como tal, sin el cual no quedará claro si se han analizado todas las direcciones y parámetros. También existe la posibilidad de que se produzcan falsos positivos. En nuestro caso, el informe incluye "archivos de copia de seguridad" y "archivos potencialmente peligrosos". Su número no se corresponde con la realidad, ya que no existían dichos archivos en el servidor:

Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo

Quizás los módulos que funcionan incorrectamente se solucionen con el tiempo. Otro inconveniente del informe es la falta de coloración de las vulnerabilidades encontradas (según su criticidad), o al menos de dividirlas en categorías. La única forma en que podemos comprender indirectamente la criticidad de la vulnerabilidad encontrada es usar el parámetro --color durante el escaneo, y luego las vulnerabilidades encontradas se colorearán en diferentes colores:

Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo

Pero el informe en sí no ofrece esos matices.

Vulnerabilidades

SQLi

El escáner hizo frente parcialmente a la búsqueda SQLi. Al buscar vulnerabilidades SQL en páginas donde no se requiere autenticación, no surgen problemas:

Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo

No fue posible encontrar una vulnerabilidad en páginas accesibles sólo después de la autenticación, incluso usando archivos válidos. galleta, ya que lo más probable es que después de una autenticación exitosa, su sesión se "desconecte" y galleta quedará inválido. Si la función de desautorización se implementara como un script separado responsable de procesar este procedimiento, entonces sería posible excluirlo por completo mediante el parámetro -x y así evitar que se active. En caso contrario, no será posible excluir su tratamiento. Este no es un problema de un módulo específico, sino de la herramienta en su conjunto, pero debido a este matiz no fue posible detectar varias inyecciones en un área de recursos cerrada.

XSS

El escáner hizo frente perfectamente a la tarea encomendada y encontró todas las vulnerabilidades preparadas:

Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo

LFI / RFI

El escáner encontró todas las vulnerabilidades subyacentes:

Wapiti: comprobar si un sitio tiene vulnerabilidades por sí solo

En general, a pesar de los falsos positivos y las vulnerabilidades faltantes, Wapiti, como herramienta gratuita, muestra resultados de rendimiento bastante buenos. En cualquier caso, cabe reconocer que el escáner es bastante potente, flexible y multifuncional, y lo más importante, es gratuito, por lo que tiene derecho a ser utilizado para ayudar a administradores y desarrolladores a obtener información básica sobre el estado de seguridad de una web. solicitud.

¡Mantente saludable y protegido!

Fuente: habr.com

Añadir un comentario