El fuzzing es un concepto originado en el entorno de pruebas de software; si bien, debido principalmente a sus características y posibilidades, tiene una aplicación bastante directa en el campo de la seguridad.
Este tipo de pruebas consiste en la generación (casi siempre automatizada) de todo tipo de entradas para un software, generalmente -y con especial énfasis- incluyendo información aleatoria, errónea, malformada o directamente a mala hostia. Como la mítica prueba del gato, pero de forma exhaustiva, vaya.
En el caso concreto de las aplicaciones web, la idea es recorrer el árbol de posibles URL expuestas, prestando especial atención a los parámetros (GET y/o POST), sobre los que se aplicará el fuzzing. Debido a que, en principio, se asume conocimiento cero de las interioridades del software, se usa un acercamiento del tipo «caja negra«, y se prueba a ver qué se traga y por dónde. Como os podréis imaginar, esto genera errores para todos los gustos y colores, en algunos casos inestabilidad en el servidor (algo habrán programado mal si se llega a dar el caso…), e incluso jugosas vulnerabilidades web, especialmente XSS.
Un ejemplo de software para fuzzing sobre web es wapiti (bonita web…). Este software, escrito en python, recorre en primer lugar el árbol de URL como si se tratara de un crawler o un spider, para posteriormente efectuar las pruebas de fuzzing. Entre las opciones más interesantes del mismo encontramos:
- Posibilidad de definir la URL de entrada («-s») para analizar sólo una parte de la aplicación.
- Posibilidad de excluir ciertas URL («-x»).
- Utilizar un servidor proxy («-p»), para cuando auditéis vuestras propias aplicaciones guiño guiño.
- Paso de cookies («-c»).
- Autenticación HTTP («-a»).
Un ejemplo de ejecución simple, con un nivel de verbose 1 (imprime las URL), comprobación de XSS sólo mediante GET y coloreado de la salida, sería el siguiente:
ramiro@cormanthor:~$ wapiti http://sitio_web -v 1 -m GET_XSS -u
Y si os sale mucha metralla… pues algo va muy bien o muy mal, dependiendo de a qué lado del fuzzer os encontréis, y de si estáis haciendo una auditoría o trasteando.
«se prueba a ver qué se traga y por dónde»
Pues yo lo veo útil! XDDD
[…] es un escáner de vulnerabilidades web basado en fuzzing. En la última versión, 2.2.1, permite detectar vulnerabilidades referente […]