En este capítulo, Pentesting con ZAP, aprenderás a usar OWASP ZAP para evaluar la seguridad de aplicaciones web vulnerables en un entorno de laboratorio (Mutillidae y bWAPP sobre Metasploitable2). Verás cómo navegar una app con el HUD de ZAP, configurar autenticación basada en formularios, hacer enumeración de directorios, ejecutar rastreos (spidering), lanzar escaneos activos automatizados y fuzzing controlado, además de interpretar alertas y generar reportes.

Este artículo se ha creado basado en la guía oficial de ZAP. Se han actualizados las imágenes, agregado ejemplos, prácticas y nuevo contenido para completar el material original. ¿Por qué esto es útil para tu carrera como hacker ético? Porque te enseña el flujo profesional extremo a extremo: preparación del entorno, cobertura de superficie de ataque, detección automatizada, validación manual para descartar falsos positivos y, finalmente, comunicación de hallazgos con evidencias y recomendaciones. Estas habilidades son la base de cualquier pentest serio y transferibles a herramientas y marcos más avanzados.
Más allá de las herramientas, el éxito en el hacking ético reside en dominar un proceso metodológico. Este viaje te enseñará el flujo completo que define a un pentester profesional:

Todas nuestras pruebas se realizarán sobre owaspbwa, una máquina virtual intencionadamente vulnerable. Nos enfocaremos en dos aplicaciones clave:
• Mutillidae: Una aplicación web deliberadamente insegura, diseñada para simular vulnerabilidades del mundo real y servir como plataforma de aprendizaje ideal.
• bWAPP (buggy Web Application): Otra herramienta de entrenamiento esencial en nuestro arsenal.
ADVERTENCIA: Un escaneo agresivo puede degradar o inutilizar una aplicación. La práctica en entornos controlados como este no es solo una recomendación, es una necesidad profesional.
Paso 1: Establecer Acceso Autenticado
Para analizar las áreas protegidas de la aplicación, primero debemos actuar como un usuario legítimo.
Configuraremos ZAP para que mantenga una sesión autenticada.
1. Inicio de Sesión Manual Accedemos a la aplicación con las credenciales provistas:
Usuario: ‘bee’
Contraseña: ‘bug’
2. Captura de la Solicitud En ZAP, localizamos la solicitud ‘POST’ de inicio de sesión en el mapa del sitio.
3. Creación del Contexto Hacemos clic derecho en la solicitud ‘POST’ -> ‘Incluir en contexto’ -> ‘Contexto predeterminado’.
4. Configuración de la Autenticación Método: ‘Autenticación basada en formularios’.
Parámetro de Usuario: ‘login’.
Regex de Sesión Cerrada: ‘Login’.
5. Añadir Usuario En la pestaña ‘Usuarios’, agregamos ‘bee• / ‘bug’ y lo activamos.

El primer paso del reconocimiento es usar el «Spider» de ZAP para navegar sistemáticamente la aplicación como lo haría un usuario. Su objetivo es descubrir y mapear la estructura del sitio, siguiendo todos los enlaces para construir un mapa inicial de la superficie de ataque.
Hacer clic derecho en el sitio objetivo. Seleccionar Ataques -> s Spiders.
Elegir al usuario autenticado bee para asegurar una cobertura completa de las áreas privadas.
Iniciar el escaneo y observar cómo el mapa del sitio se puebla con nuevas páginas y directorios.

Enumeración de Directorios
Muchos recursos valiosos (archivos de configuración, backups, directorios de datos) no están enlazados públicamente. Usamos ‘Forzado Explorar directorio e hijos’ para descubrirlos mediante fuerza bruta con listas de palabras comunes.
Preparar la Wordlist: (Opcional en Kali)
‘cp /usr/share/wordlists/dirb/common.txt
-/.ZAP/fuzzers/dirbuster/’
Lanzar el Ataque: Clic derecho en el sitio -> ‘Ataques -> ‘Forzado Explorar directorio e hijos’.
Seleccionar la Lista: Elegir Scommon.txts del menú desplegable.
Analizar Descubrimientos: El escaneo revelará directorios y archivos que no estaban en el mapa inicial. En nuestro caso, un hallazgo crítico fue:
o /data/accounts.xml-Un archivo que expone información sensible.

El Ataque Automatizado: Sondeando en Busca de Debilidades
Con una comprensión clara de la estructura de la aplicación, iniciamos un escaneo automatizado. Este proceso combina dos fases críticas para una cobertura exhaustiva.

Nuestro Objetivo: http://192.168.0.12/mutillidae/index.php?page=user-info.php

Ataques de Precisión: Fuzzing de Parámetros
Mientras que el escaneo activo es amplio, el Fuzzing nos permite enfocar nuestro ataque en un parámetro específico. Es ideal para probar la robustez de formularios, especialmente los de autenticación.
1. Capturar la Solicitud: Localizar la solicitud POST de login.
2. Iniciar el Fuzzer: Clic derecho -> Ataque -> Fuzz.
3. Seleccionar Ubicaciones: Resaltar los valores de los parámetros de usuario y contraseña.
4. Añadir Payloads: Asignar listas de nombres de usuario y contraseñas a cada parámetro.
5. Ejecutar y Analizar: Lanzar el Fuzzery observar los resultados. La clave es buscar anomalías en las respuestas.
El Indicador Clave: Un código de estado 302 (redirección) sugiere un inicio de sesión exitoso, revelando una credencial válida.

La Necesidad Crítica de la Verificación Manual
- Una herramienta automatizada es poderosa, pero carece de contexto. Las 54,845 alertas son un punto de partida, no un veredicto final. La validación manual es indispensable.
- Confirmar Falsos Positivos Las herramientas pueden interpretar respuestas ambiguas como vulnerabilidades cuando no lo son. Solo un analista puede confirmar el impacto real.
- Descubrir Vulnerabilidades Complejas Los fallos en la lógica de negocio a menudo son invisibles para los escáneres, que buscan patrones técnicos conocidos.
- Entender el Contexto de Negocio Una vulnerabilidad de ‘bajo riesgo’ en un formulario de contacto es muy diferente a la misma en un panel de administración de pagos.
- Diseñar Ataques Personalizados Un analista puede encadenar múltiples vulnerabilidades de vulnerabilidades de bajo riesgo para crear un vector de ataque de alto impacto.

Archivo de Caso #1: Inyección SQL (Ciega Basada en Booleanos)
La Amenaza: Una técnica sofisticada donde el atacante extrae datos enviando consultas que devuelven respuestas diferentes (Verdadero/Falso) sin mostrar datos directamente.
El Veredicto y la Defensa
Peligro Real: Exfiltración de datos sensibles (credenciales, información personal), acceso no autorizado y compromiso total de la base de datos.

Mitigación Clave:
1. Consultas Parametrizadas (Sentencias Preparadas): Separar estrictamente el código SQL de los datos. Validación y Saneamiento de Entradas:
2. Implementar reglas estrictas para los datos de entrada.
3. Principio de Mínimo Privilegio: Limitar los permisos del usuario de la base de datos.
Archivo de Caso #2: Cross-Site Scripting (Reflejado)
La Amenaza: Ocurre cuando la aplicación recibe datos en una solicitud y los incluye en la respuesta inmediata de forma insegura, ejecutando un script en el navegador de la víctima.
El Veredicto y la Defensa
Peligro Real: Robo de cookies de sesión (secuestro de sesión), phishing, ejecución de código arbitrario en el navegador del usuario.

