This script automates a web security reconnaissance workflow for a target domain. It combines subdomain enumeration, DNS resolution, HTTP probing, endpoint discovery (historical and crawler-based), JavaScript discovery and analysis, endpoint extraction from JavaScript, and Nuclei scanning.
The objective is to generate a structured dataset of assets and prioritized endpoints for manual security testing or controlled automated analysis.
Designed for:
- Security audits (maximum coverage)
- Bug bounty engagements (low noise / high signal)
At startup, the script prompts for an execution mode.
- Broad reconnaissance scope
- Extended Nuclei template coverage
- Optional passive or aggressive scanning profile
- Includes scanning across all validated endpoints
- Reduced scanning surface
- Focus on high-value targets
- Minimizes unnecessary traffic
- Skips full endpoint-wide Nuclei scans by design
The following tools must be installed and accessible in PATH:
- subfinder --- Subdomain enumeration (ProjectDiscovery)
- dnsx --- DNS resolution (ProjectDiscovery)
- httpx --- HTTP probing and metadata extraction (ProjectDiscovery)
- gau --- Historical URL collection
- katana --- Web crawler (ProjectDiscovery)
- uro --- URL normalization and cleanup
- anew --- Incremental deduplication
- gf --- Pattern-based filtering (XSS, SQLi, SSRF, etc.)
- jq --- JSON processor
- nuclei --- Template-based vulnerability scanner
- pipx --- Executes LinkFinder directly from Git
- timeout --- Execution timeout control (GNU coreutils)
LinkFinder is executed dynamically via:
git+https://github.com/GerbenJavado/LinkFinder.git
Nuclei templates must exist in:
$HOME/nuclei-templates
or
/usr/share/nuclei-templates
If templates are missing:
nuclei -update-templates
The script creates a timestamped directory:
recon_<domain>{=html}_YYYYMMDD_HHMMSS/
Directory layout:
subdomains/ → subdomain discovery and HTTP classification
endpoints/ → discovered endpoints (crawler + historical + JS)
js-files/ → JavaScript discovery and validation
gf-output/ → endpoints filtered by vulnerability pattern
live-params/ → validated parameterized URLs
nuclei-output/ → Nuclei scan results
meta/ → metadata and JSON outputs
REPORT.txt → final summary report
Uses subfinder to enumerate subdomains.
Resolves domains using dnsx.
httpx identifies active HTTP services and collects metadata.
Tracked status codes: 200, 201, 301, 302, 401, 403, 405, 500
Hosts are grouped by HTTP response code: - Normal hosts (2xx / 3xx) - Access‑restricted hosts (401 / 403 / 405)
GAU collects historical URLs.
Katana performs active crawling with JavaScript parsing enabled.
Both datasets are merged into a unified endpoint list.
JavaScript files are extracted from multiple sources and validated using httpx.
Each JavaScript file is analyzed using LinkFinder to extract hidden endpoints. Results are normalized, validated, and merged into the global endpoint dataset.
Endpoints are filtered using patterns such as: xss, sqli, ssti, ssrf, lfi, rce, idor, redirect, debug, interestingparams, upload-fields, json, api, cors.
Candidate URLs are validated using httpx.
Runs Nuclei against: - Live JavaScript files - Validated parameter endpoints
Severity levels: low, medium, high, critical
In audit mode, all validated endpoints are scanned with Nuclei. Bug bounty mode intentionally skips this step.
REPORT.txt includes:
- Template inventory
- Asset counts
- Endpoint statistics
- JavaScript analysis results
- Parameter validation metrics
- Nuclei output references
- The workflow operates without authentication by default.
- Results depend on target behavior, rate limiting, and historical data availability.
- Execution must remain within authorized scope.
- Designed as a reconnaissance and prioritization pipeline.
Este script automatiza un flujo de reconocimiento de seguridad web para un dominio objetivo. Combina enumeración de subdominios, resolución DNS, análisis HTTP, descubrimiento de endpoints (históricos y mediante crawling), descubrimiento y análisis de archivos JavaScript, extracción de endpoints desde JavaScript y escaneo con Nuclei.
El objetivo es generar un conjunto estructurado de activos y endpoints priorizados para pruebas manuales de seguridad o análisis automatizado controlado.
Diseñado para:
- Auditorías de seguridad (máxima cobertura)
- Programas de bug bounty (mínimo ruido / alta señal)
Al iniciar, el script solicita el modo de ejecución.
- Reconocimiento más amplio
- Mayor cobertura de templates de Nuclei
- Perfil pasivo o agresivo configurable
- Incluye escaneo sobre todos los endpoints validados
- Superficie de escaneo reducida
- Enfoque en objetivos de alto valor
- Minimiza tráfico innecesario
- Omite el escaneo completo de todos los endpoints por diseño
Las siguientes herramientas deben estar instaladas y disponibles en PATH:
- subfinder --- Enumeración de subdominios (ProjectDiscovery)
- dnsx --- Resolución DNS (ProjectDiscovery)
- httpx --- Verificación HTTP y extracción de metadatos (ProjectDiscovery)
- gau --- Recolección histórica de URLs
- katana --- Crawler web (ProjectDiscovery)
- uro --- Normalización y limpieza de URLs
- anew --- Deduplicación incremental
- gf --- Filtrado por patrones (XSS, SQLi, SSRF, etc.)
- jq --- Procesador JSON
- nuclei --- Escáner basado en templates
- pipx --- Ejecuta LinkFinder directamente desde Git
- timeout --- Control de tiempo de ejecución
LinkFinder se ejecuta dinámicamente desde:
git+https://github.com/GerbenJavado/LinkFinder.git
Las plantillas de Nuclei deben existir en:
$HOME/nuclei-templates
o
/usr/share/nuclei-templates
Si no existen:
nuclei -update-templates
El script crea un directorio con timestamp:
recon_<dominio>{=html}_YYYYMMDD_HHMMSS/
Estructura:
subdomains/ → descubrimiento de subdominios y clasificación HTTP
endpoints/ → endpoints descubiertos (crawler + histórico + JS)
js-files/ → descubrimiento y validación de JavaScript
gf-output/ → endpoints filtrados por patrón de vulnerabilidad
live-params/ → URLs con parámetros validadas
nuclei-output/ → resultados de Nuclei
meta/ → metadatos y salidas JSON
REPORT.txt → reporte resumen final
Se utiliza subfinder para enumerar subdominios.
dnsx valida los dominios resolubles.
httpx detecta servicios HTTP activos y recopila metadatos.
Códigos monitorizados: 200, 201, 301, 302, 401, 403, 405, 500
Los hosts se agrupan por código HTTP: - Hosts normales (2xx / 3xx) - Hosts restringidos (401 / 403 / 405)
GAU recopila URLs históricas.
Katana realiza crawling activo con análisis de JavaScript.
Ambos resultados se fusionan en una lista unificada.
Los archivos JS se extraen desde múltiples fuentes y se validan con httpx.
Cada archivo JS se analiza con LinkFinder para descubrir endpoints ocultos. Los resultados se normalizan, validan y se integran en el dataset global.
Los endpoints se filtran usando patrones como: xss, sqli, ssti, ssrf, lfi, rce, idor, redirect, debug, interestingparams, upload-fields, json, api, cors.
Las URLs candidatas se validan usando httpx.
Se ejecuta Nuclei sobre: - Archivos JavaScript vivos - Endpoints con parámetros validados
Severidades: low, medium, high, critical
En modo auditoría se escanean todos los endpoints validados. El modo bug bounty omite este paso intencionadamente.
REPORT.txt incluye:
- Inventario de templates
- Conteo de activos
- Estadísticas de endpoints
- Resultados del análisis JS
- Métricas de validación de parámetros
- Referencias de resultados Nuclei
- El flujo funciona sin autenticación por defecto.
- Los resultados dependen del comportamiento del objetivo y limitaciones de red.
- Debe ejecutarse únicamente dentro de un alcance autorizado.
- Diseñado como pipeline de reconocimiento y priorización, no como auditor automático completo.