Técnica Fuzzing con OWASP ZAP: Profundizando en el análisis de Directory Traversal y detectando en lote archivos por defecto

OWASP ZAP brinda opciones muy útiles por defecto, pero toda herramienta de pruebas de seguridad, sobre todo los escaneadores automáticos, necesitan ser ajustadas según el tipo de aplicación que vaya a comprobarse para que los resultados  sean realmente profundos y serios. En un artículo publicado recientemente, realizaba un análisis de este particular. Las opciones por defecto están muy bien para hacer escaneos exploratorios y apoyar el trabajo de los desarrolladores durante el proceso de construcción del software, pero el pentesting profesional requieren mayor configuración y control del proceso de pruebas de seguridad.

OWASP ZAP, mediante la opción Fuzzer, permite acelerar la ejecución de pruebas de seguridad Fuzzing. El término Fuzz o Fuzzing (black-box) fue desarrollada por el Profesor Barton Miller y sus estudiantes en la  Universidad de Wisconsin, Madison, en 1989, aunque hay reportes sobre su uso desde la década del 1950. Consiste en la búsqueda de errores a través de la inyección automatizada de entradas malformadas o semi-malformadas.

OWASP tiene un artículo muy interesante sobre las técnicas Fuzzing. También hay un anexo  a la Guía de Pruebas de OWASP titulado Fuzz Vectors que explica la utilización de algunos vectores para la realización de pruebas de seguridad reales. De estos aspectos solo quiero destacar que OWASP establece dos categorías de Fuzzing:

  1. Fuzzing Recursivo: se produce cuando las entradas se construyen mediante combinaciones de símbolos de tipo aa, ab, ac, ad, ae, etc.
  2. Fuzzing Sustitutivo: Cuando las entradas se toman de un conjunto dado de cadenas.

En este artículo te enseñaré a utilizar el Fuzzing Sustitutivo mediante dos casos de estudio:

Directory Traversal Exhaustivo

Problema: María es una especialista de seguridad que desear comprobar más variantes de Directory Traversal que las abordadas por defecto en las herramientas de pruebas automáticas. Ella se dió cuenta que existen listas con rutas interesantes como las de http://www.vulnerability-lab.com/resources/documents/587.txt pero son muchas, muchas, para probarlas a mano en un tiempo razonable.

