Parte: 4 — Seguridad de aplicaciones web · Fuente: The Web Application Hacker's Handbook / Bug Bounty Bootcamp (Vickie Li) ⏱️ Duración estimada: 100 min · Nivel: Intermedio
Aprender a mapear exhaustivamente una aplicación: descubrir directorios, archivos, endpoints ocultos, parámetros y funciones no enlazadas. Un buen mapeo multiplica la superficie de ataque real y suele ser la diferencia entre encontrar un bug crítico o no encontrar nada.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Spidering pasivo vs. activo | Base del descubrimiento |
| 2 | Content discovery (dirbusting) | Encuentra lo no enlazado |
| 3 | Diccionarios (SecLists) | Calidad de wordlist = calidad de hallazgos |
| 4 | Descubrimiento de parámetros | Inputs ocultos = bugs ocultos |
| 5 | Enumeración de subdominios | Amplía el scope legítimo |
| 6 | Análisis de JavaScript | Los JS revelan rutas de API |
| 7 | robots.txt, sitemap.xml, .git | Fuentes de rutas sensibles |
sudo apt install ffuf gobuster
git clone https://github.com/danielmiessler/SecLists
pipx install arjun
⚠️ Solo contra tu propio laboratorio (Juice Shop / DVWA) o programas con permiso explícito.
ffuf -u http://localhost:3000/FUZZ -w SecLists/Discovery/Web-Content/common.txt -mc 200,301,302,403
robots.txt, sitemap.xml y /ftp (una ruta famosa de Juice Shop)..js con LinkFinder o grep de patrones \/rest\/.arjun -u http://localhost:3000/rest/products/search
FUZZ.php, FUZZ.bak) buscando backups.common.txt vs. directory-list-2.3-medium.txt.-fs) para eliminar respuestas de "not found" personalizadas.403 puede ser más interesante que un 404.Construye un inventario de endpoints de Juice Shop que incluya al menos 5 rutas no descubribles solo navegando (obtenidas por dirbusting, análisis de JS o parámetros ocultos). Criterio de aceptación: cada ruta se acompaña de cómo se descubrió (herramienta + evidencia) y una hipótesis de por qué podría ser vulnerable.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
| Todo devuelve 200 | La app tiene "soft 404"; filtra por tamaño con -fs |
| Escaneo eterno | Diccionario demasiado grande; empieza por common.txt |
| Rate limiting / bloqueo | Baja hilos (-t) y añade delays |
| No aparecen rutas de API | Analiza el JavaScript, no solo el HTML |
| Fuzzear fuera de scope | Limita el target a hosts autorizados |
❓ ¿Qué diccionario uso?
Empieza con common.txt para rapidez; escala a directory-list-2.3-medium si necesitas cobertura. Ajusta al stack (rutas PHP, ASPX, etc.).
❓ ¿Por qué analizar el JavaScript? En SPAs, la mayoría de endpoints de API están referenciados en los bundles JS, no en el HTML navegable.
❓ ¿El content discovery es intrusivo? Genera muchas peticiones y puede disparar alertas o rate limits. Hazlo solo con autorización y controlando la velocidad.