Fuzzing contra un Formulario de Registro utilizando ZAP
Las pruebas de fuzzing son una técnica de pruebas de caja negra para software, las cuales consisten básicamente en encontrar fallas de implementación utilizando inyección de datos malformados de manera automática.
Un fuzzer es un programa que inyecta automáticamente datos semi aleatorios dentro de un programa o pila y permite detectar fallas.
La parte de generación de datos es realizada por generadores, y la identificación de vulnerabilidades se basa en las herramientas de depuración. Los generadores usualmente utilizan combinaciones de vectores de fuzzing estáticos (conocidos por ser valores peligrosos), o datos totalmente aleatorios. Los fuzzers de nueva generación utilizan algoritmos genéticos para enlazar datos inyectados y observar su impacto.
Para la siguiente práctica se utilizará el formulario de registro (login) de DVWA (Damn Vulnerable Web Application). Además se usará la funcionalidad de Fuzzer que incluye OWASP ZAP (Zed Attack Proxy).
Ejecutar OWASP ZAP e indicarle al navegador web; en este caso Firefox; que se utilizará como proxy por medio del plugin FoxyProxy.
En el formulario de registro correspondiente a DVWA, se ingresa en el campo “Username” o Nombre de Usuario el texto admin y en el campo “Password” o Contraseña 12345. Anotar que para la presente práctica es irrelevante la contraseña ingresada en este campo.
OWASP ZAP ya está registrando toda la interacción entre el navegador y la aplicación web objetivo. El interés se centra en la pestaña “History” o Historial, y puntualmente en el método POST. El cual es seleccionado, para luego hacer clic en la pestaña “Request” o Petición ubicado en el panel superior derecho. Aquí se pueden observar y analizar los parámetros enviados hacia la aplicación.
La presente práctica se centra en hacer fuzzing al valor enviado en el campo “password” o contraseña. Por tal razón se selecciona todo el valor; en este caso “12345”, para luego hacer clic derecho sobre esta selección. Resultado de esta acción se desplegará un menú, en el cual se debe seleccionar la opción “Fuzz...”
Se apertura una nueva ventana, dentro de la cual se selecciona un archivo creado a medida de nombre “words.txt”. Este archivo contiene un listado de 25 palabras que serán utilizadas para el procedimiento de Fuzzing. Luego de seleccionar este archivo hacer clic en el botón “Fuzz”.
El Fuzzer de OWASP ZAP empieza a funcionar, mostrando sus resultados de manera inmediata.
La pregunta en esta etapa del procedimiento es; ¿Cómo puedo saber si alguna de las palabras utilizadas corresponde con la contraseña correcta?.
Para responder esta pregunta se debe analizar el tamaño del archivo de respuesta (Columna de nombre "Size" o Tamaño), o también utilizar la característica de búsqueda que incluye OWASP ZAP, mediante la pestaña de nombre “Search” o Búsqueda. Para utilizar esta última opción mencionada, se requiere buscar por un texto que indique el ingreso satisfactorio hacia la aplicación web. En el caso de DVWA, al ingresar a la aplicación web; después de haber ingresado un usuario y contraseña válida; se es redireccionado a una nueva página donde se incluye el texto “Damn Vulnerable Web App (DVWA) v1.8 :: Welcome” en el título. Tal como se puede visualizar en la pestaña “Response” o Respuesta ubicado en el panel superior derecho.
La lista de palabras a ser utilizada en este procedimiento de Fuzzing, puede descargarse desde algún sitio en Internet o crear una lista de palabras personalizada utilizando una herramienta como “cewl”.
Adicionalmente considerar la gran cantidad de peticiones realizadas por el Fuzzer contra la aplicación web objetivo. Por lo tanto se sugiere realizar configuraciones en el Fuzzer que minimicen las probabilidades de impactar seriamente con el normal funcionamiento de la aplicación web, o el bloqueo de las pruebas realizadas por parte de los mecanismos de seguridad desplegados en el objetivo.
Fuentes:
https://www.owasp.org/index.php/Fuzzing
http://www.dvwa.co.uk/
http://getfoxyproxy.org/
https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project
http://www.digininja.org/projects/cewl.php
Sobre el Autor
Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor Independiente en Ciberseguridad
WhatsApp: https://wa.me/51949304030
Correo Electrónico: ReYDeS@gmail.com
Twitter: https://twitter.com/Alonso_ReYDeS
Youtube: https://www.youtube.com/c/AlonsoCaballero
LinkedIn: https://pe.linkedin.com/in/alonsocaballeroquezada/