OWASP Zap
es una herramienta disponible para Linux, Windows y Mac desarrollada
dentro del Open Web Application Security Project. Dentro de esta
fundación se han desarrollado varias herramientas, entre ellas la que
nos ocupa hoy: OWASP ZAP.
Esta herramienta nos permite realizar múltiples pruebas de penetración (SQLi, XSS, Descubriemiento de ficheros, etc) en aplicaciones Web
de una forma muy sencilla. Aunque la herramienta en sí tiene un
potencial casi infinito (e infinito si lo aderezamos con plugins). En
este tutorial vamos a ver las opciones más utilizadas de ZAP y un par de
pruebas de concepto.
Cuando iniciemos la aplicación veremos una pantalla donde podremos
restaurar una sesión anterior o iniciar una nueva. En nuestro ejemplo ya
que vamos a iniciar una auditoría nueva no restauraremos ninguna
sesión.
En grande y en la parte derecha tenemos un modo de ataque automático
o activo. Si colocamos en input la URL de la Web a auditar comenzará a
navegar a través de los diferentes enlaces y a descubrir ficheros
ocultos de la misma usando diferentes técnicas como la lectura del
fichero robots.txt, spider, etc. En la parte izquierda podemos ver el árbol de consultas,
esto es muy útil tanto para descubrir ficheros ocultos como para
descubrir formularios post dentro de la Web, etc. Si pulsamos sobre
alguna de las peticiones podremos ver en la parte derecha los datos que
se enviaron (cabeceras y formularios) así como los que se recibieron,
además, pulsando con botón derecho podremos reenviar la petición o modificarla, aunque eso lo veremos mas abajo junto al modo de ataque pasivo.
Cuando el análisis automático haya terminado podremos ver en la parte
inferior un listado de alertas y vulnerabilidades sobre el sitio Web.
Análisis pasivo de un sitio Web: Ataques de fuerza bruta y búsqueda de XSS con ZAP
El análisis pasivo mediante ZAP nos permite navegar
por el sitio Web como si fuésemos un usuario más del sitio y,
posteriormente, realizar pruebas de penetración sobre las diferentes
partes que hemos visitado. Para ello ZAP creará un proxy
en nuestro equipo local. Podemos modificar los parámetros del proxy
(como el puerto) yendo a el botón de configuración (rueda dentada) y
seleccionando el menú Proxy Local. Una vez configurado a nuestro gusto
deberemos configurar nuestro navegador con el proxy localhost y el
puerto que hayamos elegido, normalmente el 8080.
Una vez tenemos todo funcionando, si empezamos a navegar por un sitio
Web con el navegador, veremos que todas nuestras consultas van quedando
reflejadas dentro de ZAP y que podemos consultarlas, modificarlas, etc.
Igual que si hubiésemos hecho un análisis activo. La ventaja es
obviamente que generaremos mucho menos ruido que con el ataque activo.
Para nuestro ejemplo de fuerza bruta vamos a colocarnos sobre una de
las peticiones de tipo POST que se han hecho en un formulario de login,
pulsaremos con el botón derecho y dentro del mismo iremos a la opción Atacar>Fuzz.
A continuación se nos abrirá una ventana donde podemos ver los detalles
de la petición y la respuesta. Para nuestro primer ejemplo vamos a
intentar un ataque de fuerza bruta contra el campo “pwd” correspondiente
al password del usuario, así que elegiremos el valor que se ha enviado en la petición y nos iremos al botón “Add” para añadir un diccionario que pruebe en lugar del valor.
Veréis que hay varios de diccionarios ya creados, algunos son, por
ejemplo sentencias SQLi o ataques XSS de forma que podamos probar toda
una batería de combinaciones contra el campo. En nuestro caso y como
vamos a hacer un ataque de fuerza bruta elegiremos un diccionario propio
que contenga diferentes tipos de contraseñas
Así pues la diferencia a la hora de lanzar un ataque de tipo fuerza bruta, XSS o SQLi será únicamente el diccionario que elijamos,
además ZAP viene con un montón de diccionarios ya creados para estos
fines que podéis utilizar. Una vez elegido el diccionario que queramos
pulsamos añadir y damos sobre el botón Start Fuzzer.
Ahora, ZAP empezará a repetir la petición inicial pero
sustituyendo el campo que hemos seleccionado anteriormente por cada una
de las combinaciones que disponga nuestro diccionario. En la parte
inferior de ZAP podemos ver todas las peticiones y el resultado de la
misma, además, si pulsamos sobre ella podemos ver en la parte superior
los detalles de la petición y la respuesta. Para ver qué
intentos de contraseña han tenido éxito una buena estrategia es fijarnos
en el tamaño de la respuesta de cada petición. Si nosotros
vemos que al hacer una petición con una contraseña errónea el servidor
nos envía respuestas de 3,29Kb y de repente vemos que en una de esas
peticiones la respuesta es de un tamaño distinto quiere decir que el
servidor ha respondido otra cosa, es decir que probablemente la haya
aceptado.
En este ejemplo podemos ver que se ha obtenido un resultado diferente con la contraseña “cursoowasp” que es la correcta.
En el caso de que usásemos un diccionario de XSS deberemos fijarnos
en la columna “Estado” la cual aparecerá con una señal y el texto
Reflected en caso de que el mismo payload que hemos enviado sea devuelto
por la página, es decir, en caso de que sea vulnerable.
Es importante también destacar, que a pesar de que nosotros hemos
usado un campo de formulario para hacer nuestros ataques podríamos usar
varios campos o cabeceras de la misma forma que hemos hecho.
Por último acabar diciendo que para aquellas páginas que contienen CSRF
ZAP dispone de una utilidad (Configuración>Tokens anti CSRF) en la
que podemos especificar el campo correspondiente al token para que lo
tenga en consideración a la hora de hacer las peticiones, en el vídeo de
la entrada podéis ver un ejemplo de su uso.
Seguir en twitter: @disoftin
Fuente: https://www.diazsecurity.com/
0 Comentarios