system onlinepath: /guias/hacking/escaneo-de-vulnerabilidades-con-nuclei/mode: knowledge_baselocal:
Hacking ético · Nivel intermedio

Escaneo de vulnerabilidades con Nuclei

Nuclei no sabe nada por sí mismo: todo lo que detecta está escrito en una plantilla de texto que podés leer, corregir y escribir vos. Eso es su mayor virtud y también el punto donde más se lo usa mal.

12 min de lectura▣ Actualizada el ◇ Por Underc0de
Respuesta rápida

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 severidadinfo, 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
  1. 01Qué es y qué no es
  2. 02El modelo de plantillas
  3. 03Instalar y actualizar
  4. 04Los primeros escaneos
  5. 05Leer una plantilla
  6. 06Ritmo y volumen
  7. 07Verificar los hallazgos
  8. 08Errores frecuentes
  9. 09Preguntas frecuentes
  10. 10Fuentes

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

Cómo funciona el modelo de plantillas de Nuclei y qué significa cada parte de una plantilla YAML. A la izquierda, el flujo de un escaneo: se le entrega una lista de objetivos que sale de un descubrimiento previo, se selecciona un subconjunto de plantillas por ruta, por etiqueta, por severidad o por identificador, el motor envía lo que cada plantilla indica, compara la respuesta con los emparejadores que la plantilla define y reporta solo las coincidencias. El binario no lleva ninguna lógica de detección propia: solo sabe ejecutar plantillas. En el centro, la anatomía de una plantilla. El identificador, que es único y se usa para seleccionarla. El bloque de información con el nombre legible, la autoría, la severidad y las etiquetas, más la referencia al aviso original y con frecuencia el identificador de CVE. Y el bloque de protocolo, que define qué se envía —el método, la ruta, los encabezados— y los emparejadores que deciden si hubo coincidencia: por código de estado, por palabras presentes en el cuerpo, por expresión regular o por combinaciones de esas condiciones. A la derecha, las cinco severidades declarables, de info a critical, y la advertencia de que la severidad la escribe quien redactó la plantilla y describe la clase de fallo en general, no el riesgo en tu sistema concreto: un mismo hallazgo puede ser crítico en un servidor expuesto a internet e irrelevante en un entorno de pruebas aislado. Al pie, la regla que ordena todo: la plantilla dice qué se comprobó, y por eso un hallazgo se lee abriendo su plantilla antes de escribirlo en un informe.
El motor solo ejecuta plantillas. Toda la lógica de detección está en archivos de texto que podés leer.

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 severidad no es tu riesgo

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

bash
# 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 -ut

Que 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

bash
# 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.jsonl

El 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.

yaml
# 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: or

Leí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:

Banderas de control de ritmo en Nuclei y sus valores por omisión
BanderaQué controlaPor omisión
-rlPeticiones por segundo como máximo150
-cPlantillas ejecutadas en paralelo25
-bsObjetivos analizados en paralelo por plantilla25
bash
# 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.6

Ciento 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.

  1. 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.
  2. Reproducirlo a manoLa misma petición desde un proxy de intercepción o desde la línea de comandos, mirando la respuesta completa.
  3. 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.
  4. 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.
  5. 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

  1. Underc0de, foro. Sección Bugs y Exploits. Discusiones de la comunidad sobre detección y verificación de fallos publicados.
  2. 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

  1. ProjectDiscovery. Nuclei overview. La descripción oficial: un escáner rápido basado en plantillas YAML para aplicaciones, infraestructura, plataformas de nube y redes.
  2. ProjectDiscovery. Running Nuclei. La referencia de banderas de la que salen todas las opciones citadas, con sus valores por omisión.
  3. ProjectDiscovery. nuclei-templates. El repositorio oficial de plantillas mantenido por la comunidad.
  4. ProjectDiscovery. Templates: introduction. La estructura de una plantilla y sus campos.
  5. MITRE. CVE. El catálogo de vulnerabilidades públicas al que se refieren muchas plantillas por identificador.