Mitigación Clave:
1. Escapado de Salida (Output Escaping): Codificar los datos según el contexto donde se mostrarán (HTML, JS, etc.).
2. Política de Seguridad de Contenido (CSP): Implementar una política estricta para prevenir la ejecución de scripts no autorizados.
3. Sanitización de Entradas: Filtrar y limpiar toda la entrada del usuario.
Archivo de Caso #3: Recorrido de Directorios (Path Traversal)
La Amenaza
Permite a un atacante acceder a archivos y directorios almacenados fuera del directorio raíz de la aplicación web, manipulando referencias a archivos con secuencias como ../.

El Veredicto y la Defensa
Peligro Real: Exposición de archivos de sistema, código fuente, credenciales y archivos de configuración. Puede ser un trampolín para un compromiso total del sistema.
Mitigación Clave:
1. Validación Estricta de Entradas: Rechazar cualquier entrada que contenga secuencias de recorrido de directorios.
2. Uso de Listas Seguras (Whitelisting): Permitir únicamente el acceso a un conjunto predefinido y seguro de archivos.
3. Ejecutar con Mínimos Privilegios: El servidor web no debería tener permisos para leer archivos sensibles del sistema.
El Entregable Final: Generando el Reporte Profesional
El trabajo de un pentester no termina con el descubrimiento. La comunicación clara de los hallazgos es crucial. ZAP facilita la creación de informes detallados y compartibles.
Generando un Informe HTML en ZAP
1. Acceder al Menú: Ir a la barra de menú superior y seleccionar Informes.
2. Seleccionar Formato: Elegir Generar informe HTML…’.
3. Configurar Opciones: Se pueden incluir o excluir secciones y filtrar alertas por nivel de riesgo o confianza.
4. Guardar y Compartir: Guardar el archivo .html’ y abrirlo en cualquier navegador.
Consejo del Profesional
Adapta el informe a tu audiencia. Un resumen ejecutivo para la gerencia debe centrarse en el riesgo de negocio, mientras que el informe técnico para desarrolladores debe incluir todos los detalles para la remediación.

Pentesting con ZAP y OWASPBWA
A medida que profundizamos en las aplicaciones prácticas de Zed Attack Proxy (ZAP), nuestro enfoque se centrará en una exploración práctica de las vulnerabilidades dentro de un entorno controlado. Para ello, utilizaremos owaspbwa, una máquina virtual intencionalmente vulnerable ampliamente utilizada con fines de capacitación y educación en el campo de la ciberseguridad. Específicamente, nuestra atención se centrará en la sección ‘Mutillidae’ de owaspbwa.

Mutillidae y bWAPP, parte del conjunto de herramientas de BWA, es una aplicación web intencionalmente vulnerable que proporciona un entorno del mundo real para probar y comprender las vulnerabilidades de las aplicaciones web. Es un candidato perfecto para nuestra demostración debido a su vulnerabilidad diseñada, lo que la convierte en una plataforma de aprendizaje ideal para las técnicas de pruebas de penetración. Recuerden que al iniciar la maquina les va a dar los datos de acceso:

Con lo cual pueden acceder al índice desde el navegador o directamente desde ZAP como ya veremos.

En esta guía práctica, recorreremos el proceso de escaneo de Mutillidae y bWAPP usando ZAP. Nuestro objetivo es descubrir las posibles vulnerabilidades que residen en esta aplicación. Este ejercicio no se trata solo de encontrar debilidades, sino también de comprender la naturaleza de estas vulnerabilidades. Al hacerlo, pretendemos obtener una visión más profunda de cómo se pueden explotar dichas vulnerabilidades y, lo que es más importante, cómo se pueden mitigar en escenarios del mundo real.

Este enfoque práctico servirá como una experiencia de aprendizaje invaluable, demostrando la eficacia de ZAP para identificar vulnerabilidades en aplicaciones web. Ya sea que sea un principiante en el campo de la ciberseguridad o un profesional experimentado, esta exploración le proporcionará conocimientos y habilidades prácticas que son esenciales en el panorama en constante evolución de la seguridad web.
Este capítulo ilustra todos los pasos importantes necesarios para completar estos laboratorio. No se trata de una solución paso a paso exhaustiva para este ejercicio. Se proporciona únicamente como referencia a los diversos comandos necesarios para completar este ejercicio y para su investigación adicional sobre este tema. Tenga en cuenta que las direcciones IP y los nombres de dominio podrían ser diferentes en su laboratorio.
Consideren la cantidad de recursos porque un ataque fuerte puede generar esto:

En la práctica verán que esto no es obviamente idempotente sino que tiene repercusiones, en algunos casos la base de datos se llena de basura, deja de andar o incluso pasa que el server en si no anda más.
Fundamentos de Pentesting de aplicaciones web con ZAP y BEE
Haga clic en «Exploración manual», introduzca la dirección IP objetivo en el campo de entrada y haz clic en «Abrir navegador».

Se abrirá una sesión de navegador con la interfaz de ZAP.

Inicia sesión en la aplicación web; las credenciales de inicio de sesión se indican en la página de inicio de sesión.
Nombre de usuario: bee
Contraseña: bug

Configurar ZAProxy para usar una sesión autenticada. En ZAProxy, vaya al mapa del sitio y busque la solicitud de inicio de sesión.

Haz clic con el botón derecho en la solicitud POST, vaya a «Incluir en contexto» y seleccione «Contexto predeterminado». Aparecerá la ventana Propiedades de la sesión.

Haz clic en la pestaña Autenticación en el menú Contexto predeterminado y seleccione «Autenticación basada en formularios» como método. Sección de autenticación:

Haga clic en el botón Seleccionar y seleccione la solicitud de inicio de sesión POST. Los campos del formulario se completarán automáticamente.

Establezca el parámetro Nombre de usuario en «login» e ingrese «Login» en el «Patrón Regex identificado en los mensajes de respuesta de sesión cerrada». Haz clic en la pestaña Usuarios y luego clic en el botón «Agregar» y agregue un nuevo usuario con el nombre de usuario «bee» y la contraseña «bug».

Haz clic en el icono del candado de usuario.

Enumeración de directorios con ZAProxy
Las herramientas de pentesting de aplicaciones web pueden resultar muy útiles al realizar pruebas de penetración. En este ejercicio de laboratorio, veremos cómo usar ZAProxy para realizar la enumeración de directorios en la aplicación web Mutillidae .
Objetivo: Realizar la enumeración de directorios con ZAProxy. Una vez que inicies el laboratorio, tendrás acceso a una instancia de la interfaz gráfica desde el navegador, recuerda que puedes usar el que trae ZAP

En Kali (En Windows difiere pero de todas formas puedes hacer el ejercicio) Por defecto, ZAP solo tiene una lista de palabras para fuzzing. Las listas de palabras se encuentran en el directorio «/root/.ZAP/fuzzers/dirbuster/». Se agrega la lista de palabras dirb common.txt al directorio de listas de palabras de ZAP.
Comandos:
ls -l ~/.ZAP/fuzzers/dirbuster
cp /usr/share/wordlists/dirb/common.txt ~/.ZAP/fuzzers/dirbuster/
Iniciar ZAProxy. Haz clic en «Exploración manual», ingrese la dirección IP objetivo en el campo de entrada y luego clic en «Iniciar navegador». Se iniciará una sesión de navegador con ZAP HUD.

Clic en «Continuar al objetivo». Al visitar el sitio web, este se añadirá al mapa del sitio. Clic con el botón derecho en el sitio objetivo, en la sección «Sitios», vaya a «Ataque» y luego clic en «Forzado
Explorar directorio e hijos».

