Uso de ZAP - SQLI y XSS

Iniciado por xyz, Marzo 19, 2017, 08:39:17 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Utilizando ZAP para SQLI y XSS.

En esta ocasión vengo con algo con lo que he estado estudiando y quiero compartir.

Para este laboratorio es necesario leer los siguientes posts:


Que es ZAP.
Citar
OWASP Zed Attack Proxy (ZAP) es una de las herramientas más populares libres de seguridad y activamente mantenida por centenares de voluntarios internacionales. Puede ayudar automaticamente a encontrar vulnerabilidades de seguridad en aplicaciones Web mientras desarrolla y verifican nuevas aplicaciones.
Es una gran herramienta para pentesters, con experiencia, para utilizar como herramienta de testeo manual.

Sitio oficial de la aplicación.
Código: php

https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project


De aquí debe conocer lo que es un Proxy.
Citar
Un programa que hace de intermediario en las peticiones que realiza un cliente a otro servidor
Fuente:
Código: php
 https://es.wikipedia.org/wiki/Servidor_proxy 


Entonces, ZAP permite interceptar solicitudes; aquí es cuando tiene que investigar....

Luego de bajar la aplicación No tienes permitido ver los links. Registrarse o Entrar a mi cuenta, instalar y ejecutar obtendrá la siguiente imagen:



Donde pregunta si:

  • Si, quiero que esta sesión sea persistente con el nombre y la marca de tiempo actual
  • Si, quiero que esta sesión sea persistente pero quiero especificar el nombre y ubicación
  • No, no quiero que la sesión sea persistente en este momento

Permitiendo elegir si queremos guardar o no, el proyecto actual de investigación.

Luego es posible cambiar la configuración del proxy:
Menú Herramientas - Opciones



La misma, debe replicar en el navegador que utilice para la investigación.



A partir de aquí, se trabajará en laboratorios locales para demostrar el uso de ZAP, cabe remarcar que la potencia de la herramienta está en el uso del estudiante/investigador/pentester.

La herramienta seleccionada para tal efecto es OWASP - BWA
Código: php
 https://www.owasp.org/index.php/OWASP_Broken_Web_Applications_Project 


Continuando con el trabajo de campo, Buggy Web App (BWAPP) es el marco que permitira continuar con el trabajo.



ZAP ya ha empezado a capturar trafico de la red local, precisamente, lo que interesa.



Como indica la imagen anterior, la división del panel muestra:

  • Izquierda (Sitios) las páginas que está interceptando
  • Derecha (Petición-Respuesta) donde estarán las peticiones y respuestas web que se realicen desde y hacia el sitio vulnerable.
  • Panel inferior (Historia-Buscar-Alertas-Salida) encontrará marcas de tiempo, método utilizado por la petición (Get-Post) código de respuesta del sitio, etc.

Comenzando con SQLI

A partir de aquí, utilizaremos el navegador, solo para realizar una petición y así conocer los campos con los que ZAP empezara a inyectar.



Volviendo a ZAP veremos que a interceptado una consulta e informa los campos que utiliza la aplicación web.



La imagen anterior muestra claramente la intercepción de la consulta donde indica el campo del formulario (Title).

Procedemos a seleccionar el valor del campo Title y hacer clic derecho con el mouse e ir a la opción renviar.



La nueva ventana que emerge es la que permite realizar los renvios de peticiones modificadas y analizar la respuesta.



Donde, debemos realizar una POC (Proof of concept) para identificar si el campo que envía el valor de la variable es o no vulnerable.



La imagen anterior, ratifica el POC.
Como indica la respuesta de la solicitud, efectivamente visualizamos el siguiente mensaje de error:
Código: php
 Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%'' at line 1.


Solo basta con realizar la inyección adecuada para obtener información sensible, como muestra la siguiente imagen.



Finalizando con XSS

Para este laboratorio, cambiamos la configuración en BWAPP a Xss.



Aquí debemos tener en cuenta que al tratarse de una vulnerabilidad XSS, tendremos que leer un poco el codigo fuente y la posible inyección.

La prueba de concepto (POC) empieza en el sitio web y continua con el estudio en ZAP.



Luego de ingresar los valores en los campos, nos dirigimos a ZAP para investigar las solicitudes y respuestas.



Visualizamos que nos hay parametros enviados, pero.... la cabecera (Headers) algo estan indicando, que efectivamente se esta enviando una petición, que pasaría si modificamos esa cabecera.

Para conocer el comportamiento del sitio, enviamos la solicitud sin modificar y el código fuente, algo debería indicar.

Código Fuente sin la inyección en el header
Código: php

<div id="main">
   
    <h1>XSS - Reflected (GET)</h1>

    <p>Enter your first and last name:</p>

    <form action="/bWAPP/xss_get.php" method="GET">

        <p><label for="firstname">First name:</label><br />
        <input type="text" id="firstname" name="firstname"></p>

        <p><label for="lastname">Last name:</label><br />
        <input type="text" id="lastname" name="lastname"></p>

        <button type="submit" name="form" value="submit">Go</button> 

    </form>


Procedemos a modificar el header.



Ahora continuamos con la modificación y lectura de código a ver si, tenemos éxito.



Código con la inyección
Código: php

<div id="main">
   
    <h1>XSS - Reflected (GET)</h1>

    <p>Enter your first and last name:</p>

    <form action="/bWAPP/xss_get.php" method="GET">

        <p><label for="firstname">First name:</label><br />
        <input type="text" id="firstname" name="firstname"></p>

        <p><label for="lastname">Last name:</label><br />
        <input type="text" id="lastname" name="lastname"></p>

        <button type="submit" name="form" value="submit">Go</button> 

    </form>

    <br />
    Welcome <script>alert(document.cookie)</script> XSS


A simple vista, el código indica que la inyección se ejecutó correctamente.

Para finalizar el POC, iremos al sitio web e inyectaremos en alguno de los campos.



El payload a utilizar es:
Código: php
 <script>alert(document.cookie)</script> 


Presionamos en el botón "GO" y .......




La aplicación ZAP, es muy potente y extremadamente parametrizable, lo que he abarcado aquí es solo un 5% de lo que puede realizar.

Muchas gracias por tomarse el tiempo en leer el extenso post.

Saludos !!!

Me ha aclarado algunas dudas.
Muchas gracias!
..:[Sombras del pasado]:..