top of page
zap.png
undercons.png
zap

​⚡ ZAP

Zed Attack Proxy (ZAP) es una herramienta de seguridad de aplicaciones web desarrollada por OWASP (Open Web Application Security Project). Es utilizada principalmente para identificar vulnerabilidades en aplicaciones web y es adecuada tanto para principiantes como para profesionales avanzados en el campo del pentesting. Es una herramienta gratuita y de código abierto.
 
PRINCIPALES CARACTERÍSTICAS:
- Es multiplataforma, pudiendose instalar tanto en Windows como en Linux
- Intercepta le tráfico web a través del navegador o a través de un proxy
- Spidering (detectar automáticamente todos los enlaces y páginas asociadas)
- Escaneo pasivo (examina las solicitudes y respuestas, sin ejecutar ninguna acción sobre el objetivo)
- Escaneo activo (examina las solicitudes y respuestas, ejecutando acciones sobre el objetivo)
- Fuzzing (ejecutar parámetros que ayuden a encontrar vulnerabilidades que no se detectan con un escaneo)
- Informes (reporta las vulnerabilidades encontradas, adjuntando información y enlaces de referencia)
- Certificados SSL dinámicos (crear certificados root únicos para interceptar tráfico HTTPS)
- ZAP extensions (aplicaciones extra de la "tienda" de extensiones)

INSTALACIÓN:
sudo apt update
sudo apt install zaproxy

Una vez instalado y funcionando, cabe recordar que ZAP requiere que el tráfico web que pasa por nuestro navegador sea derivado al programa. Más abajo se detallan 3 formas de hacerlo usando proxies.

🔛 START ZAP

Desde terminal, EJECUTAR en segundo plano ocultando el output:
zaproxy &> /dev/null & disown

Una vez cargue el programa, por defecto escogeremos la opción de "no guardar sesión", salvo que nos interese por motivos que se explican más adelante. Clicamos start/iniciar para comenzar.
 

zap1.png
zap5.png


Ignoramos y cerramos el "administrador de complementos", que debería indicar que "ZAP está actualizado" y la versión.
En caso de requerir actualización, introducir por terminal:

sudo apt update
sudo apt install zaproxy
 

zap6.png


Vistazo rápido por la disposición del programa:
 

zap7.png


NOTA: Si cerramos la terminal con la que iniciamos el programa, éste se cerrará tambien.

first_steps
dark

🌙 DARK MODE
 

zapDark.png
idioma

🗨️ CAMBIAR IDIOMA
 

zap8.png


Reiniciar programa para aplicar los cambios.

🦊 USAR FIREFOX PRECONFIGURADO (MEJOR OPCIÓN)

Para empezar a usar ZAP de forma rápida y sencilla desde un sistema operativo Linux (que trae Firefox instalado por defecto), podemos iniciar dicho navegador con una preconfiguración especial haciendo click en el icono "Firefox" de ZAP:
 

zap9.png


Desde aquí podemos empezar a navegar y pasar el tráfico web directamente a ZAP sin ninguna complicación.

Es posible (sobre todo si es la primera vez que se usa ZAP) que este paso tire un error de "
no se encontró el navegador".
Si pasa esto, actualizaremos ZAP y reiniciaremos la máquina.


MANEJAR EL FLUJO DEL TRÁFICO CON LOS BOTONES SUPERIORES:

🟢  Activar Interrupción en todas las Solicitudes y Respuestas.
🔴  Desactivar Interrupción en todas las Solicitudes y Respuestas.

 |  Permite que la solicitud o respuesta atrapada continúe hacia la aplicación o tu navegador con cualquier cambio que
        hayas hecho en ella. Este botón solo se habilita cuando una solicitud o respuesta está atrapada.
 
   El punto de interrupción 'global' se desconfigurará para que las solicitudes y respuestas posteriores ya no serán
        capturadas por ZAP a menos que hayas configurado puntos de interrupción en URLs específicas.
        Este botón solo se habilita cuando una solicitud o respuesta está atrapada.

zap_firefox

⬆️ ZAP SIEMPRE ENCIMA

En algunos casos ZAP nos pregunta si queremos que ZAP permanezca siempre sobre el resto de ventanas y programas.

Para editar este ajuste, debemos hacerlo desde Herramientas, Opciones, Puntos de interrupción (Breakpoints) y desactivar la opción.

 

zap10.png


Reiniciar programa para aplicar los cambios.

zap_OnTop
foxyproxy

🦊 USAR FOXY PROXY

FoxyProxy es una extensión de navegador que ofrece funcionalidades avanzadas de configuración de proxy para Chrome, Firefox y otros navegadores basados en Chromium como Opera, Edge y Vivaldi. Esta herramienta simplifica la configuración de proxies en el navegador y proporciona características como cambio automático de proxy, listas de reglas en línea, manejo de eventos y más.

