Descubrimiento de contenido
Una web muestra solo lo que quiere que veas; el descubrimiento de contenido encuentra lo que no enlaza: directorios ocultos, paneles de administración, ficheros de backup, endpoints de API, versiones antiguas, .git/, archivos de configuración. Es enumeración activa sobre HTTP: pruebas rutas de un diccionario contra el servidor y observas qué responde. Lo que no está enlazado suele ser lo más interesante.
El principio
Sección titulada «El principio»Pides rutas candidatas (/admin, /backup.zip, /api/v1) y clasificas por el código de respuesta: 200 (existe), 301/302 (redirige), 403 (existe pero prohibido — ¡interesante!), 404 (no existe). El 403 es oro: confirma que el recurso está ahí.
Fuzzing de directorios y ficheros
Sección titulada «Fuzzing de directorios y ficheros»# ffuf (rápido, flexible)ffuf -w wordlist.txt -u https://target/FUZZ -mc 200,301,302,403 -o out.json# feroxbuster (recursivo por defecto)feroxbuster -u https://target -w wordlist.txt -x php,bak,zip,old,txt# gobustergobuster dir -u https://target -w wordlist.txt -x php,html,bakFiltra ruido por tamaño/palabras cuando el 404 devuelve 200 (soft-404): -fs <tamaño> / -fw <palabras>.
Extensiones y ficheros jugosos
Sección titulada «Extensiones y ficheros jugosos»# backups y fuentes.bak .old .zip .tar.gz .sql .swp index.php~ config.php.bak# control de versiones y configs expuestos/.git/ /.svn/ /.env /.htaccess /web.config /wp-config.php.bak# descubrir .git/ y reconstruir código (ver fund-git)curl -s https://target/.git/HEADWordlists (la clave del resultado)
Sección titulada «Wordlists (la clave del resultado)»SecLists: Discovery/Web-Content/ (raft-*, directory-list-*, common.txt)# específicas por tecnología (si hiciste fingerprint)Discovery/Web-Content/CMS/ (wordpress, joomla...)# generadas del propio sitiocewl https://target -w custom.txt # palabras de la web como diccionarioEndpoints y rutas desde el propio sitio
Sección titulada «Endpoints y rutas desde el propio sitio»No todo es fuerza bruta; el sitio ya revela rutas:
# extraer endpoints del JavaScript (SPA, APIs)katana -u https://target -jc # crawling + JS# linkfinder / gau / waymore: URLs históricas y de JSgau target.com ; waymore -i target.com # (ver recon-wayback)# robots.txt y sitemap.xml revelan rutas que "no querían" indexarcurl -s https://target/robots.txt https://target/sitemap.xml# documentación expuesta/swagger.json /openapi.json /api-docs /graphql# versiones y rutas de API por fuzzing con wordlist de APIffuf -w api-wordlist.txt -u https://target/api/FUZZPara la defensa
Sección titulada «Para la defensa»Reducir hallazgos: no dejar backups/configs en el webroot, bloquear acceso a .git//.env/.svn, eliminar paneles y versiones antiguas, devolver 404 consistentes (no filtrar existencia por 403/tiempos), y vigilar logs por fuzzing (ráfagas de 404/403). WAF con rate-limit frena el bruteforce masivo.
Checklist de prueba
Sección titulada «Checklist de prueba»- Fuzzing de directorios con buena wordlist (SecLists)
- Fuzzing de ficheros por extensión (bak, zip, sql, env, old)
- Filtrar soft-404 por tamaño/palabras
-
.git/,.env,.svn, configs expuestos - robots.txt y sitemap.xml revisados
- Endpoints extraídos del JS (katana/linkfinder)
- URLs históricas (gau/waymore)
- Documentación y rutas de API (swagger/graphql)