Aparecerá una nueva pestaña en la ventana inferior. Haz clic en el menú desplegable «Lista» y seleccione la lista de palabras common.txt (o la que tengas disponible).

Recuerda que puedes configurar los parámetros

Inicia el ataque haciendo clic en el botón de reproducción. El escaneo comenzará y los directorios y archivos encontrados se añadirán al mapa del sitio.

Una vez finalizado el escaneo, expanda los directorios.

Comprueba los archivos en la carpeta «data»

Accede al directorio «data» en el navegador.

Haz clic en el archivo «accounts.xml».

Esto también se puede lograr con la función Fuzz

En la dirección de la app demos reemplazar por una lista

Damos aceptar y start Fuzz

Rastreo activo en la aplicación web con ZAProxy
Haz clic derecho en el sitio, ve a Ataque y selecciona «Spider». Aparecerá un cuadro de diálogo; selecciona el usuario «bee» y haz clic en el botón «Iniciar escaneo».

Aparecerá un cuadro de diálogo; selecciona el usuario «bee» y haz clic en el botón «Iniciar escaneo».

Haz clic en el botón «Iniciar escaneo» y ZAP comenzará a rastrear las páginas web.

Las páginas web y los archivos rastreados aparecerán en el mapa del sitio.

Paso 8: Una vez indexadas todas las páginas, haga clic en el botón Exportar.

Introduzca un nombre de archivo («zap-spider.csv») y guarde el archivo.

Tras una exportación correcta, aparecerá el siguiente mensaje.

FUZZING
Intente iniciar sesión con credenciales no válidas.

El sitio web y la página de inicio de sesión se añadirán al mapa del sitio. Haz clic en la solicitud POST del mapa del sitio y luego clic en la pestaña «Solicitud».

Haz clic con el botón derecho en la solicitud POST, vaya a «Ataque» y haga clic en «Fuzz».

Aparecerá la ventana del Fuzzer. Selecciona el nombre de usuario «carlos» y haga clic en el botón Agregar. Aparecerá la ventana de payloads. Haz clic en el botón Agregar, ingrese los payloads para el nombre de usuario y luego clic nuevamente en el botón Agregar.

Clic en el botón «Aceptar». El payload aparecerá en la sección Ubicaciones de Fuzz. De manera similar, seleccione la contraseña «laprovittera» y haga clic en el botón Agregar. Aparecerá la ventana de payloads. Haz clic en el botón Agregar, ingrese los payloads para la contraseña y nuevamente en el botón Agregar.

Clic en el botón Aceptar.

El payload aparecerá en la sección Ubicaciones de Fuzz. Haz clic en Iniciar Fuzzer. Al finalizar el ataque, compara el código de estado. Uno de los códigos será 302.


Escaneo automatizado con ZAP en Mutillidae
En nuestro recorrido para descubrir vulnerabilidades en la aplicación Mutillidae en Metasploitable2, utilizaremos la potente función de escaneo automatizado de ZAP. Nuestro objetivo para este ejercicio será una URL específica: http://192.168.0.12/mutillidae/index.php?page=user-info.php enfoque nos permite centrar nuestras pruebas en un aspecto particular de Mutillidae, proporcionando un análisis más detallado y profundo de las posibles vulnerabilidades.
Iniciando el escaneo automatizado
Al seleccionar esta URL como objetivo, iniciaremos un escaneo automatizado con ZAP. Este proceso consta de dos etapas cruciales: rastreo y escaneo activo.

Rastreo: mapeo de la aplicación web
La primera etapa de nuestro escaneo automatizado es el «rastreo». Esto es lo que sucede durante esta fase:
- Exploración : La herramienta de rastreo de ZAP recorre la aplicación web objetivo, de forma similar a un motor de búsqueda. Navega sistemáticamente por el sitio, siguiendo enlaces y explorando el contenido.
- Mapeo : A medida que rastrea, el rastreador crea un mapa de la estructura de la aplicación, incluyendo directorios, páginas y diferentes elementos como formularios y campos de entrada
- Descubrimiento : Este proceso ayuda a descubrir contenido oculto y visible que podría no ser evidente de inmediato. Es crucial para comprender el alcance completo de la aplicación.
La etapa de rastreo web es esencial, ya que sienta las bases para un escaneo completo. Garantiza que la fase de escaneo activo posterior cubra la mayor parte posible de la aplicación.

