Gobuster - Enumeración de Directorios y Subdominios
Gobuster - Herramienta de Enumeración
Section titled “Gobuster - Herramienta de Enumeración”Introducción
Section titled “Introducción”Gobuster es una herramienta de enumeración de alta velocidad escrita en Go, diseñada para realizar ataques de fuerza bruta contra directorios, archivos web, subdominios DNS, virtual hosts y buckets de almacenamiento en la nube. Su arquitectura multithreaded la convierte en una de las herramientas más rápidas para enumeración activa.
- GitHub: https://github.com/OJ/gobuster
- Lenguaje: Go
- Licencia: Apache 2.0
- Desarrollador: OJ Reeves (@TheColonial)
Características Principales
Section titled “Características Principales”🚀 Alto Rendimiento
Section titled “🚀 Alto Rendimiento”- Multithreading configurable
- Arquitectura eficiente en Go
- Gestión optimizada de memoria
- Procesamiento paralelo de solicitudes
🔧 Múltiples Modos de Operación
Section titled “🔧 Múltiples Modos de Operación”- dir: Enumeración de directorios y archivos
- dns: Descubrimiento de subdominios
- vhost: Detección de virtual hosts
- s3: Enumeración de buckets S3
- gcs: Búsqueda en Google Cloud Storage
- tftp: Enumeración de servidores TFTP
- fuzz: Fuzzing personalizado
🛡️ Características de Seguridad
Section titled “🛡️ Características de Seguridad”- Control de rate limiting
- Manejo de redirects
- Soporte para proxies
- Headers HTTP personalizados
- Autenticación básica
Instalación
Section titled “Instalación”Método 1: Go Install (Recomendado)
Section titled “Método 1: Go Install (Recomendado)”# Requisito: Go 1.21 o superiorgo install github.com/OJ/gobuster/v3@latest
# Verificar instalacióngobuster versionMétodo 2: Descarga de Binarios
Section titled “Método 2: Descarga de Binarios”# Descargar desde releaseswget https://github.com/OJ/gobuster/releases/latest/download/gobuster-linux-amd64.tar.gz
# Extraer y mover a PATHtar -xzf gobuster-linux-amd64.tar.gzsudo mv gobuster /usr/local/bin/Método 3: Docker
Section titled “Método 3: Docker”# Ejecutar con Dockerdocker run --rm -it ghcr.io/oj/gobuster:latest
# Con volumen para wordlistsdocker run --rm -v $(pwd):/app -it ghcr.io/oj/gobuster:latest dir -u https://example.com -w /app/wordlist.txtMétodo 4: Compilación desde Código Fuente
Section titled “Método 4: Compilación desde Código Fuente”git clone https://github.com/OJ/gobuster.gitcd gobustergo mod tidygo build -o gobusterSintaxis Básica
Section titled “Sintaxis Básica”gobuster [modo] [opciones] -u [URL] -w [wordlist]Opciones Globales
Section titled “Opciones Globales”-h, --help Mostrar ayuda-z, --no-progress No mostrar barra de progreso-o, --output Archivo de salida-q, --quiet No mostrar banner ni errores-t, --threads Número de threads (por defecto: 10)-v, --verbose Modo verbose--delay Delay entre solicitudes--timeout Timeout HTTP (por defecto: 10s)Modo DIR - Enumeración de Directorios y Archivos
Section titled “Modo DIR - Enumeración de Directorios y Archivos”Sintaxis del Modo DIR
Section titled “Sintaxis del Modo DIR”gobuster dir -u <URL> -w <wordlist> [opciones]Opciones Específicas del Modo DIR
Section titled “Opciones Específicas del Modo DIR”-c, --cookies Cookies HTTP-e, --expanded Mostrar URLs completas-f, --add-slash Agregar slash al final-k, --no-tls-validation Ignorar certificados SSL-l, --include-length Incluir longitud de respuesta-n, --no-status No mostrar códigos de estado-P, --password Contraseña para autenticación básica-p, --proxy Proxy HTTP (ej: http://127.0.0.1:8080)-r, --follow-redirect Seguir redirects-s, --status-codes Códigos de estado a mostrar (por defecto: 200,204,301,302,307,401,403)-U, --username Usuario para autenticación básica-x, --extensions Extensiones de archivo a buscar-b, --status-codes-blacklist Códigos de estado a ignorarEjemplos Básicos de DIR
Section titled “Ejemplos Básicos de DIR”Escaneo Básico
Section titled “Escaneo Básico”# Enumeración básica de directoriosgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt
# Con progreso verbosogobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -vBúsqueda con Extensiones
Section titled “Búsqueda con Extensiones”# Buscar archivos PHP, HTML y TXTgobuster dir -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,txt
# Múltiples extensiones comunesgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -x php,asp,aspx,jsp,html,js,txt,pdfConfiguración de Threads y Timeout
Section titled “Configuración de Threads y Timeout”# 50 threads para mayor velocidadgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -t 50
# Con timeout personalizadogobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -t 20 --timeout 15sEjemplos Avanzados de DIR
Section titled “Ejemplos Avanzados de DIR”Con Autenticación
Section titled “Con Autenticación”# Autenticación básicagobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -U admin -P password
# Con cookies de sesióngobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -c "sessionid=abc123; csrftoken=xyz789"A través de Proxy
Section titled “A través de Proxy”# Usar Burp Suite como proxygobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -p http://127.0.0.1:8080
# Con proxy SOCKSgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -p socks5://127.0.0.1:9050Filtrado Avanzado
Section titled “Filtrado Avanzado”# Solo mostrar códigos específicosgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -s "200,204,301,302,307"
# Ignorar códigos específicosgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -b "404,403"
# Mostrar longitud de respuestagobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -lModo DNS - Enumeración de Subdominios
Section titled “Modo DNS - Enumeración de Subdominios”Sintaxis del Modo DNS
Section titled “Sintaxis del Modo DNS”gobuster dns -d <dominio> -w <wordlist> [opciones]Opciones Específicas del Modo DNS
Section titled “Opciones Específicas del Modo DNS”-d, --domain Dominio objetivo-r, --resolver Servidor DNS personalizado-c, --show-cname Mostrar registros CNAME-i, --show-ips Mostrar direcciones IP--wildcard Continuar aunque existan wildcards--timeout Timeout DNS (por defecto: 1s)Ejemplos de DNS
Section titled “Ejemplos de DNS”Enumeración Básica de Subdominios
Section titled “Enumeración Básica de Subdominios”# Búsqueda básica de subdominiosgobuster dns -d example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
# Mostrar IPs y CNAMEsgobuster dns -d example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -i -cCon Resolver Personalizado
Section titled “Con Resolver Personalizado”# Usar Google DNSgobuster dns -d example.com -w /usr/share/wordlists/subdomains.txt -r 8.8.8.8:53
# Múltiples resolversgobuster dns -d example.com -w /usr/share/wordlists/subdomains.txt -r 8.8.8.8:53,1.1.1.1:53Manejo de Wildcards
Section titled “Manejo de Wildcards”# Continuar aunque existan wildcardsgobuster dns -d example.com -w /usr/share/wordlists/subdomains.txt --wildcard
# Con timeout personalizadogobuster dns -d example.com -w /usr/share/wordlists/subdomains.txt --timeout 2sModo VHOST - Virtual Hosts
Section titled “Modo VHOST - Virtual Hosts”Sintaxis del Modo VHOST
Section titled “Sintaxis del Modo VHOST”gobuster vhost -u <URL> -w <wordlist> [opciones]Opciones Específicas del Modo VHOST
Section titled “Opciones Específicas del Modo VHOST”--append-domain Agregar dominio base al final--domain Dominio para prueba de virtual hosts-r, --follow-redirect Seguir redirectsEjemplos de VHOST
Section titled “Ejemplos de VHOST”# Búsqueda básica de virtual hostsgobuster vhost -u https://example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
# Agregar dominio basegobuster vhost -u https://example.com -w /usr/share/wordlists/subdomains.txt --append-domain
# Con dominio específicogobuster vhost -u https://example.com -w /usr/share/wordlists/subdomains.txt --domain example.comModo S3 - Buckets de Amazon S3
Section titled “Modo S3 - Buckets de Amazon S3”Sintaxis del Modo S3
Section titled “Sintaxis del Modo S3”gobuster s3 -w <wordlist> [opciones]Ejemplos de S3
Section titled “Ejemplos de S3”# Búsqueda de buckets S3gobuster s3 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
# Con múltiples threadsgobuster s3 -w /usr/share/wordlists/bucket-names.txt -t 50
# Buscar buckets de empresa específicagobuster s3 -w /usr/share/wordlists/company-names.txtModo FUZZ - Fuzzing Personalizado
Section titled “Modo FUZZ - Fuzzing Personalizado”Sintaxis del Modo FUZZ
Section titled “Sintaxis del Modo FUZZ”gobuster fuzz -u <URL con FUZZ> -w <wordlist> [opciones]Ejemplos de FUZZ
Section titled “Ejemplos de FUZZ”# Fuzzing de parámetros GETgobuster fuzz -u "https://example.com/api/v1/users?id=FUZZ" -w /usr/share/seclists/Fuzzing/numbers.txt
# Fuzzing en pathgobuster fuzz -u "https://example.com/api/FUZZ/data" -w /usr/share/wordlists/api-endpoints.txt
# Fuzzing de headersgobuster fuzz -u "https://example.com/" -w /usr/share/wordlists/headers.txt -H "X-FUZZ: test"Wordlists Recomendadas
Section titled “Wordlists Recomendadas”Para Directorios y Archivos
Section titled “Para Directorios y Archivos”# SecLists (Recomendado)/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt/usr/share/seclists/Discovery/Web-Content/common.txt/usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
# DirBuster wordlists/usr/share/wordlists/dirb/common.txt/usr/share/wordlists/dirb/big.txt/usr/share/wordlists/dirb/directory-list-2.3-medium.txt
# Especializadas/usr/share/seclists/Discovery/Web-Content/apache.txt/usr/share/seclists/Discovery/Web-Content/nginx.txt/usr/share/seclists/Discovery/Web-Content/iis.txtPara Subdominios DNS
Section titled “Para Subdominios DNS”# SecLists DNS/usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt/usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt/usr/share/seclists/Discovery/DNS/fierce-hostlist.txt
# Especializadas/usr/share/seclists/Discovery/DNS/dns-Jhaddix.txt/usr/share/seclists/Discovery/DNS/namelist.txtScripts y Automatización
Section titled “Scripts y Automatización”Script Bash para Enumeración Completa
Section titled “Script Bash para Enumeración Completa”#!/bin/bash
TARGET="$1"WORDLIST_DIR="/usr/share/seclists"
if [ -z "$TARGET" ]; then echo "Uso: $0 <URL_objetivo>" exit 1fi
echo "[+] Iniciando enumeración completa de $TARGET"mkdir -p "gobuster_$TARGET"cd "gobuster_$TARGET"
# Enumeración de directorios básicaecho "[+] Enumeración de directorios básica..."gobuster dir -u "$TARGET" -w "$WORDLIST_DIR/Discovery/Web-Content/common.txt" -o dirs_common.txt -t 20
# Enumeración de directorios extensaecho "[+] Enumeración de directorios extensa..."gobuster dir -u "$TARGET" -w "$WORDLIST_DIR/Discovery/Web-Content/directory-list-2.3-medium.txt" -o dirs_medium.txt -t 20
# Búsqueda de archivos con extensionesecho "[+] Búsqueda de archivos con extensiones..."gobuster dir -u "$TARGET" -w "$WORDLIST_DIR/Discovery/Web-Content/common.txt" -x php,html,txt,js,asp,aspx,jsp -o files_common.txt -t 20
# Enumeración de subdominios (si es dominio)DOMAIN=$(echo "$TARGET" | sed 's|https\?://||' | cut -d'/' -f1)echo "[+] Enumeración de subdominios para $DOMAIN..."gobuster dns -d "$DOMAIN" -w "$WORDLIST_DIR/Discovery/DNS/subdomains-top1million-5000.txt" -o subdomains.txt -t 20
# Virtual hostsecho "[+] Búsqueda de virtual hosts..."gobuster vhost -u "$TARGET" -w "$WORDLIST_DIR/Discovery/DNS/subdomains-top1million-5000.txt" -o vhosts.txt -t 20
echo "[+] Enumeración completada. Resultados en directorio gobuster_$TARGET"Script para Múltiples Objetivos
Section titled “Script para Múltiples Objetivos”#!/bin/bash
TARGETS_FILE="$1"THREADS=20
if [ ! -f "$TARGETS_FILE" ]; then echo "Uso: $0 <archivo_de_objetivos>" exit 1fi
while read -r target; do echo "[+] Procesando $target"
# Crear directorio para resultados safe_name=$(echo "$target" | tr '/:' '_') mkdir -p "results_$safe_name"
# Enumeración básica gobuster dir -u "$target" \ -w /usr/share/wordlists/dirb/common.txt \ -o "results_$safe_name/directories.txt" \ -t "$THREADS" \ -q
echo "[+] Completado: $target"
done < "$TARGETS_FILE"Técnicas Avanzadas
Section titled “Técnicas Avanzadas”1. Enumeración por Etapas
Section titled “1. Enumeración por Etapas”# Etapa 1: Reconocimiento básicogobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -s "200,204,301,302"
# Etapa 2: Análisis de resultados y enumeración específicagobuster dir -u https://example.com/admin -w /usr/share/seclists/Discovery/Web-Content/admin-panels.txt
# Etapa 3: Búsqueda de archivos sensiblesgobuster dir -u https://example.com -w /usr/share/seclists/Discovery/Web-Content/web-extensions.txt -x config,backup,old,tmp2. Combinación de Herramientas
Section titled “2. Combinación de Herramientas”# Usar resultados de Nmap para objetivos específicosnmap -p 80,443 --open 192.168.1.0/24 | grep "Nmap scan report" | awk '{print $5}' > targets.txt
while read target; do gobuster dir -u "http://$target" -w /usr/share/wordlists/dirb/common.txt -o "results_$target.txt"done < targets.txt3. Optimización de Performance
Section titled “3. Optimización de Performance”# Configuración optimizada para redes rápidasgobuster dir -u https://example.com \ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt \ -t 100 \ --timeout 10s \ --delay 100ms \ -o results.txt
# Para objetivos lentos o con rate limitinggobuster dir -u https://example.com \ -w /usr/share/wordlists/dirb/common.txt \ -t 5 \ --timeout 30s \ --delay 1s \ -o results.txtFiltrado y Análisis de Resultados
Section titled “Filtrado y Análisis de Resultados”Filtrar por Tamaño de Respuesta
Section titled “Filtrar por Tamaño de Respuesta”# Obtener tamaños únicosgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -l | awk '{print $2}' | sort -u
# Filtrar respuestas pequeñas (posibles falsos positivos)gobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -l | awk '$2 > 1000'Análisis Post-Enumeración
Section titled “Análisis Post-Enumeración”#!/bin/bash
RESULTS_FILE="$1"
echo "[+] Análisis de resultados de Gobuster"echo "======================================="
# Contar total de hallazgosecho "Total de URLs encontradas: $(wc -l < "$RESULTS_FILE")"
# Agrupar por código de estadoecho -e "\nCódigos de estado encontrados:"grep -oE 'Status: [0-9]{3}' "$RESULTS_FILE" | sort | uniq -c
# Encontrar archivos interesantesecho -e "\nArchivos potencialmente interesantes:"grep -E '\.(config|backup|old|tmp|bak|sql|log)' "$RESULTS_FILE" || echo "Ninguno encontrado"
# Directorios administrativosecho -e "\nDirectorios administrativos:"grep -iE '/(admin|administrator|panel|control|manage)' "$RESULTS_FILE" || echo "Ninguno encontrado"Evasión y Técnicas de Sigilo
Section titled “Evasión y Técnicas de Sigilo”1. Control de Rate Limiting
Section titled “1. Control de Rate Limiting”# Delay entre solicitudesgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt --delay 2s -t 5
# Timeout largo para evitar deteccióngobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt --timeout 30s -t 32. Rotación de User-Agent
Section titled “2. Rotación de User-Agent”# User-Agent personalizadogobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
# Headers adicionales para evasióngobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt \ -H "User-Agent: GoogleBot/2.1" \ -H "X-Forwarded-For: 127.0.0.1" \ -H "X-Real-IP: 127.0.0.1"3. Uso de Proxies
Section titled “3. Uso de Proxies”# Proxy HTTPgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -p http://proxy.example.com:8080
# Cadena de proxies con herramientas externasproxychains gobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txtTroubleshooting y Resolución de Problemas
Section titled “Troubleshooting y Resolución de Problemas”Problemas Comunes y Soluciones
Section titled “Problemas Comunes y Soluciones”1. Certificados SSL/TLS
Section titled “1. Certificados SSL/TLS”# Ignorar errores de certificadogobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -k
# Error específico de certificadogobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt --no-tls-validation2. Rate Limiting y WAF
Section titled “2. Rate Limiting y WAF”# Reducir threads y agregar delaygobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -t 1 --delay 5s
# Cambiar User-Agentgobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -H "User-Agent: curl/7.68.0"3. Falsos Positivos
Section titled “3. Falsos Positivos”# Investigar respuesta típica 404curl -I https://example.com/nonexistentfile123456789
# Filtrar por tamaño si es necesariogobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -l | grep -v "Size: 1234"Integración con Otras Herramientas
Section titled “Integración con Otras Herramientas”Con Burp Suite
Section titled “Con Burp Suite”# Configurar Gobuster para usar Burp como proxygobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -p http://127.0.0.1:8080
# En Burp Suite, configurar intercepción para analizar solicitudesCon Nmap
Section titled “Con Nmap”# Usar resultados de Nmap para objetivosnmap -p 80,443 --open target_network/24 | grep "Nmap scan report" | awk '{print $5}' | while read host; do echo "[+] Enumerando $host" gobuster dir -u "http://$host" -w /usr/share/wordlists/dirb/common.txt -o "enum_$host.txt"doneCon Nuclei
Section titled “Con Nuclei”# Primero enumerar con Gobuster, luego escanear con Nucleigobuster dir -u https://example.com -w /usr/share/wordlists/dirb/common.txt -o found_dirs.txt
# Extraer URLs y escanear con Nucleigrep "Status: 200" found_dirs.txt | awk '{print $1}' | nuclei -t /path/to/templates/Mejores Prácticas
Section titled “Mejores Prácticas”1. Preparación del Entorno
Section titled “1. Preparación del Entorno”- ✅ Verificar conectividad al objetivo
- ✅ Preparar wordlists específicas al contexto
- ✅ Configurar herramientas de monitoreo (Wireshark, tcpdump)
- ✅ Establecer baseline del comportamiento normal
2. Durante la Enumeración
Section titled “2. Durante la Enumeración”- ✅ Comenzar con wordlists pequeñas y específicas
- ✅ Incrementar threads gradualmente
- ✅ Monitorear logs del objetivo si es posible
- ✅ Documentar hallazgos interesantes inmediatamente
3. Post-Enumeración
Section titled “3. Post-Enumeración”- ✅ Validar manualmente hallazgos importantes
- ✅ Correlacionar resultados con otras herramientas
- ✅ Priorizar objetivos por impacto potencial
- ✅ Preparar lista de pruebas manuales
4. Consideraciones de Seguridad
Section titled “4. Consideraciones de Seguridad”- ✅ Obtener autorización explícita antes de enumerar
- ✅ Respetar rate limits para evitar DoS accidental
- ✅ Documentar todas las actividades realizadas
- ✅ Reportar hallazgos críticos inmediatamente
Casos de Uso Específicos
Section titled “Casos de Uso Específicos”1. Auditoria de Aplicación Web
Section titled “1. Auditoria de Aplicación Web”# Fase 1: Enumeración básicagobuster dir -u https://app.example.com -w /usr/share/wordlists/dirb/common.txt -s "200,204,301,302,403"
# Fase 2: Búsqueda de archivos administrativosgobuster dir -u https://app.example.com -w /usr/share/seclists/Discovery/Web-Content/admin-panels.txt
# Fase 3: Archivos de configuracióngobuster dir -u https://app.example.com -w /usr/share/seclists/Discovery/Web-Content/web-all.txt -x config,conf,cfg,xml,properties2. Reconocimiento de Infraestructura
Section titled “2. Reconocimiento de Infraestructura”# Subdominios principalesgobuster dns -d example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -i
# Virtual hosts en servidor webgobuster vhost -u https://example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
# Buckets S3 relacionados con la organizacióngobuster s3 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt3. Análisis de API
Section titled “3. Análisis de API”# Enumeración de endpoints de APIgobuster dir -u https://api.example.com/v1 -w /usr/share/seclists/Discovery/Web-Content/api/api-endpoints.txt
# Versiones de APIgobuster fuzz -u "https://api.example.com/vFUZZ/users" -w /usr/share/seclists/Fuzzing/versions.txt
# Recursos específicosgobuster dir -u https://api.example.com/v1 -w /usr/share/seclists/Discovery/Web-Content/api/objects.txt -x json,xmlGobuster es una herramienta esencial en el arsenal de cualquier pentester o investigador de seguridad. Su velocidad, flexibilidad y múltiples modos de operación la convierten en la opción ideal para enumeración activa en diversas fases de una auditoría de seguridad.