Solución:

  • Descargar o crear un archivo local (Ej. fuzzer-directory-traversal.txt) y dejar las rutas a comprobar (Ej: http://www.vulnerability-lab.com/resources/documents/587.txt)
  • Configurar OWASP ZAP en modo Proxy de Intercepción.
  • Aplicar la prueba de Seguridad OTG-AUTHZ-001 para determinar los puntos de entradas relacionados con la manipulación de archivos en la aplicación Web.
  • En esta fase, ya María debe haber seleccionado los puntos de entradas que le interesa comprobar en más detalles. Supongamos que está comprobando una aplicación Web como Multillidae del proyecto OWASP BWA y la ruta específica es “…/mutillidae/index.php?page=home.php”. El objetivo de la prueba será por tanto hacer un Fuzzing Sustitutivo en la posición que ocupa el recurso home.php. Veamos como se hace:
1

Figura 1. Marcamos la petición de interés, realizamos clic derecho y seleccionamos la opción Fuzz.

2.png

Figura 2. Marcamos la cadena que va a ser sustituida como si fueramos a copiarla (home.php), esto debe hacerse con mucho cuidado para que todos los caracteres correspondientes estén seleccionados. Luego hacemos clic en el botón Add.

3.png

Figura 3. Clic en el botón Add. No hay ningún payload cargado.

4.png

Figura 4. Seleccionamos la opción File para indicar que vamos a cargar las cadenas desde un archivo. Luego indicamos el archivo con el botón Select. Podemos marcar la opción “Ignore Empty Lines” para que no tome las líneas en blanco del archivo. En “Payloads Preview” muestra el contenido del archivo y permite hacer algunas modificaciones de último minuto, para que se guarden: opción Save. Al concluir damos clic en el botón Add.

5

Figura 5. Si todo se hizo correctamente, la lista de payloads, anteriormente vacía, ahora contiene el nuevo payload creado. hacemos clic en el botón OK.

6.png

Figura 6. El color (verde) relaciona la cadena que va a ser sustituida con el payload correspondiente. Este proceso se puede hacer con tantas cadenas como queramos según el tipo de prueba de seguridad. En este caso, solo necesitamos aplicar un payload. El payload de color amarillo se carga en algunas opciones por defecto pero no está asignada a ninguna cadena: elimínalo seleccionándolo y dando clic en el botón Remove. Realizado todos los pasos anteriores podemos comenzar el proceso de Fuzzing (botón “Start Fuzzer” esquina inferior derecha)

7

Figura 7. La pestaña Fuzzer indica el avance de las pruebas de seguridad y va mostrando información sobre los códigos de respuesta HTTP, el payload específico cargado para cada petición, el tamaño del encabezado y el cuerpo de respuesta HTTP y otros datos útiles para el análisis.

8.png

Figura 8. Podemos ver como aparecieron otros resultados de pruebas de seguridad de Directory Traversal que no se habían tenido en cuenta en un ataque  Active Scan.

9.png

Figura 9. Podemos ver como aparecieron otros resultados de pruebas de seguridad de Directory Traversal que no se habían tenido en cuenta en un ataque  Active Scan.

10.png

Figura 10. Fuzzer permite ajustar la cantidad de peticiones concurrentes, el tiempo de espera entre peticiones y otras opciones interesantes para afinar la prueba de penetración.

Ya vímos cómo un Fuzzing Sustitutivo puede ayudar a realizar muchas comprobaciones de seguridad en un tiempo muy corto. Ahora veamos otro ejemplo más común:

Detectando en Lote Archivos por Defecto

Problema: Alberto es un especialista de seguridad que quiere comprobar si algunos archivos que WordPress instala por defecto como readme.html o license.txt están presentes en un sitio Web. El ha hecho esto muchas veces y no le motiva estar probando todas las posibles rutas y recursos a mano. Ha escuchado que con cURL y un poco de Bash podría resolver el problema pero no tiene tiempo para aprender a programar con Bash. El utiliza con regularidad OWASP ZAP y quisiera poder hacer estas comprobaciones en lote con la herramienta.

Solución:

  • Configurar OWASP ZAP en modo Proxy de Intercepción.
  • Crear un archivo (Ej. wp-archivos-por-defecto.txt) con el listado de archivos que quiere comprobar, puedes consultar una lista en este enlace.
  • Aplicar todos los pasos realizados en la prueba de Directory Traversal. Te muestro algunas capturas de pantalla:
11.png

Figura 11. Seleccionamos una petición HTTP realizada previamente a la aplicación Web y marcamos toda la cadena que aparece despues de la ruta base. Eliminamos el payload cargado (color rosa) por defecto (botón remove). Damos clic en el botón Add.

12.png

Figura 12. Seleccionamos la opción File para indicar que vamos a cargar las cadenas desde un archivo. Luego indicamos el archivo con el botón Select. Podemos marcar la opción “Ignore Empty Lines” para que no tome las líneas en blanco del archivo. En “Payloads Preview” muestra el contenido del archivo y permite hacer algunas modificaciones de último minuto, para que se guarden: opción Save. Al concluir damos clic en el botón Add.

13.png

Figura 13. El color amarillo indica la relación entre el payloads y la cadena en la que será aplicado. Podemos iniciar el proceso de Fuzzing mediante el botón Start Fuzzer, esquina inferior derecha.

14.png

Figura 14. El código de respuesta HTTP 200 OK nos sirve para determinar los recursos que están presentes en la aplicación Web.

Conclusiones

OWASP ZAP contribuye a disminuir la duración de las pruebas de seguridad durante un pentesting, sin embargo, debes tener en cuenta que la afinación de la configuración y las pruebas debe hacerlo el especialista según su nivel de conocimiento y experiencia en la materia. No le pidamos a OWASP ZAP cosas que no puede hacer. La opción Fuzzer y la técnica de Fuzzing Sustitutivo debe ser un método siempre presente durante un pestesting profesional en aplicaciones Web.

Puedes dejar tus comentarios debajo si deseas que profundice en algún concepto o técnica en particular.

Espero que te haya resultado provechosa esta entrada y te ayude a mantener o mejorar la seguridad de tus aplicaciones Web.

S4lud0s y h4st4 el próx1m0 p0st!!!

Anuncios

Un comentario en “Técnica Fuzzing con OWASP ZAP: Profundizando en el análisis de Directory Traversal y detectando en lote archivos por defecto

  1. Pingback: ¿Eres vulnerable a un ataque de Directory Traversal? Aplicación de la OTG-AUTHZ-001 con OWASP ZAP | Behique Digital

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s