Escaneo activo: Búsqueda de vulnerabilidades
Tras la fase de rastreo web, procedemos al «Escaneo activo», que es más agresivo y directo en la identificación de vulnerabilidades:
- Análisis : El escaneo activo implica el envío de diversas entradas y solicitudes a la aplicación. Estas están diseñadas para detectar vulnerabilidades comunes como inyección SQL, cross-site scripting (XSS) y otras.
- Análisis : ZAP analiza las respuestas de estas sondas para identificar patrones o comportamientos que indiquen una vulnerabilidad.
- Informes : Cada vulnerabilidad potencial se registra y se proporciona información detallada sobre la naturaleza del problema, incluido el nivel de riesgo y las posibles estrategias de mitigación.
El escaneo activo es una fase crítica donde se identifican las vulnerabilidades reales. Es un método más intrusivo en comparación con el rastreo web y está diseñado para simular ataques del mundo real a la aplicación.
La sinergia del rastreo web y el escaneo activo
Al combinar el rastreo web y el escaneo activo, ZAP garantiza un examen exhaustivo de la aplicación web. El rastreo web garantiza que el escaneo activo cubra una amplia área de la aplicación, mientras que el escaneo activo profundiza en estas áreas para descubrir posibles problemas de seguridad. A medida que nos embarcamos en este proceso de escaneo automatizado, anticipamos descubrir una variedad de vulnerabilidades dentro de la aplicación Mutillidae. Este ejercicio no solo resaltará las fortalezas de ZAP como herramienta de seguridad, sino que también proporcionará información práctica sobre la naturaleza y la identificación de vulnerabilidades comunes en las aplicaciones web
Descripción general detallada del escaneo activo automatizado en ZAP
En nuestro esfuerzo por analizar las vulnerabilidades de la aplicación Mutillidae en Metasploitable2, hemos utilizado la función de escaneo activo automatizado de ZAP. Esta herramienta integral y robusta realiza una extensa lista de pruebas para descubrir posibles problemas de seguridad. A continuación, se presenta una descripción general detallada del proceso de escaneo activo que llevamos a cabo, mostrando la amplitud y profundidad de las capacidades de ZAP para identificar vulnerabilidades.
Proceso de escaneo activo
El escaneo activo incluyó una variedad de pruebas, cada una dirigida a diferentes tipos de vulnerabilidades. A continuación, se muestra un desglose de lo que implicó cada prueba y los resultados que arrojó:
- Recorrido de rutas : Se probaron las vulnerabilidades que permiten el acceso a archivos y directorios almacenados fuera de la carpeta raíz web. Se detectaron 18 alertas.
- Inclusión de archivos remotos : Se comprobó la capacidad de incluir archivos remotos a través de la aplicación web. Se encontró 1 alerta
- Vulnerabilidad Heartbleed de OpenSSL : Se buscó la vulnerabilidad Heartbleed, un fallo de seguridad en la biblioteca criptográfica OpenSSL. No se encontraron alertas.
- Divulgación de código fuente : Se realizaron pruebas para detectar varios tipos de vulnerabilidades de divulgación de código fuente, incluidas las de la carpeta /WEB-INF y la vulnerabilidad CVE-2012-1823. Se detectaron un total de 18 alertas.
- Ejecución remota de código : Se buscaron vulnerabilidades de ejecución remota de código, en particular la vulnerabilidad CVE-2012-1823. Se encontraron 18 alertas
- Cross-Site Scripting (XSS) : Se realizaron pruebas para vulnerabilidades XSS reflejadas y persistentes, lo que resultó en 30 alertas para XSS reflejadas.
- Inyección SQL : Se realizaron pruebas para detectar varios tipos de vulnerabilidades de inyección SQL en diferentes bases de datos, incluyendo MySQL, PostgreSQL y SQLite. Se detectaron 10 alertas en inyección SQL general y 10 más en inyección SQLite.
- Inyección de plantillas del lado del servidor : Se buscaron vulnerabilidades de inyección de plantillas, tanto regulares como ciegas, pero no se encontraron alertas.
- Exploración de directorios : Se probó la capacidad de listar directorios en el servidor. Se encontraron 6 alertas.
- Desbordamiento de búfer y error de cadena de formato : Se buscaron vulnerabilidades que pudieran permitir ataques de desbordamiento de búfer y errores de cadena de formato, pero no se encontraron alertas.
- Manipulación de parámetros : Se realizaron pruebas para detectar vulnerabilidades que pudieran surgir de la manipulación de parámetros de URL. Se detectaron 21 alertas.
- Inyección XSLT : Se buscaron vulnerabilidades en el procesamiento XSLT. Se encontraron 11 alertas.
- Fuzzer de agente de usuario : Se probó cómo responde la aplicación a varias cadenas de agente de usuario. Se encontraron 278 alertas
- Falsificación de solicitudes del lado del servidor (SSRF) : Se buscaron vulnerabilidades que pudieran permitir a un atacante inducir a la aplicación del lado del servidor a realizar solicitudes HTTP a un dominio arbitrario de su elección. No se encontraron alertas.
- Inyección SQL avanzada : Se realizó una búsqueda más exhaustiva de vulnerabilidades de inyección SQL, encontrándose 9 alertas.
- Inyección NoSQL – MongoDB : Se probaron las vulnerabilidades de inyección NoSQL específicas de MongoDB. Se detectó 1 alerta y aún estaba en ejecución al momento de redactar este informe.
- Inyección LDAP : Se buscaron vulnerabilidades que pudieran permitir ataques de inyección LDAP. No se encontraron alertas.
- Detector de holgura de cookies : Se probaron los problemas relacionados con el manejo de cookies. Se encontraron 51 alertas.
- Métodos HTTP inseguros : Se buscaron métodos HTTP que pudieran usarse de forma insegura. Se encontraron 28 alertas
- Otras pruebas : Se incluyeron comprobaciones de problemas como encabezados CORS, contaminación de parámetros HTTP, entrega de contenido inseguro y más. Se encontraron varias alertas en estas pruebas.
*Los resultados varían según las versiones tanto de ZAP como de Mutillidae. También dependen de la configuración de ZAP y de los plugins integrados y activos.
Resultados totales
El escaneo activo se ejecutó durante un total de aproximadamente 12 horas procesando 29,563 solicitudes e identificando un total de 54845 alertas. Estas extensas pruebas demuestran la capacidad de ZAP para realizar un análisis profundo y exhaustivo de aplicaciones web en busca de una amplia gama de vulnerabilidades. Los resultados de este escaneo proporcionan información valiosa sobre la postura de seguridad de la aplicación Mutillidae. Cada vulnerabilidad identificada representa un riesgo de seguridad potencial que debe abordarse para garantizar la seguridad e integridad de la aplicación. El escaneo activo realizado por ZAP sirve como una herramienta eficaz para que los profesionales de ciberseguridad identifiquen y mitiguen estos riesgos.

Comprender las alertas y los hallazgos del escaneo de ZAP
Después de ejecutar un escaneo automatizado exhaustivo en la aplicación Mutillidae usando ZAP, tenemos una lista completa de alertas que resaltan posibles vulnerabilidades. Estas alertas abarcan desde vulnerabilidades comunes de aplicaciones web, como inyección SQL y secuencias de comandos entre sitios (XSS), hasta problemas más específicos, como recorrido de rutas e inyección LDAP. Los resultados proporcionan una visión general del panorama de seguridad de la aplicación.
Naturaleza de las alertas de escaneo automatizado
Es fundamental comprender la naturaleza de estas alertas:
- Niveles de gravedad : Las alertas varían en gravedad, desde informativas hasta críticas. Es importante priorizar el manejo de estas alertas según su impacto potencial.
- Descripción y detalles : Cada alerta incluye una descripción y, a menudo, sugerencias para la remediación. Esta información es vital para comprender la naturaleza de la vulnerabilidad y cómo se puede mitigar.
- Falsos positivos : Los escaneos automatizados, aunque eficientes, no son infalibles. A veces pueden generar falsos positivos, indicando una vulnerabilidad donde no existe
La importancia de la verificación manual
Dada la posibilidad de falsos positivos, la verificación manual se convierte en un paso crítico en el proceso de evaluación de vulnerabilidades. He aquí por qué las pruebas manuales son esenciales:
- Precisión : Las pruebas manuales permiten una evaluación más precisa de cada vulnerabilidad identificada. Ayudan a confirmar si una alerta es un verdadero positivo o un falso positivo.
- Comprensión del contexto : Las herramientas automatizadas carecen del contexto que proporciona el juicio humano. Las pruebas manuales ayudan a comprender el contexto de la aplicación, su funcionalidad y cómo una vulnerabilidad puede afectarla en la práctica.
- Vulnerabilidades complejas : Algunas vulnerabilidades, especialmente aquellas que implican lógica compleja o contextos de aplicación específicos, solo pueden identificarse o confirmarse mediante pruebas manuales.
- Ataques personalizados : Los escaneos automatizados siguen un conjunto predefinido de reglas y patrones. Las pruebas manuales permiten escenarios de ataque personalizados que se ajustan mejor a la arquitectura y la lógica específicas de la aplicación.
Combinación de enfoques automatizados y manuales
El enfoque ideal para las pruebas de seguridad implica una combinación de pruebas automatizadas y manuales. Si bien los escaneos automatizados con herramientas como ZAP proporcionan una visión general amplia e identifican de manera eficiente las vulnerabilidades obvias, las pruebas manuales permiten profundizar en áreas específicas, especialmente donde los escaneos automatizados indican posibles problemas. Esta combinación garantiza una evaluación de vulnerabilidades más completa y precisa.
En resumen, los resultados de nuestro escaneo ZAP en Mutillidae son un punto de partida. Proporcionan información valiosa, pero no deben tomarse al pie de la letra sin verificación manual. Este enfoque doble de usar herramientas automatizadas complementado con pruebas manuales forma la columna vertebral de una estrategia de evaluación de seguridad de aplicaciones web robusta y eficaz.

Análisis de la alerta de inyección SQL avanzada en ZAP
La naturaleza del ataque
La primera alerta que estamos analizando es una “Inyección SQL avanzada: ciega basada en booleanos AND, cláusula WHERE o HAVING”. Este tipo de ataque es una forma sofisticada de inyección SQL, donde el atacante intenta extraer datos de una base de datos enviando consultas SQL que la base de datos ejecuta. La técnica de “ciega basada en booleanos” implica enviar consultas que devuelven un resultado diferente según si una condición es verdadera o falsa, incluso cuando no se devuelven datos directos. El atacante infiere datos basándose en estas condiciones verdaderas/falsas.
Evidencia encontrada
La evidencia de esta vulnerabilidad se descubrió al ingresar la URL https://192.168.0.12/mutillidae/index.php?page=source-viewer.php Esta acción nos permitió ver el código fuente del show-log.phparchivo. El código fuente reveló varios indicadores de vulnerabilidad:

