Nuclei es un escáner de vulnerabilidades que, según su documentación oficial, sondea «aplicaciones modernas, infraestructura, plataformas de nube y redes». Su particularidad es el modelo: no lleva la lógica de detección dentro del programa, sino en plantillas escritas en YAML que cualquiera puede leer, corregir o escribir. El programa solo sabe ejecutar plantillas. La consecuencia práctica es doble: cuando se publica un fallo nuevo, la comunidad suele tener una plantilla en días; y cuando Nuclei reporta algo, podés abrir el archivo que lo produjo y ver exactamente qué comprobó. Los escaneos se acotan por severidad —info, low, medium, high, critical— y por etiquetas, y el ritmo se controla con -rl, que por omisión son 150 peticiones por segundo. Lo que no cambia: cada hallazgo se verifica a mano antes de entrar a un informe.
Ver índice de contenidos
Qué es y qué no es
Nuclei es una herramienta de línea de comandos de ProjectDiscovery. Recibe uno o muchos objetivos, ejecuta contra ellos un conjunto de plantillas y reporta las que coincidieron. Soporta varios protocolos —HTTP, DNS, TCP y comprobaciones sobre archivos, entre otros—, así que no está limitado a la web.
Lo importante es de dónde viene su conocimiento. Un escáner tradicional lleva sus comprobaciones compiladas adentro: si querés saber qué hizo exactamente, no podés. Nuclei invierte eso:
El programa no sabe nada
Toda la inteligencia está en las plantillas, que son archivos de texto en YAML. El binario solo sabe leerlas, enviar lo que dicen y comparar la respuesta con lo que esperan. Por eso podés auditar la detección misma: cuando reporta un hallazgo, abrís la plantilla y ves qué comprobó de verdad.
Y lo que no es. Nuclei no descubre servicios: hay que darle los objetivos, y el inventario sale de Nmap. No encuentra fallos desconocidos: solo detecta lo que alguien escribió en una plantilla, así que un problema de lógica propio de tu aplicación le resulta invisible. Y no reemplaza el análisis manual con un proxy como Burp Suite, donde salen los hallazgos de autorización.
El modelo de plantillas
Cada plantilla describe un vector concreto y declara su propia severidad. Los valores posibles, según la documentación de la herramienta, son info, low, medium, high, critical y unknown. Ese campo es el que se usa para acotar un escaneo, y conviene entender qué significa:
La escribió quien redactó la plantilla y describe la clase de fallo en general, no lo que implica en tu sistema. Un mismo hallazgo puede ser crítico en un servidor expuesto a internet e irrelevante en un entorno de pruebas aislado sin datos. La severidad sirve para ordenar por dónde empezar a mirar, no para redactar la conclusión.
El repositorio oficial de plantillas lo mantiene la comunidad y la documentación de la herramienta menciona más de 6.500 plantillas aportadas. Ese volumen es la virtud del modelo —cobertura amplia y rápida de actualizar— y también su límite: la calidad no es uniforme, y de ahí la necesidad de leer la plantilla que produjo cada aviso.
Instalar y actualizar
# Se distribuye como binario único. Descargarlo desde el repositorio oficial
# y verificar la suma de comprobación antes de ejecutarlo.
# Comprobar que está instalado.
nuclei -version
# Actualizar el motor y las plantillas. Esto es rutina, no un paso opcional:
# plantillas viejas no detectan lo publicado esta semana.
nuclei -up
nuclei -utQue Nuclei sea un binario único lo hace cómodo de mover entre máquinas, y también lo convierte en un buen recordatorio de seguridad de la cadena de suministro: descargarlo del repositorio oficial y verificar la suma de comprobación no es paranoia, es el mismo control que le pedirías a cualquier dependencia.
Los primeros escaneos
# Sobre un objetivo propio o con autorización escrita que lo incluya.
# Un objetivo, con todas las plantillas. Ruidoso: sirve para ver cómo funciona.
nuclei -u https://laboratorio.local
# Una lista de objetivos, uno por línea. La lista sale del descubrimiento previo.
nuclei -l objetivos.txt
# Acotar por severidad: la forma más útil de empezar a leer resultados.
nuclei -l objetivos.txt -severity critical,high
# Acotar por etiqueta, cuando ya sabés qué tecnología hay del otro lado.
nuclei -u https://laboratorio.local -tags cve,exposure
# Una plantilla concreta, o un directorio de plantillas propias.
nuclei -u https://laboratorio.local -t plantillas-propias/
# Guardar la salida. El formato JSONL es el que se procesa después.
nuclei -l objetivos.txt -severity critical,high -jle hallazgos.jsonlEl patrón que funciona en un trabajo real no es lanzar todo contra todo. Es encadenar: el descubrimiento con Nmap da el inventario, ese inventario se convierte en la lista de objetivos, y el escaneo se acota a las severidades altas para tener algo legible con lo que empezar. Después se amplía.
Leer una plantilla
Esta es la habilidad que separa usar Nuclei de entenderlo. Una plantilla tiene tres partes: el identificador, la información y el protocolo con sus emparejadores.
# Ejemplo didáctico: detecta un archivo de configuración expuesto.
# Es la forma de una plantilla real, escrita acá para explicarla.
id: configuracion-expuesta
info:
name: Archivo de configuración accesible sin autenticación
author: equipo-guias
severity: high
tags: exposure,config
description: |
Comprueba si un archivo de configuración responde sin autenticación.
reference:
- https://owasp.org/Top10/
http:
- method: GET
path:
- "{{BaseURL}}/.env"
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
part: body
words:
- "DB_PASSWORD"
- "APP_KEY"
condition: orLeída así, la plantilla dice exactamente qué hace: pide una ruta, y solo reporta si el código es 200 y además el cuerpo contiene alguna de esas palabras. Esa doble condición es lo que la vuelve confiable. Una plantilla que solo comprobara el código de estado daría un falso positivo en cualquier sitio que responda 200 a todo.
Qué mirar cuando dudás de un hallazgo
Los emparejadores. Si la única condición es el código de estado, desconfiá. Si además exige palabras concretas en el cuerpo o una expresión regular específica, el aviso tiene mucho más fundamento. Y si la plantilla trae una referencia al aviso original, ese enlace es por dónde sigue la verificación.
Ritmo y volumen
Nuclei es rápido, y eso es un riesgo operativo. Con miles de plantillas y varios objetivos, el volumen de peticiones sube muy rápido. Las banderas que lo controlan, con sus valores por omisión según la documentación oficial:
| Bandera | Qué controla | Por omisión |
|---|---|---|
-rl | Peticiones por segundo como máximo | 150 |
-c | Plantillas ejecutadas en paralelo | 25 |
-bs | Objetivos analizados en paralelo por plantilla | 25 |
# Bajar el ritmo cuando el objetivo es un servicio en producción
# o cuando hay equipos frágiles detrás. Se acuerda en el alcance.
nuclei -l objetivos.txt -rl 20 -c 10
# Excluir explícitamente lo que quedó fuera del alcance autorizado.
nuclei -l objetivos.txt -eh 10.0.0.5,10.0.0.6Ciento cincuenta peticiones por segundo contra un servicio en producción es suficiente para degradarlo. La velocidad por omisión está pensada para ir rápido, no para pasar desapercibido ni para ser amable con el objetivo: el ritmo se decide, no se hereda.
Verificar los hallazgos
La parte que más se saltea, y la que determina si el informe sirve. Un escáner produce candidatos; un hallazgo es un candidato verificado.
- Abrir la plantilla que produjo el avisoQué envió y qué condición cumplió la respuesta. Si el emparejador es solo el código de estado, la probabilidad de falso positivo es alta.
- Reproducirlo a manoLa misma petición desde un proxy de intercepción o desde la línea de comandos, mirando la respuesta completa.
- Confirmar que la versión importaMuchas plantillas comparan versiones anunciadas. Una versión parcheada por la distribución puede seguir anunciando el número viejo: eso es un falso positivo clásico.
- Traducir la severidad a tu contextoQué sistema es, qué datos tiene, quién llega a él. La severidad de la plantilla es un punto de partida.
- Escribir el hallazgo con su evidenciaPetición, respuesta, plantilla que lo detectó y pasos para reproducirlo. Sin eso, quien tenga que corregirlo no puede empezar.
Errores frecuentes
- Escanear objetivos que no están en el alcance. Un archivo de objetivos mal armado convierte un trabajo autorizado en algo que no lo es.
- Dejar el ritmo por omisión contra producción. Ciento cincuenta peticiones por segundo degradan servicios reales.
- No actualizar las plantillas. Un escaneo con plantillas viejas no detecta lo publicado esta semana.
- Reportar la salida cruda. Doscientos avisos sin verificar no son un informe: son trabajo delegado a quien lo recibe.
- Tomar la severidad de la plantilla como el riesgo real. Describe la clase de fallo, no tu sistema.
- Creer que cubre todo. Solo detecta lo que alguien escribió antes en una plantilla.
- Ejecutar plantillas de terceros sin leerlas. Son código que se ejecuta contra un objetivo: se revisan como cualquier dependencia.
Preguntas frecuentes
¿Qué diferencia a Nuclei de un escáner de vulnerabilidades tradicional?
El lugar donde vive la lógica de detección. Un escáner tradicional lleva sus comprobaciones dentro del producto, así que no podés inspeccionar exactamente qué hizo para llegar a un aviso. En Nuclei toda la detección está en plantillas de texto en formato YAML que se leen, se corrigen y se escriben. Eso tiene tres efectos: la cobertura se actualiza muy rápido porque escribir una plantilla es más simple que modificar un producto, cada hallazgo es auditable porque podés abrir el archivo que lo produjo, y podés añadir comprobaciones propias para tu tecnología concreta.
¿Nuclei explota las vulnerabilidades que encuentra?
Depende de la plantilla, y por eso conviene leerlas. Muchas solo comprueban indicios: una versión anunciada, un archivo accesible, un encabezado presente. Otras envían una petición que efectivamente provoca el comportamiento defectuoso para confirmarlo, y eso ya es intervenir sobre el sistema, no solo observarlo. La diferencia importa legalmente y también operativamente, porque una comprobación activa puede dejar rastros o efectos secundarios. La regla práctica es leer la plantilla antes de ejecutarla contra algo que no sea un laboratorio propio.
¿Cuántas plantillas hay y quién las escribe?
El repositorio oficial lo mantiene ProjectDiscovery junto con la comunidad, y la documentación de la herramienta menciona más de 6.500 plantillas aportadas por la comunidad global de seguridad. Ese volumen es la mayor virtud del modelo, porque un fallo recién publicado suele tener plantilla en pocos días. También es su límite: al ser aportes de mucha gente distinta, la calidad no es uniforme y hay plantillas cuyos emparejadores producen falsos positivos con facilidad. De ahí que leer la plantilla que originó un aviso sea parte del trabajo y no un lujo.
¿Puedo escribir mis propias plantillas?
Sí, y es donde la herramienta rinde más en un contexto propio. Una plantilla es un archivo YAML con un identificador, un bloque de información —nombre, autoría, severidad, etiquetas y referencias— y un bloque de protocolo que define qué se envía y qué emparejadores deciden si hubo coincidencia. Con eso podés comprobar cosas específicas de tu organización: un panel interno que nunca debería responder desde afuera, un encabezado que debería estar siempre presente, una ruta heredada que se suponía retirada. Y esas plantillas se pueden ejecutar de forma periódica como comprobación de regresión.
¿Reemplaza a un proxy de intercepción?
No, resuelven problemas distintos y se usan juntos. Nuclei cubre en pocos minutos una cantidad enorme de comprobaciones conocidas sobre muchos objetivos, algo imposible de hacer a mano. Un proxy de intercepción sirve para lo contrario: entender una aplicación concreta y probar cosas que ninguna plantilla podría anticipar, porque dependen de qué recurso pertenece a quién o de cómo debería comportarse un flujo de negocio. Las fallas de control de acceso, que encabezan el OWASP Top 10, son el ejemplo canónico de lo que se encuentra a mano y no con plantillas.
¿Cómo se evita que el escaneo tire el servicio?
Controlando el ritmo de forma explícita, porque los valores por omisión están pensados para ir rápido. La bandera de límite de peticiones por segundo tiene un valor por omisión de 150, y hay dos más que controlan cuántas plantillas se ejecutan en paralelo y cuántos objetivos se analizan a la vez por plantilla; las tres se bajan cuando el objetivo es un servicio en producción. Además conviene acordar la ventana de tiempo con quien opera el servicio, tener un contacto para avisar si algo se degrada, y excluir de forma explícita las direcciones que quedaron fuera del alcance.
Fuentes
Documentación oficial y material de la comunidad consultados para esta guía. Fecha de consulta: 28 de julio de 2026.
Aportes de la comunidad Underc0de
- Underc0de, foro. Sección Bugs y Exploits. Discusiones de la comunidad sobre detección y verificación de fallos publicados.
- Underc0de, blog. Blog de Underc0de. Cobertura continua de fallos recién publicados: la clase de aviso que se traduce en plantillas nuevas a los pocos días.
Documentación oficial
- ProjectDiscovery. Nuclei overview. La descripción oficial: un escáner rápido basado en plantillas YAML para aplicaciones, infraestructura, plataformas de nube y redes.
- ProjectDiscovery. Running Nuclei. La referencia de banderas de la que salen todas las opciones citadas, con sus valores por omisión.
- ProjectDiscovery. nuclei-templates. El repositorio oficial de plantillas mantenido por la comunidad.
- ProjectDiscovery. Templates: introduction. La estructura de una plantilla y sus campos.
- MITRE. CVE. El catálogo de vulnerabilidades públicas al que se refieren muchas plantillas por identificador.