Analizar los Resultados de Cambios en la Longitud de Respuesta o Estado
En este paso, aprenderá a interpretar la salida del escaneo fuzz de Gobuster. La clave para identificar parámetros GET potencialmente válidos o interesantes radica en observar los cambios en la respuesta HTTP.
Cuando Gobuster se ejecuta, muestra el código de estado HTTP y la longitud del contenido (en bytes) para cada solicitud que realiza.
Por ejemplo, la salida del paso anterior mostró:
200 (290) - http://127.0.0.1:8000/index.html?id=test
200 (290) - http://127.0.0.1:8000/index.html?name=test
...
Aquí, 200 es el código de estado HTTP (OK), y 290 es la longitud del contenido de la respuesta.
Qué buscar:
- Códigos de Estado Diferentes: Si una solicitud con un nombre de parámetro específico devuelve un código de estado HTTP diferente (por ejemplo,
200 para válido, 404 para no encontrado, 500 para error del servidor, 302 para redirección), podría indicar que la aplicación procesó o reaccionó a ese parámetro. Por ejemplo, un 200 OK para un parámetro que normalmente devuelve 404 Not Found podría ser significativo.
- Longitudes de Contenido Diferentes: Incluso si el código de estado sigue siendo
200 OK, un cambio en la longitud del contenido puede ser un fuerte indicador. Esto a menudo significa que el cuerpo de la respuesta de la aplicación cambió, quizás al incluir datos específicos relacionados con el parámetro, un mensaje de error o un diseño de página diferente.
- Mensajes de Error: A veces, un parámetro puede desencadenar un mensaje de error (por ejemplo, error SQL, error de aplicación) que se refleja en el cuerpo de la respuesta, lo que lleva a una longitud de contenido diferente o incluso a un código de estado
500. Esta es una señal fuerte de una posible vulnerabilidad.
En nuestra configuración de laboratorio actual, dado que index.html es un archivo estático y el servidor Python no procesa los parámetros GET, observará que todas las solicitudes devuelven un código de estado 200 y la misma longitud de contenido (290 bytes). Este es el comportamiento esperado para nuestro caso de prueba simple.
En un escenario del mundo real, si estuviera realizando fuzzing en una aplicación web activa y viera una entrada como:
200 (512) - http://example.com/search?query=test
mientras que otros parámetros devolvían 200 (290), el parámetro query valdría la pena investigarlo más a fondo debido a la diferente longitud del contenido.
Este paso concluye el laboratorio. Ha aprendido con éxito cómo usar Gobuster para realizar fuzzing de parámetros GET y cómo analizar los resultados.
Para detener el servidor HTTP de Python, puede encontrar su ID de proceso (PID) y matarlo. Primero, liste los procesos de Python en ejecución:
ps aux | grep "python3 -m http.server 8000"
Verá una salida similar a:
labex 1234 0.0 0.0 12345 6789 ? S HH:MM 0:00 python3 -m http.server 8000
Anote el PID (por ejemplo, 1234 en este ejemplo) y luego mate el proceso:
kill 1234
Reemplace 1234 con el PID real que encontró.