- Falta de validación de entrada : El código cambia los niveles de seguridad, pero no valida ni limpia la entrada de manera consistente, particularmente en los niveles de seguridad más bajos.
- Manipulación potencial de consultas : La aplicación construye consultas SQL utilizando parámetros obtenidos de la entrada del usuario ( $_GETy $_SESSIONvariables), que pueden ser manipulados.
- Respuestas condicionales : La lógica del código sugiere que la respuesta de la aplicación puede variar según la entrada, lo cual es una condición típica para la inyección SQL basada en booleanos.
El peligro de esta vulnerabilidad
El peligro que representa este tipo de vulnerabilidad es significativo:
- Violación de datos : Los atacantes pueden extraer datos confidenciales de la base de datos, incluyendo información personal, credenciales y otros datos confidenciales.
- Acceso no autorizado : Puede conducir al acceso no autorizado a otras partes de la aplicación o del sistema, dependiendo de la naturaleza de los datos obtenidos
- Potencial para ataques adicionales : El conocimiento adquirido a partir de inyecciones SQL exitosas se puede utilizar para crear ataques más dirigidos, lo que aumenta el nivel de amenaza.
- Compromiso de la integridad de la base de datos : Además del robo de datos, los atacantes pueden modificar o eliminar datos, lo que compromete la integridad de la base de datos de la aplicación.
- Daños legales y reputacionales : Las filtraciones de datos pueden tener consecuencias legales y causar graves daños a la reputación de una organización
Estrategias de mitigación
Para mitigar esta vulnerabilidad, se deben considerar las siguientes acciones:
- Validación y saneamiento de entrada : Implemente una validación y saneamiento de entrada robusto para garantizar que solo se procesen datos válidos
- Sentencias preparadas y consultas parametrizadas : utilice sentencias preparadas con consultas parametrizadas en la aplicación para prevenir la inyección SQL.
- Acceso con privilegios mínimos : asegúrese de que el usuario de la base de datos conectado a la aplicación tenga los privilegios mínimos necesarios, lo que limita lo que puede lograr un ataque de inyección SQL.
- Auditorías de código y pruebas de seguridad periódicas : audite periódicamente el código de la aplicación en busca de vulnerabilidades y realice pruebas de seguridad exhaustivas.
- Capacitación en seguridad : capacite a los desarrolladores sobre prácticas de codificación segura para evitar que se introduzcan dichas vulnerabilidades.
En conclusión, el descubrimiento de esta vulnerabilidad de inyección SQL a través del escaneo automatizado de ZAP destaca la importancia de las prácticas de seguridad exhaustivas en el desarrollo y mantenimiento de aplicaciones web. Los esfuerzos de mitigación adecuados son cruciales para protegerse contra dichas vulnerabilidades y proteger los datos confidenciales.
Análisis de la alerta de inyección SQL:
MySQL >= 5.0 Ataque ciego basado en booleanos: reemplazo de parámetros

Descripción general del ataque
La segunda alerta que estamos examinando es una “Inyección SQL”. Esta forma de ataque es una inyección SQL especializada dirigida a bases de datos MySQL versión 5.0 o superior. Consiste en manipular consultas SQL reemplazando parámetros con instrucciones SQL condicionales. El aspecto de “ciega basada en booleanos” implica que el atacante infiere información de la base de datos basándose en condiciones booleanas (verdadero/falso) sin ver directamente los datos.

El peligro de esta vulnerabilidad
Los riesgos asociados con esta vulnerabilidad incluyen:
- Extracción de datos confidenciales : El atacante puede usar técnicas similares para extraer información confidencial de la base de datos.
- Enumeración de la base de datos : Permite la enumeración de la base de datos, donde un atacante puede obtener información sobre la estructura de la base de datos, incluidos los nombres de las tablas y los detalles de las columnas.
- Manipulación de la base de datos : Además del robo de datos, estas vulnerabilidades pueden permitir a los atacantes manipular o destruir datos
- Acceso elevado : En algunos casos, estas vulnerabilidades pueden explotarse para escalar privilegios dentro de la aplicación o el sistema subyacente.
- Ataques en cadena : Una vez que un atacante comprende la estructura de la base de datos, puede llevar a ataques más sofisticados, utilizando la información recopilada.
Estrategias de mitigación
Para mitigar este tipo de inyección SQL, considere lo siguiente:
- Uso de instrucciones preparadas : utilice instrucciones preparadas con consultas parametrizadas para garantizar la separación del código y los datos.
- Comprobaciones de expresiones regulares : implemente comprobaciones de expresiones regulares en los datos de entrada para evitar la inyección de tokens SQL no deseados.
- Manejo de errores : asegúrese de que los mensajes de error no revelen información confidencial sobre la estructura de la base de datos.
- Firewall de aplicaciones web (WAF) : implemente un WAF que pueda detectar y bloquear los intentos de inyección SQL.
- Auditorías y actualizaciones de seguridad : audite periódicamente sus aplicaciones web y bases de datos en busca de vulnerabilidades y aplique los parches y actualizaciones necesarios.
- Educación y concientización : capacite a los desarrolladores en prácticas de codificación segura, haciendo hincapié en la importancia de la validación de entrada y las consultas parametrizadas.
Conclusión
Este caso particular de inyección SQL demuestra las formas sutiles en que los atacantes pueden explotar vulnerabilidades aparentemente menores en las aplicaciones web. Comprender la mecánica de tales ataques es vital para que los desarrolladores y los profesionales de seguridad se protejan eficazmente contra ellos. Las medidas de seguridad proactivas e integrales son clave para mantener la integridad y la seguridad de las aplicaciones web.
En bWAPP Navegue a la URL: https://192.168.0.12/bWAPP/sqli_1.php?action=search&title=ZAP%27+AND+%271%27%3D%271%27+–+ No aparecerá ningún registro.

En la URL, cambie la condición AND por OR. URL: https://192.168.0.12/bWAPP/sqli_1.php?action=search&title=ZAP%27+OR+%271%27%3D%271%27+–+ La carga útil a utilizar también se menciona en la ventana de información de vulnerabilidad. Todos los registros presentes en la tabla se mostrarán en la página web.

Análisis de la alerta de Cross-Site Scripting (Reflejado)
Comprender el ataque
La alerta en cuestión es una vulnerabilidad de «Cross-Site Scripting (Reflejado)». El Cross-Site Scripting (XSS) reflejado ocurre cuando una aplicación recibe datos en una solicitud y los incluye en la respuesta inmediata de forma insegura. A diferencia del XSS almacenado, el XSS reflejado no se almacena permanentemente en el servidor o la base de datos del objetivo; en cambio, el script XSS se refleja en el servidor web y se ejecuta directamente en el navegador de la víctima.
Evidencia encontrada
La vulnerabilidad se identificó a través de la siguiente URL: https://192.168.0.12/mutillidae/index.php?choice=nmap&initials=ZAP&page=%22%3E%3CscrIpt%3Ealert(1);%3C/scRipt%3E&user-poll-php-submit-button=Submit+Vote. Esta URL inyecta un script ( <script>alert(1);</script>) en la respuesta de la aplicación.

