# nuclei: escaneo de vulnerabilidades basado en plantillas en un pentest

> Cómo instalar y ejecutar nuclei, ajustar severidad y rate limits, leer su salida JSONL, y cómo Tandera convierte cada match en un finding deduplicado.

`nuclei` envía solicitudes definidas por plantillas YAML y reporta los matches. No es un crawler ni un fuzzer — comprueba condiciones específicas y conocidas: un CVE con una firma fiable, un directorio `.git` expuesto, una credencial por defecto, una cabecera mal configurada. El valor está por completo en el corpus de plantillas, que mantiene la comunidad y es grande.

## Instalación

```bash
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
nuclei -update-templates
```

Las plantillas viven en `~/.local/nuclei-templates` y se actualizan independientemente del binario. Actualízalas antes de cada engagement, no una vez por trimestre.

## Comandos principales

```bash
# escanea una lista de hosts vivos
nuclei -l live.txt -silent

# solo lo que de verdad reportarías
nuclei -l live.txt -severity critical,high,medium -silent

# un conjunto específico de plantillas
nuclei -l live.txt -tags cve,exposure -silent
nuclei -l live.txt -t http/exposures/ -silent

# JSONL para importar
nuclei -l live.txt -severity critical,high -jsonl -o nuclei.jsonl

# sé cortés con producción
nuclei -l live.txt -rate-limit 20 -concurrency 10 -timeout 10
```

## Salida

```json
{"template-id":"git-config","info":{"name":"Git Config Exposure","severity":"medium",
 "classification":{"cve-id":null,"cwe-id":["cwe-200"]}},
 "type":"http","host":"https://example.com","matched-at":"https://example.com/.git/config",
 "timestamp":"2026-08-29T10:04:11Z"}
```

`matched-at` es el campo que importa para el informe — es la URL exacta que reverificas a mano.

## Dónde encaja en Tandera

nuclei se ejecuta en la fase de **active_scan** solo de `recon_web_full`. Se excluye de `recon_web_lite` por diseño: ese flujo tiene un techo de riesgo `NonIntrusive` y nuclei envía payloads reales.

Tandera también incluye un catálogo de findings `nuclei.yaml` (`code/src/tandera-finding-catalog/catalog/nuclei.yaml`) que mapea IDs de plantilla a definiciones canónicas de finding. Ese mapeo es lo que convierte un `git-config` disparado en doce hosts en un único finding deduplicado con doce evidencias, en lugar de doce filas en un informe.

## Uso en un pentest

**Limita la tasa contra producción.** La concurrencia por defecto generará un pico que el SOC del cliente nota. `-rate-limit 20` es una posición de apertura razonable; acuérdala con el cliente de antemano y anótala en la sección de metodología.

**Las plantillas tienen falsos positivos, y la responsabilidad es tuya.** Cada match de nuclei va al informe bajo tu firma, no la del autor de la plantilla. Reverifica todo lo que pretendas reportar — `matched-at` te da la solicitud exacta para reproducir.

**La severidad es la opinión del autor de la plantilla.** Refleja la clase del problema, no el riesgo para este cliente en este host. Reevalúa contra exposición y explotabilidad reales antes de que llegue al entregable.

**No ejecutes el corpus completo por defecto.** Miles de plantillas contra una lista grande de hosts es lento y ruidoso. Empieza con `-tags cve,exposure,misconfig` y amplía deliberadamente.

---

Canonical: https://tandera.io/es/tools/nuclei
This page as markdown: https://tandera.io/es/tools/nuclei.md
Index for agents: https://tandera.io/llms.txt

Every page here is also available as markdown: append `.md` to the path (e.g. `/recon.md`, `/index.md` for this homepage, `/blog/<slug>.md`), or request the canonical path with `Accept: text/markdown`.