Existen dos versiones de FoxyProxy:
Basic y Standard. Ambas son gratuitas y ofrecen esencialmente las mismas características. La diferencia principal es que la versión FoxyProxy Standard incluye una función de Patrones de URL, que permite especificar qué sitios web deben ser accedidos con el proxy mediante listas blancas o negras de dominios deseados. Esta configuración utiliza expresiones regulares, lo cual es extremadamente útil cuando, por ejemplo, no se desea utilizar proxies para acceder a páginas web específicas en un sitio o viceversa.

FoxyProxy también se puede configurar con proxies de Oxylabs, lo que permite a los usuarios configurar proxies directamente para Chrome, Firefox y otros navegadores basados en Chromium. Esto incluye la configuración de proxies residenciales y de centro de datos de Oxylabs.


🌐 FireFox Addons
🌐 Google Chrome Store


FoxyProxy se ejecuta desde las pestañas del navegador. Para configurarlo, click en "options", "add proxy" y lo configuramos de la siguiente manera, por localhost 127.0.0.1 y por el puerto 8080 (que es el vector de escucha por defecto de ZAP):
 

foxyp1.png
foxyp2.png

ZAP                

ZAP                

TROUBLESHOOTING

Al empezar a navegar con FoxyProxy activado es posible que aparezca un aviso de conexión no segura:

 

foxyp3.png

ZAP                

Para solucionarlo hay que ir a https://burp a descargar el CA Certificate, que ocupa 939 bytes. Para ello hay que clicar primero en "Advanced..." y "Accept the Risk and Continue":
 

foxyp4.png
foxyp5.png

Después se procede a instalar el certificado en el navegador (en el ejemplo, Firefox) iendo a "Settings", buscar en la caja por "cert", a "View Certificates", "Import", buscar e importar el archivo "cacert.der" activando la opción de "Trust this CA to identify webites", y OK a todo.
 

foxyp6.png

Ya no debería de aparecer el aviso de conexión no segura, y por tanto navegar con FoxyProxy activado en la configuración programada, para enviar el tráfico de red a Zap.
 

firefox_proxy

🦊 USAR FIREFOX PROXY (FALLA)

También podemos pasar el tráfico web sin FoxyProxy directamente con Firefox, desde las opciones (settings) configurándolo manualmente (manual proxy) en localhost (127.0.0.1) por el puerto 8080:
 

fpxy1
fpxy2

👁️ MANUAL EXPLORE

Para explorar manualmente una web desde el navegador (Firefox por defecto en Kali Linux) enviando el tráfico a ZAP, desde el menú de bienvenida, hacemos click en el rayo verde que dice "Manual Explore":
 

zapStart.png


En "URL to explore" pegamos la dirección que vamos a explorar para a continuación lanzar el navegador por defecto con "Launch Browser":
 

zap11.png


Ahora encontraremos "sites" que aparecen en la izquierda relacionadas con la URL que exploramos (podemos limitar el espectro o scope de búsqueda pero lo veremos más adelante), y en el historial inferior, el tráfico web exponiendo el "método", la URL, el código de estado (200 es exitoso, ver códigos de estado aquí) y otros detalles.

Para visionar el tráfico HTTP en el "Requester", click derecho sobre la línea del historial deseada y "Open in Requester Tab". Desde ahí podemos modificar la Petición y lanzarla con el botón "Send" para ver el resultado en la ventana de Respuesta.

 

zap12.png
manual_xplore

📡 AUTOMATED SCAN

Para iniciar un escaneo automatizado de una URL, desde el menú de bienvenida hacemos click en el rayo azul que dice "Automated Scan":
 

zapStart.png


En "URL to attack" pegamos la dirección que vamos a escanear para a continuación lanzar el ataque con el resto de opciones por defecto:
 

zap13.png


A partir de aquí, ZAP hace el resto. Podemos monitorizar el progreso en todo momento, observando las "sites" encontradas o relacionadas con el objetivo, así como la actividad de "Spider", "AJAX Spider" y el "Active Scan" (módulos de escaneo que se ejecutan en este orden durante el escaneo). Podemos pausar o detener el escaneo en cualquier momento.
 

zap14.png


Una vez finaliza el escaneo, podemos generar un Informe detallado en formato HTML, con la información de todas las vulnerabilidades detectadas y otra información relevante. Podemos generarlo desde
 

zap15.png
auto_scan

💉 SQL INJECTION DE EJEMPLO (PORTSWIGGER)

LABORATORIO DE PORTSWIGGER (requiere registro en la plataforma):
🌐https://portswigger.net/web-security/sql-injection/lab-retrieve-hidden-data





















Una vez registrados, vamos a "Academy", "All content" y ahí "All labs".





















Completaremos a modo de ejemplo con ZAP el primer laboratorio, uno de los más fáciles (nivel aprendiz).



















 