La respuesta del servidor con advertencias:
- Warning: include(«><scrIpt>alert(1);</scRipt>) [function.include]: failed to open stream: No such file or directory in /var/www/mutillidae/index.php on line 469
- Warning: include() [function.include]: Failed opening ‘»><scrIpt>alert(1);</scRipt>’ for inclusion (include_path=’.:/usr/share/php:/usr/share/pear’) in /var/www/mutillidae/index.php on line 469
Estas advertencias indican que el servidor intentó procesar el script inyectado como una ruta de archivo, lo cual falló, pero, crucialmente, el script no se sanitizó ni escapó correctamente, lo que provocó su inclusión en la respuesta.
El peligro de esta vulnerabilidad
Los riesgos asociados con XSS reflejado incluyen:
- Robo de cookies : Los atacantes pueden robar las cookies de sesión, lo que lleva al secuestro de sesión.
- Suplantación de identidad (phishing) : XSS se puede usar para crear sitios de phishing convincentes o redirigir a los usuarios a sitios maliciosos
- Ejecución de scripts maliciosos : Permite la ejecución arbitraria de scripts en el navegador de un usuario, lo que puede conducir a una mayor explotación.
- Omisión de protecciones CSRF : XSS se puede utilizar para omitir las protecciones CSRF, lo que permite realizar acciones en nombre de los usuarios
- Daño a la confianza del usuario : Los ataques XSS exitosos pueden dañar la reputación del sitio web y erosionar la confianza del usuario.
Estrategias de mitigación
Para protegerse contra XSS reflejado, considere las siguientes medidas:
- Sanitización de entrada : Asegúrese de que toda la entrada del usuario se sanite correctamente antes de reflejarse en la salida.
- Política de seguridad de contenido (CSP) : Implemente una CSP robusta para evitar la ejecución de scripts no autorizados.
- Escape de datos : Escapa todos los datos controlados por el usuario según el contexto en el que se muestran (HTML, JavaScript, CSS, URL, etc.).
- Auditoría de seguridad regular : Audite regularmente su sitio web en busca de vulnerabilidades XSS y corríjalas de inmediato.
- Capacitación de desarrolladores : Capacite a los desarrolladores en prácticas de codificación segura, enfatizando la importancia de la validación de entrada y la codificación de salida.
Conclusión
Las vulnerabilidades XSS reflejadas como esta resaltan la importancia de tratar todas las entradas del usuario como potencialmente maliciosas. Implementar un enfoque de seguridad multicapa que incluya validación de entrada, codificación de salida y CSP puede reducir significativamente el riesgo de tales vulnerabilidades.
También en bWAPP podemos ver un XSS. Haz clic en Cross-Site Scripting (Persistente).

Se mostrará la información relativa a la URL, la carga útil y la descripción de la vulnerabilidad. Ve a la URL, inyecta la carga útil XSS y haz clic en el botón Enviar.

URL: http://192.168.0.12/bWAPP/htmli_stored.php Se ejecutará la carga útil XSS.

Navegue a la derecha y acceda a la sección Alertas del HUD de ZAP.

HUD de ZAP:

Haga clic en «Cross-Site Scripting (Reflejado)» y luego en la primera URL.


Haga clic en la URL en el cuadro de diálogo. Se ejecutará la carga útil XSS.

Expanda la sección Inyección SQL desde la sección Alertas del HUD de ZAP.

Haga clic en la primera URL.

Análisis de la alerta de recorrido de directorios
Comprender el ataque
La alerta que estamos examinando ahora es una vulnerabilidad de «recorrido de directorios». El recorrido de directorios, también conocido como recorrido de directorios, es un ataque que permite a los atacantes acceder a archivos y directorios almacenados fuera del directorio raíz de la aplicación web. Los atacantes manipulan variables que hacen referencia a archivos con ../secuencias y métodos similares, intentando acceder a archivos y directorios almacenados en el sistema de archivos del servidor.
Evidencia encontrada
La vulnerabilidad se identificó a través de la URL: https://192.168.0.12/mutillidae/index.php?popUpNotificationCode=SL1&page=%2Fetc%2Fpasswd. Al manipular el pageparámetro en la cadena de consulta, el atacante puede salir del directorio previsto y acceder al /etc/passwdarchivo, un archivo crítico del sistema en sistemas operativos tipo Unix
La respuesta del servidor incluía contenido del /etc/passwdarchivo, que enumera información sobre cada usuario del sistema. Esta respuesta indica que la aplicación no está saneando correctamente la entrada para prevenir ataques de recorrido de directorios, lo que permite el acceso a archivos fuera de los directorios previstos.

El peligro de esta vulnerabilidad
Los riesgos asociados con el recorrido de directorios incluyen:
- Exposición de archivos confidenciales : Se puede acceder y leer archivos que contienen información confidencial, como archivos del sistema, archivos de configuración y archivos de datos
- Fuga de información : El /etc/passwdarchivo, por ejemplo, contiene una lista de usuarios del sistema, que puede ser información valiosa para un atacante.
- Potencial de explotación adicional : Acceder a ciertos archivos podría conducir a ataques o explotaciones adicionales, especialmente si se accede a archivos de configuración o scripts con contenido explotable
- Compromiso del sistema : En casos graves, si se accede y manipulan archivos como scripts ejecutables o archivos de configuración del sistema, podría provocar un compromiso total del sistema.
Estrategias de mitigación
Para protegerse contra el recorrido de rutas, considere las siguientes medidas:
- Validación de entrada : Implemente una validación estricta de la entrada proporcionada por el usuario, rechazando cualquier entrada sospechosa o malformada.
- Uso de listas seguras : Emplee una lista segura de archivos permitidos y deniegue el acceso a cualquier archivo que no esté en la lista.
- Limitación del acceso a archivos : Asegúrese de que la aplicación web se ejecute con los privilegios mínimos necesarios, limitando los archivos a los que se puede acceder.
- Uso de API de manejo de archivos seguras : Utilice API de manejo de archivos que gestionen inherentemente las vulnerabilidades de recorrido de rutas.
- Auditorías y actualizaciones periódicas : Audite periódicamente sus aplicaciones web en busca de vulnerabilidades como el recorrido de rutas y mantenga sus sistemas y aplicaciones actualizados.
Conclusión
El descubrimiento de esta vulnerabilidad de Path Traversal subraya la importancia de una validación de entrada rigurosa y medidas de seguridad del sistema en el desarrollo de aplicaciones web. Prevenir tales vulnerabilidades es crucial para proteger los datos confidenciales y mantener la integridad y la seguridad del sistema.
Zed Attack Proxy (ZAP) para Pentesters
El ejercicio de usar Zed Attack Proxy (ZAP) para escanear la aplicación Mutillidae nos ha brindado una valiosa oportunidad para comprender y analizar una variedad de vulnerabilidades de aplicaciones web. A través de este proceso, hemos descubierto y profundizado en varios tipos de vulnerabilidades, cada una de las cuales destaca aspectos críticos de la seguridad de las aplicaciones web.
Información clave
- Variedad de vulnerabilidades : desde inyección SQL y Cross-Site Scripting (XSS) hasta Path Traversal, la diversidad de vulnerabilidades detectadas subraya la naturaleza multifacética de la seguridad de las aplicaciones web.
- Gravedad e impacto : las vulnerabilidades que exploramos varían en su gravedad e impacto potencial. Algunas, como la inyección SQL, podrían conducir a importantes filtraciones de datos, mientras que otras, como XSS, representan una amenaza para la seguridad del usuario final
- Implicaciones en el mundo real : Cada vulnerabilidad, aunque descubierta en un entorno controlado, representa amenazas del mundo real que existen en muchas aplicaciones web. Estos ejemplos sirven como recordatorio de los peligros potenciales que acechan en las aplicaciones insuficientemente seguras
- Importancia de la verificación manual : La necesidad de la verificación manual junto con herramientas automatizadas como ZAP es fundamental. Si bien los escaneos automatizados son eficientes para identificar posibles vulnerabilidades, el análisis manual es crucial para una validación precisa y para comprender el contexto de cada hallazgo.
- Estrategias de mitigación : Las vulnerabilidades identificadas resaltan la importancia de implementar prácticas de seguridad sólidas, como la validación de entradas, la codificación segura, el uso de encabezados de seguridad y las auditorías de seguridad periódicas.
Implicaciones más amplias para la ciberseguridad
- Aprendizaje y adaptación continuos : El campo de la ciberseguridad está en constante evolución. Mantenerse informado sobre las amenazas y vulnerabilidades emergentes es crucial para los profesionales de la seguridad y los desarrolladores.
- Cultura de seguridad proactiva : Estos hallazgos enfatizan la necesidad de un enfoque proactivo de la seguridad, integrando prácticas seguras a lo largo del ciclo de vida del desarrollo.
- Comunidad y colaboración : Herramientas como ZAP, desarrolladas y mantenidas por la comunidad de ciberseguridad, ejemplifican la importancia de la colaboración y el intercambio de conocimientos en el campo.

