Tutorial de Nuclei en español: qué es, cómo lanzar escaneos con -t y -severity, mantener los templates al día, escribir tu propio template YAML y encadenarlo con recon (subfinder | httpx | nuclei) para escanear a escala sin ahogarte en falsos positivos.
Gorka El Bochi
Fundador de BBLABS
Respuesta rápida: Nuclei es un escáner de vulnerabilidades basado en plantillas (templates YAML) creado por ProjectDiscovery. En vez de reglas cerradas, ejecuta miles de comprobaciones declarativas que la comunidad mantiene. Lanzas
nuclei -u https://target.com, filtras por-severityy lo encadenas con tu recon para escanear cientos de hosts a la vez.
Nuclei es un motor de escaneo rápido que ejecuta templates: ficheros YAML que describen cómo comprobar algo (una petición, una condición que la respuesta debe cumplir, y una severidad). La gracia es que la lógica de detección vive en datos, no en código: hay miles de templates públicos y puedes escribir los tuyos en minutos.
Encaja al final de un flujo de recon: primero descubres dominios y hosts vivos, luego pasas Nuclei por encima para detectar CVEs conocidos, exposiciones, malas configuraciones y tecnologías. No reemplaza el análisis manual —encuentra lo conocido, no lo novedoso— pero cubre en minutos un terreno que a mano te llevaría días.
Nuclei se instala con Go o desde los binarios de ProjectDiscovery. El primer escaneo es directo:
nuclei -u https://target.com
Contra una lista de hosts (lo habitual en bug bounty):
nuclei -l hosts.txt
Por defecto usa el repositorio oficial de templates. Mantenlo actualizado —salen CVEs nuevos cada semana— con:
nuclei -update-templates
Lanzar todos los templates contra todo genera ruido. Se filtra por severidad y por etiquetas:
-severity: -severity critical,high para ir a lo que importa. Valores: info, low, medium, high, critical.-tags: -tags cve,exposure,misconfig para acotar por categoría.-t: apunta a un directorio o template concreto, ej. -t http/cves/ o -t http/exposures/.-exclude-tags: descarta ruido conocido.Un escaneo enfocado a hallazgos de alto impacto:
nuclei -l hosts.txt -severity high,critical -tags cve,exposure -o resultados.txt
Con -rl (rate limit) y -c (concurrencia) controlas la agresividad. En objetivos sensibles, baja el rate para no saturar.
Aquí está el verdadero poder de Nuclei. Un template es YAML legible. Este comprueba si un fichero .git/config está expuesto:
id: git-config-expuesto
info:
name: Fichero .git/config expuesto
author: tunombre
severity: medium
description: Detecta un repositorio Git accesible públicamente
tags: exposure,git
http:
- method: GET
path:
- "{{BaseURL}}/.git/config"
matchers-condition: and
matchers:
- type: word
words:
- "[core]"
- "repositoryformatversion"
condition: and
- type: status
status:
- 200
Las piezas clave: http.path define la petición ({{BaseURL}} es una variable de Nuclei), y matchers define cuándo se considera un acierto. Aquí exige que la respuesta contenga las dos cadenas y devuelva 200. Con extractors puedes además sacar datos de la respuesta (versiones, tokens, rutas).
Valida siempre tu template antes de usarlo en serio:
nuclei -t mi-template.yaml -u https://target.com -validate
Escribir templates propios es lo que convierte un patrón que descubres a mano en una comprobación que puedes lanzar contra todo tu scope. Si encuentras una mala configuración recurrente en un programa, plantíllala.
El corazón de un template son los matchers (cuándo hay acierto) y los extractors (qué datos sacar). Conocer los tipos te da mucho control:
word: busca cadenas literales en la respuesta. El más común.regex: coincide con expresiones regulares. Para patrones (versiones, formatos de token).status: comprueba el código HTTP.dsl: expresiones lógicas de Nuclei, lo más potente. Puedes combinar condiciones (status_code == 200 && contains(body, "admin")), operar con longitudes, tiempos y cabeceras.Con matchers-condition: and exiges que se cumplan todos; con or, cualquiera. Los extractors (tipo regex o kval) sacan valores de la respuesta —una versión, una ruta, un identificador— y los muestran junto al hallazgo, lo que hace tus reportes mucho más concretos.
Para vulnerabilidades ciegas (sin respuesta directa), Nuclei integra interactsh, su servidor de interacción out-of-band. Un template puede provocar que el objetivo haga una petición DNS o HTTP a un dominio único que Nuclei controla; si esa interacción llega, confirmas un SSRF ciego o una RCE ciega sin ver nada en la respuesta HTTP. Es la misma idea que el Collaborator de Burp.
Más allá de lanzar templates sueltos, Nuclei soporta workflows: ejecutar un template solo si otro ha dado positivo. Ejemplo: detectas primero la tecnología (un CMS concreto) y solo entonces lanzas los templates de CVEs de ese CMS. Esto reduce ruido y tiempo enormemente frente a lanzarlo todo contra todo.
Combinado con notify (otra herramienta de ProjectDiscovery), puedes recibir los hallazgos en tiempo real en Slack, Discord o Telegram mientras el escaneo corre en un servidor. Así montas un pipeline de monitorización continua de tu scope.
La combinación clásica de ProjectDiscovery convierte un dominio en hallazgos con una sola tubería:
subfinder -d target.com -silent | httpx -silent | nuclei -severity high,critical
Qué hace cada pieza:
target.com.Es la espina dorsal de muchos flujos de recon automatizado. Puedes guardar cada etapa en ficheros para reutilizarla y añadir waybackurls o gau para sumar URLs históricas. La lógica de por qué este pipeline funciona la desarrollo en técnicas de recon avanzadas.
Cuando un simple word no basta, el matcher dsl te da condiciones compuestas. Este template detecta una posible fuga de información combinando código, contenido y longitud:
id: posible-debug-expuesto
info:
name: Modo debug o traza expuesta
author: tunombre
severity: high
tags: exposure,debug
http:
- method: GET
path:
- "{{BaseURL}}/?debug=true"
matchers:
- type: dsl
dsl:
- "status_code == 200"
- "contains(body, 'Traceback') || contains(body, 'stack trace')"
- "len(body) > 500"
condition: and
La potencia está en dsl: combinas estado, contenido y tamaño en una sola condición legible. Con extractors podrías además sacar la versión del framework que aparezca en la traza y mostrarla en el hallazgo, lo que hace tu reporte inmediatamente accionable.
Nuclei está pensado para escala, pero hay que calibrarlo. Los flags clave:
-c (concurrencia): cuántos templates corren en paralelo.-rl (rate limit): peticiones por segundo globales. La palanca más importante para no saturar objetivos.-bulk-size: cuántos hosts se procesan a la vez por template.-timeout y -retries: para redes inestables.Contra un scope grande, empieza conservador y sube poco a poco vigilando que no degradas el servicio. Un escaneo bien calibrado te da los mismos hallazgos sin quemar el objetivo ni cantar como un ataque. Guarda siempre la salida (-o o -je para JSON) para procesarla después y priorizar por severidad.
Nuclei es potente, pero mal usado genera reportes basura que queman tu reputación con los programas:
info sin más. Un banner de tecnología no es una vulnerabilidad.Un match de Nuclei es el principio de una investigación, no el reporte final. El valor lo pones tú al confirmar el impacto y escribir la prueba de concepto.
Buena parte del valor de Nuclei no está en el binario, sino en su repositorio comunitario de templates. Miles de comprobaciones mantenidas por investigadores de todo el mundo, actualizadas casi a diario conforme salen CVEs y técnicas nuevas. Cuando se publica un fallo grave en un producto popular, en horas suele haber un template para detectarlo, y con nuclei -update-templates ya lo tienes. Esa velocidad de la comunidad es lo que convierte a Nuclei en una herramienta de monitorización continua: no solo escaneas una vez, sino que revisas tu scope cada vez que aparece algo nuevo. Y si escribes un template útil, contribuirlo de vuelta al repositorio ayuda a todos y construye tu reputación en el ecosistema.
¿Nuclei sustituye a un pentester?
No. Detecta lo conocido (CVEs, exposiciones, malas configuraciones) a gran escala, pero no encuentra vulnerabilidades novedosas ni lógica de negocio. Es un acelerador de la fase de detección, no un sustituto del análisis humano.
¿Puedo lanzar Nuclei a cualquier web?
No. Solo a objetivos autorizados: tus sistemas o programas de bug bounty en scope. Escanear terceros sin permiso es ilegal, y un pipeline mal apuntado puede tocar hosts fuera de scope.
¿Cada cuánto actualizo los templates?
Antes de cada campaña seria. Salen CVEs nuevos constantemente y el repositorio se mueve rápido. Un nuclei -update-templates antes de escanear es rutina.
¿Por qué me salen tantos hallazgos info?
Porque muchos templates son informativos (banners, tecnologías). No son vulnerabilidades. Filtra con -severity high,critical para centrarte en lo que importa y evitar reportar ruido.
Nuclei escala mucho, y con la escala llega la responsabilidad. Escanea solo lo que esté en scope, controla el volumen de tráfico y nunca lances comprobaciones intrusivas contra infraestructura para la que no tienes permiso. Un pipeline subfinder | httpx | nuclei mal apuntado puede tocar hosts fuera de scope sin que te des cuenta: filtra tu lista de hosts antes de escanear.
Nuclei brilla en la fase de detección masiva de lo conocido: CVEs, exposiciones, malas configuraciones. Lo manual —lógica de negocio, IDOR, cadenas complejas— sigue siendo tuyo. Domínalo como una pieza más dentro de una metodología completa, no como el todo.
Para entrenar la parte que ninguna herramienta automatiza —entender la vulnerabilidad y explotarla— practica con labs de casos reales y estudia la teoría en Academy. Nuclei te dice dónde mirar; saber qué hacer cuando llegas ahí es lo que se paga.
hunters entrenando
labs de reportes reales
completaciones
en bounties practicados
Crea tu cuenta gratis y practica sobre labs basados en reportes reales que pagaron miles de euros. La Academy es gratis para siempre.
Sin tarjeta · Academy gratis · cancela cuando quieras
Todo lo que necesitas para montar un entorno profesional de bug bounty: desde la elección del sistema operativo hasta la automatización de reconocimiento.
Lleva tu fase de reconocimiento al siguiente nivel con técnicas avanzadas de enumeración de subdominios, análisis de archivos JavaScript, GitHub dorking y automatización.
Tutorial de Burp Suite en español desde cero: qué es, instalación y configuración del proxy (127.0.0.1:8080 + certificado CA), Proxy/Intercept, Repeater, Intruder, Decoder, extensiones útiles, Community vs Pro y un flujo real de caza.