Introducción
En este laboratorio, obtendrá experiencia práctica en la identificación y resolución de errores de conexión comunes que pueden ocurrir al usar Gobuster, una potente herramienta para la fuerza bruta de directorios y archivos. Comprender estos errores es crucial para una enumeración web y pruebas de penetración efectivas. Simulará diferentes escenarios de red, observará el comportamiento de Gobuster y aprenderá a interpretar sus mensajes de error para ajustar su estrategia de escaneo. Este enfoque práctico le proporcionará las habilidades para solucionar problemas de Gobuster de manera eficiente en escenarios del mundo real.
Simular un error de "Conexión rechazada" apuntando a un puerto cerrado
En este paso, simulará un error de "Conexión rechazada" (Connection Refused). Este error ocurre típicamente cuando Gobuster intenta conectarse a un host y puerto de destino, pero ningún servicio está escuchando en ese puerto, o un firewall está rechazando activamente la conexión. Utilizará un puerto inexistente en un sitio web común para desencadenar este error.
Abra su terminal y ejecute el siguiente comando gobuster. Apuntaremos a example.com en un puerto alto, poco probable que esté abierto (por ejemplo, 65530) para asegurar un error de conexión rechazada. También usaremos una lista de palabras pequeña para ver el error rápidamente.
gobuster dir -u http://example.com:65530 -w /usr/share/wordlists/dirb/common.txt -t 1 -k -q
-u http://example.com:65530: Especifica la URL de destino con un puerto cerrado.-w /usr/share/wordlists/dirb/common.txt: Utiliza una lista de palabras pequeña y común.-t 1: Establece el número de hilos concurrentes en 1 para que el error sea más aparente.-k: Omite la verificación del certificado SSL (no es estrictamente necesario aquí, pero es una buena práctica para el escaneo web general).-q: Suprime la salida del banner y el progreso, centrándose en los errores.
Debería observar una salida similar a esta, que indica errores de conexión rechazada:
[!] Could not connect to http://example.com:65530: dial tcp XX.XX.XX.XX:65530: connect: connection refused
Esta salida muestra claramente que Gobuster no pudo establecer una conexión porque fue activamente rechazada por el objetivo.
Simular un error de "Tiempo de espera agotado" apuntando a un servidor lento con un --timeout bajo
En este paso, simulará un error de "Tiempo de espera agotado" (Timeout). Un tiempo de espera agotado ocurre cuando Gobuster intenta conectarse a un servidor o enviar/recibir datos, pero la operación tarda más que la duración del tiempo de espera especificada. Esto puede suceder con servidores lentos, congestión de red o cuando un servidor está retrasando intencionalmente las respuestas. Utilizará un punto final público de "servidor lento" y establecerá un valor de tiempo de espera muy bajo para forzar este error.
Ejecute el siguiente comando gobuster. Apuntaremos a http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com que introduce un retraso de 1 segundo, y estableceremos un tiempo de espera de gobuster de 500ms (0.5 segundos).
gobuster dir -u http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com -w /usr/share/wordlists/dirb/common.txt -t 1 --timeout 500ms -k -q
-u http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com: La URL que introduce un retraso.--timeout 500ms: Establece el tiempo de espera de la conexión en 500 milisegundos. Dado que el servidor se retrasa 1000 ms, esto provocará un tiempo de espera agotado.
Debería ver una salida similar a esta, que indica errores de tiempo de espera agotado:
[!] Could not connect to http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com: Get "http://slowwly.robertomurray.co.uk/delay/1000/url/http://www.google.com/admin": context deadline exceeded (Client.Timeout exceeded while awaiting headers)
Esto muestra que el intento de conexión de Gobuster se agotó antes de que se pudiera recibir una respuesta.
Comprender los errores de DNS apuntando a un dominio inexistente
En este paso, encontrará un error de DNS. Este tipo de error ocurre cuando Gobuster no puede resolver el nombre de host de la URL de destino a una dirección IP. Esto sucede típicamente si el nombre de dominio está mal escrito, no existe, o hay problemas con su resolvedor DNS.
Ejecute el siguiente comando gobuster, apuntando a un dominio claramente inexistente como nonexistentdomain12345.com.
gobuster dir -u http://nonexistentdomain12345.com -w /usr/share/wordlists/dirb/common.txt -t 1 -k -q
-u http://nonexistentdomain12345.com: Apunta a un dominio que no debería resolverse.
Debería observar una salida similar a esta, que indica un fallo en la búsqueda DNS:
[!] Could not connect to http://nonexistentdomain12345.com: dial tcp: lookup nonexistentdomain12345.com: no such host
Este mensaje de error no such host indica claramente que el nombre de dominio no pudo ser resuelto por el sistema DNS.
Usar la bandera --no-error para suprimir estos mensajes
En este paso, aprenderá a usar la bandera --no-error en Gobuster. Si bien comprender los errores es importante para la resolución de problemas, a veces es posible que desee suprimir los mensajes de error detallados, especialmente durante escaneos grandes donde se esperan algunos problemas de conexión y solo le interesan los hallazgos exitosos. La bandera --no-error le indica a Gobuster que no imprima los errores de conexión.
Volvamos a ejecutar el comando del Paso 1, pero esta vez agregaremos la bandera --no-error.
gobuster dir -u http://example.com:65530 -w /usr/share/wordlists/dirb/common.txt -t 1 -k -q --no-error
Observe que, aunque la conexión todavía se está rechazando, Gobuster no imprimirá los mensajes [!] Could not connect... en la consola. La salida será mucho más limpia, mostrando potencialmente solo los hallazgos exitosos (si los hay, lo cual es poco probable para un puerto cerrado) o simplemente el resumen final.
## No se mostrarán mensajes de error relacionados con la conexión rechazada.
Esta bandera es útil cuando desea centrarse únicamente en los resultados exitosos de su escaneo sin verse abrumado por los registros de errores de conexión.
Aprender a interpretar errores para ajustar los parámetros de escaneo
En este paso, consolidará su comprensión de cómo interpretar los errores de Gobuster y utilizará ese conocimiento para ajustar sus parámetros de escaneo y obtener resultados más efectivos. La conclusión clave es que diferentes errores sugieren diferentes soluciones.
- "Connection Refused" (Conexión Rechazada): Esto a menudo significa que el servicio no se está ejecutando en ese puerto, un firewall está bloqueando, o el host está caído.
- Acción: Verifique nuevamente la URL y el puerto de destino. Si está seguro de que el servicio debería estar allí, investigue las reglas del firewall o la conectividad de red. Es posible que deba cambiar a un puerto o destino diferente.
- "Timeout" (Tiempo de espera agotado): Esto indica que el servidor es lento, la latencia de la red es alta, o el servidor está retrasando intencionalmente las respuestas.
- Acción: Aumente el valor de
--timeout(por ejemplo,--timeout 5s). También podría considerar reducir el número de hilos (-t) para ejercer menos presión sobre el destino o su red.
- Acción: Aumente el valor de
- "No such host" (Sin tal host) (Error de DNS): El nombre de dominio no se puede resolver.
- Acción: Verifique si hay errores tipográficos en el nombre de dominio. Verifique su configuración de DNS o intente usar un resolvedor DNS diferente. Si el dominio realmente no existe, ha apuntado al lugar equivocado.
Considere un escenario en el que está escaneando un objetivo y encuentra frecuentemente errores de "Timeout". Basándose en lo que ha aprendido, ajustaría su comando aumentando el tiempo de espera. Por ejemplo, si su comando inicial fuera:
gobuster dir -u http://target.com -w /usr/share/wordlists/dirb/common.txt -t 20
Y ve muchos tiempos de espera agotados, lo modificaría a:
gobuster dir -u http://target.com -w /usr/share/wordlists/dirb/common.txt -t 10 --timeout 5s
Aquí, ha reducido los hilos a 10 y ha aumentado el tiempo de espera a 5 segundos, lo que probablemente mejoraría la tasa de éxito de sus solicitudes contra un servidor lento.
Este proceso iterativo de ejecutar Gobuster, observar errores y ajustar parámetros es una habilidad fundamental para una enumeración web eficiente.
Resumen
En este laboratorio, ha aprendido con éxito a identificar y solucionar errores comunes de conexión de Gobuster. Simuló errores de "Connection Refused" (Conexión Rechazada), "Timeout" (Tiempo de espera agotado) y "No such host" (Sin tal host) de DNS, comprendiendo las causas subyacentes de cada uno. También aprendió a suprimir los mensajes de error utilizando la bandera --no-error para obtener una salida más limpia. Lo más importante es que obtuvo información sobre cómo interpretar estos errores para ajustar eficazmente sus parámetros de escaneo de Gobuster, como aumentar el tiempo de espera o verificar la URL de destino, para mejorar la eficiencia y la tasa de éxito de sus esfuerzos de enumeración web. Este conocimiento práctico es invaluable para cualquier persona que realice pruebas de penetración web o búsqueda de recompensas por errores (bug bounty hunting).