Antes de acceder al laboratorio podemos leer alguna información y detalles, que se traducen así:

"Este laboratorio contiene una vulnerabilidad tip inyección SQL en el filtro de categoría. Cuando el usuario selecciona una categoría, la aplicación corre la siguiente petición SQL"

SELECT * FROM products WHERE category = 'Gifts' AND release = 1

"Para resolver este laboratorio, ejecta un ataque de inyección SQL que cause a la aplicación mostrar los productos ocultos"















 
 
 

INFORMACIÓN ADICIONAL:
La base de datos contiene una vulnerabilidad en el filtro de categoría de producto, que permite mostrar los productos que por defecto quedan ocultos (bajo la etiqueta "unreleased" o "no publicados"). El objetivo del laboratorio sería conseguir mostrar esos productos ocultos engañando a la base de datos.

Clickamos en una categoría, en este caso, por ejemplo, en la categoría "
Lifestyle", donde vemos que solo hay publicados 3 productos (habría más productos ocultos que ahora no vemos).





















Copiamos la URL del navegador y la introducimos en "URL to explore" de la opción "Manual Explore" de ZAP y lanzamos el navegador Firefox (por defecto en Kali Linux):

https://0ac80012031a19f581b2ca440089001a.web-security-academy.net/filter?category=Lifestyle





















ZAP habrá analizado la conexión con la web, mostrando "sites" relacionadas a la izquierda y tráfico HTTP en el historial de abajo. Click derecho sobre la primera entrada y "Open in Requester" para enviarlo a las ventanas de "Petición" y "Respuesta":








 
 
 
 
 
 
 
 
 
 



Cuando el usuario selecciona una categoría (en este caso "Lifestyle"), la QUERY interna de la base de datos es:
SELECT * FROM products WHERE category = 'Lifestyle' AND released = 1

La query selecciona todo valor de la tabla "productos" donde la categoría "Lifestyle" y "publicados" sean "verdaderos".

PARTE VULNERABLE DE LA URL:
.../filter?category=Lifestyle

--------------------------------------------------------------------------------------------------------------------------------------------------------

Desglose de la URL al seleccionar una categoría:
http://                          (Protocolo usado para la comunicación. Puede ser http o https (este último con cifrado SSL/TLS)
ejemplo.com                (Es el dominio del servidor al que se está haciendo la solicitud. En este caso una tienda online)
/                                         (Separador)
filter                              (Subdominio que aplica en la web un filtro por categorias de la base de datos)
?category=Lifestyle     (Cadena de consulta (query string) que nos direcciona a la categoría existente "Lifestyle")

Desglose de la Cadena de Consulta:
?                                     (Separador. Indica el inicio de los parámetros de consulta)
category                        (Nombre del parámetro. Indica filtrar por categoría. Se deduce que "category" es una tabla de la base de datos)
=                                     (Parámetro de enlace entre la categoría (tabla) y un producto (columna de la tabla))
Lifestyle                        (Nombre de parámetro. Indica nombre de categoría. Se deduce que "Lifestyle" es una columna de la tabla)

INYECCIÓN SQL EN LA URL y enviar con el botón SEND:
http://. . ./filter?category=Lifestyle' or 1=1-- -





















Con los parámetros introducidos, en el caso de éste laboratorio, obtenemos una respuesta exitosa de la base de datos, mostrando TODOS los productos de la categoría "Lifestyle", en este caso tanto los productos públicos como los ocultos.

De esto:    http://. . ./filter?category='Pets' AND released =1 
A esto:      http://. . ./filter?category=Pets' or 1=1-- -

Desglose de la Cadena de Consulta con la Inyección:
'                                     (Cierra la cadena)
or                                  (Condicional "o")
1=1                               (True Statement. Ordena que se cumplan las condiciones)
-- -                                (Equivale a "introducir comentario". También "#")

--------------------------------------------------------------------------------------------------------------------------------------------------------

SE DEDUCE EL SIGUIENTE ESQUEMA DE LA BASE DE DATOS:

[BASES DE DATOS]
        Shop.com <--------- [TABLAS]
                                              Products <--------- [COLUMNAS]
                                                                                            id 
                                                                                        name
                                                                                     category <--------- [Pets]
                                                                                        price
                                                                                       details
                                                                                      released <--------- [True]
                                                                       
             unreleased <--------- [True]

--------------------------------------------------------------------------------------------------------------------------------------------------------
 
El resultado que obtendríamos en el navegador sería visualizar nuevos productos en la categoría "Lifestyle" y el mensaje de "Congratulations, you solved the lab".

swigger0.png
swigger1.png
swigger2.png
swigger3.png
swigger4.png
swigger5.png
swigger6.png
swigger7.png
swigger8.png
sqli_example
bottom of page