Generación de un informe HTML en ZAP: Una guía paso a paso
Zed Attack Proxy (ZAP) ofrece la funcionalidad para generar informes detallados de sus hallazgos en varios formatos, incluido HTML. Un informe HTML es particularmente útil para presentar los hallazgos de una manera visualmente accesible, que se puede compartir y revisar fácilmente por los miembros del equipo que no tengan acceso a ZAP. Aquí hay una guía paso a paso sobre cómo generar un informe HTML en ZAP:

Paso 1: Complete su escaneo
Asegúrese de que su escaneo esté completo. ZAP puede generar informes en cualquier momento, pero para obtener un informe completo, es mejor hacerlo después de que sus escaneos hayan finalizado por completo.
Paso 2: Acceda a la función de generación de informes
- Abra ZAP.
- Navegue a la barra de menú superior.
- Haga clic en la opción de menú «Informe».
Paso 3: Seleccione «Generar informe HTML»
En el menú «Informe», encontrará varias opciones para diferentes tipos de informes. Seleccione «Generar informe HTML…». Esto abre un cuadro de diálogo donde puede configurar su informe.
Paso 4: Configure las opciones del informe
En el cuadro de diálogo, normalmente puede elegir:
- Las secciones que se incluirán en el informe (como alertas, resultados de escaneo pasivo, etc.).
- Opcionalmente, puede filtrar las alertas que se incluirán según su nivel de riesgo o nivel de confianza.
Paso 5: Guardar el informe
- Después de configurar las opciones, haga clic en “Generar” o “Aceptar” (la redacción exacta puede variar según la versión de ZAP).
- Se le pedirá que elija una ubicación para guardar su informe HTML. Navegue hasta el directorio donde desea guardar el informe.
- Introduzca un nombre para su informe y asegúrese de que la extensión del archivo sea “.html”.
- Haga clic en “Guardar”.
Paso 6: Ver el informe
- Navegue hasta la ubicación donde guardó su informe.
- Abra el archivo HTML en cualquier navegador web para ver su informe.
Paso 7: Revisar y compartir
- Revise el informe para detectar cualquier vulnerabilidad o problema crítico que requiera atención.
- Comparta el informe con su equipo, partes interesadas o clientes según sea necesario. Dado que está en formato HTML, se puede ver en cualquier navegador web sin necesidad de software especializado.
Consejos para la elaboración de informes eficaces
- Personalice su informe : Adapte el informe a su público. Para equipos técnicos, incluya información técnica detallada. Para resúmenes ejecutivos, concéntrese en los hallazgos e impactos de alto nivel.
- Seguimiento de los hallazgos : Utilice el informe como base para la remediación. Asigne tareas a los miembros del equipo para abordar las vulnerabilidades identificadas.
- Mantenga registros : Guarde copias de los informes para futuras consultas y para realizar un seguimiento del progreso de su postura de seguridad a lo largo del tiempo.
Generar un informe HTML en ZAP es un proceso sencillo que convierte los resultados de su escaneo en un documento accesible y compartible, lo que ayuda a comunicar eficazmente las vulnerabilidades y las acciones necesarias dentro de su organización.
Resumen del capítulo
- Contexto del laboratorio: Se trabaja en máquinas y apps vulnerables a propósito para practicar de forma legal y controlada.
- ZAP con sesión autenticada: Capturas el login y lo incorporas a un Contexto, habilitando pruebas con usuario válido para alcanzar rutas protegidas y ampliar cobertura.
- Descubrimiento y cobertura:
- Spider (rastrear) para mapear la estructura de la app y sus entradas.
- Forced browse / dir discovery para encontrar recursos “ocultos” mediante listas de palabras.
- Pruebas automatizadas: El escaneo activo envía cargas controladas para detectar clases de fallos comunes (SQLi, XSS, traversal, RFI/LFI, métodos HTTP inseguros, cookies débiles, manipulación de parámetros, etc.).
- Fuzzing focalizado: Varias entradas se someten a datos variados para observar diferencias de respuesta que delaten vulnerabilidades.
- Lectura de resultados: Las alertas incluyen riesgo, confianza, evidencia y mitigación. Se subraya que el escaneo automatizado puede producir falsos positivos y que el análisis manual es imprescindible para confirmar impacto real y entender el contexto de negocio.
- Buenas prácticas y mitigación: Validación/escapado de entradas, consultas parametrizadas, principio de mínimo privilegio, cabeceras y políticas de seguridad, revisiones de código y pruebas regulares.
- Reporte profesional: Con Informes HTML de ZAP sintetizas hallazgos, priorizas por riesgo e indicas acciones de remediación; material clave para clientes y equipos de desarrollo.
- Aprendizaje clave: Combinar automatización + verificación manual, documentar con claridad y actuar de forma responsable en un entorno controlado.
10 preguntas clave basadas en el artículo
- ¿Qué tipo de aplicaciones se utilizan en este laboratorio y por qué son adecuadas para pruebas de penetración?
- ¿Cómo se configura la autenticación basada en formularios en ZAP para Mutillidae?
- ¿Qué proceso se sigue en ZAP para realizar la enumeración de directorios?
- ¿Qué etapas componen un escaneo automatizado en ZAP y cuál es su objetivo?
- ¿Cuál es la diferencia entre el escaneo pasivo y el escaneo activo en ZAP?
- ¿Qué tipo de vulnerabilidades detectó ZAP durante el escaneo activo sobre Mutillidae?
- ¿Qué es una inyección SQL avanzada basada en booleanos y cómo fue identificada por ZAP?
- ¿Cómo se descubrió y qué implica una vulnerabilidad de Cross-Site Scripting (XSS) reflejado?
- ¿Qué riesgo representa la vulnerabilidad de recorrido de directorios encontrada por ZAP?
- ¿Cuál es la importancia de complementar el escaneo automatizado con verificación manual?
10 ejercicios prácticos basados en el artículo
- Configura ZAP para conectarse a Mutillidae usando autenticación de formulario.
- Realiza una enumeración de directorios en Mutillidae usando common.txt.
- Realiza un escaneo activo automatizado sobre la página user-info.php.
- Exporta los resultados del rastreo a un archivo CSV.
- Realiza un ataque de Fuzzing sobre el login usando payloads personalizados.
- Reproduce un ataque de inyección SQL avanzada modificando la URL del formulario.
- Reproduce una vulnerabilidad XSS reflejada en Mutillidae.
- Accede al archivo /etc/passwd mediante recorrido de directorios.
- Genera un informe HTML del escaneo automatizado.
- Clasifica las alertas del escaneo activo en función del riesgo.
Respuestas completas a las 10 preguntas
1. ¿Qué tipo de aplicaciones se utilizan en este laboratorio y por qué?
Se utilizan Mutillidae y bWAPP, aplicaciones web intencionalmente vulnerables, ideales para pruebas de seguridad ya que contienen fallos reales diseñados para la educación y entrenamiento en ciberseguridad.
2. ¿Cómo se configura la autenticación basada en formularios en ZAP?
- Inicia sesión en la app con el usuario bee y contraseña bug.
- Identifica la solicitud POST de login y añádela al “Contexto predeterminado”.
- Configura el método de autenticación como “basado en formularios”.
- Selecciona la solicitud POST para autocompletar los campos.
- Agrega el usuario “bee” y contraseña “bug” en la pestaña Usuarios.
- Asocia el usuario al contexto.
3. ¿Qué proceso se sigue para la enumeración de directorios?
- Copia common.txt al directorio de listas de ZAP.
- Inicia una sesión manual en ZAP y visita Mutillidae.
- Haz clic derecho sobre el sitio → Ataque → Forzado → Explorar directorio e hijos.
- Selecciona la lista common.txt y ejecuta el ataque.
- Los resultados aparecen en el mapa del sitio.
4. ¿Qué etapas componen un escaneo automatizado en ZAP?
- Rastreo (Spider):
- Recorre el sitio web como un navegador.
- Descubre y mapea la estructura de la aplicación.
- Escaneo activo:
- Realiza pruebas intrusivas para detectar vulnerabilidades como SQLi, XSS, etc.
5. ¿Diferencia entre escaneo pasivo y escaneo activo?
- Pasivo: No altera la app. Observa el tráfico en busca de fallos como cookies inseguras o cabeceras.
- Activo: Envía solicitudes maliciosas para probar cómo reacciona la app (ej: inyecciones, XSS).
6. ¿Qué tipo de vulnerabilidades detectó ZAP?
ZAP identificó vulnerabilidades como:
- Inyección SQL (incluida avanzada y NoSQL)
- XSS reflejado y persistente
- Recorrido de directorios
- Inclusión remota de archivos
- Divulgación de código fuente
- Métodos HTTP inseguros
- Manipulación de parámetros
- Fuzzing del agente de usuario
- Detector de cookies laxas, entre muchas otras (545 alertas en total)
7. ¿Qué es una inyección SQL avanzada basada en booleanos?
Es una técnica en la que se insertan condiciones verdaderas/falsas en una consulta SQL para inferir información de la base de datos sin recibir datos directos. ZAP identificó esta vulnerabilidad manipulando parámetros en URLs y observando respuestas condicionales.
8. ¿Qué implica una vulnerabilidad XSS reflejado?
Es cuando los datos enviados por el usuario se reflejan sin sanitizar en la respuesta. El atacante puede inyectar scripts maliciosos. En el ejemplo, el script <script>alert(1);</script> se incluyó en la respuesta del servidor.
9. ¿Qué es un recorrido de directorios?
Permite acceder a archivos fuera del directorio raíz web (ej: /etc/passwd). ZAP detectó esto manipulando el parámetro page en la URL para acceder a rutas del sistema.
10. ¿Por qué es importante la verificación manual?
Porque:
- Confirma si las alertas son verdaderas o falsos positivos.
- Proporciona contexto del funcionamiento real de la app.
- Permite ejecutar ataques personalizados más allá del alcance automático.
- Mejora la precisión del análisis.
Respuestas detalladas a los 10 ejercicios
1. Configurar autenticación con formulario
- Inicia sesión en Mutillidae.
- En ZAP, identifica la solicitud de login → clic derecho → “Incluir en contexto”.
- Configura “Autenticación basada en formularios” → selecciona la solicitud POST.
- Agrega usuario bee / bug.
- Usa el ícono del candado para probar la autenticación.
2. Enumeración de directorios
cp /usr/share/wordlists/dirb/common.txt ~/.ZAP/fuzzers/dirbuster/
- Inicia ZAP.
- Visita el objetivo.
- Clic derecho en sitio → Ataque → Forzado → Explorar directorio e hijos.
- Selecciona common.txt y ejecuta.
3. Escaneo activo automatizado
- Menú: Exploración → Nueva exploración automatizada.
- URL objetivo: http://192.168.0.12/mutillidae/index.php?page=user-info.php
- Iniciar → ZAP rastrea y escanea.
- Alertas aparecerán al finalizar.
4. Exportar rastreo a CSV
- Tras el rastreo, clic en “Exportar”.
- Selecciona ubicación y nombre de archivo, ej: zap-spider.csv.
- Revisa el archivo con herramientas como Excel o grep.
5. Ataque de Fuzzing
- Clic derecho en login → Ataque → Fuzz.
- Agrega payloads (usuario: carlos, juan, admin…) y contraseñas (1234, password…).
- Ejecuta el fuzzer y analiza respuestas (códigos 200 vs 302).
6. Inyección SQL avanzada
Visita:
http://10.10.1.105/mutillidae/index.php?page=user-info.php&password=ZAP&user-info-php-submit-button=(SELECT (CASE WHEN (6776=7886) THEN 6776 ELSE 6776*(SELECT 6776 FROM INFORMATION_SCHEMA.CHARACTER_SETS) END))&username=ZAP
- Verifica cómo cambia la respuesta según la condición booleana.
7. Reproducir XSS reflejado
Prueba esta URL:
- Si el script se ejecuta en el navegador, la vulnerabilidad está presente.
8. Recorrido de directorios
Visita:
http://10.10.1.105/mutillidae/index.php?do=toggle-security&page=/etc/passwd
- Si aparece el contenido del archivo /etc/passwd, el recorrido de directorios es exitoso.
9. Generar informe HTML
- Menú → Informe → Generar informe HTML.
- Selecciona alertas por riesgo si deseas.
- Guarda el archivo con extensión .html y ábrelo en el navegador.
10. Clasificar alertas por nivel de riesgo
- Ve a la pestaña Alertas en ZAP.
- Ordena por columna «Riesgo».
- Clasifica en:
- Críticas: SQLi, RCE
- Altas: XSS, Path Traversal
- Medias: Métodos HTTP inseguros
- Bajas: Cookies laxas
- Informativas: Títulos de páginas, banners, etc.
Despedida
¡Buen trabajo! En este capítulo adquiriste el ciclo completo de pentesting web con ZAP: configurar contextos autenticados, ampliar superficie con spider y discovery, ejecutar escaneos y fuzzing de forma segura, interpretar alertas, priorizar riesgos y reportar con valor para el negocio. Estas competencias te harán más eficaz como hacker ético: podrás detectar más fallos, con mayor precisión, en menos tiempo, y traducirlos en recomendaciones accionables. Mantén la práctica en entornos controlados, documenta todo y cultiva el hábito de validar manualmente. Esa combinación es la que diferencia a un aficionado de un profesional. Este ciclo completo te ha dotado de las competencias que distinguen a un profesional de un aficionado. Recuerda siempre estos principios:
Automatización + Verificación Manual: Usa las herramientas para la amplitud y tu juicio para la profundidad y precisión.
Documenta con Claridad: Traduce hallazgos técnicos en riesgos de negocio y recomendaciones accionables.
Practica en Entornos Controlados: La ética y la responsabilidad son la base de esta profesión.
Esta combinación de método, herramienta y juicio es lo que te permitirá detectar más fallos, con mayor precisión y en menos tiempo. Es el camino hacia la maestría en el hacking ético.