Cómo funciona una plantilla YAML
Toda la inteligencia de Nuclei vive en las plantillas. Entender su estructura le permite leer qué hace una antes de lanzarla, confiar en los hallazgos y, más adelante, escribir las suyas. Una plantilla es un archivo YAML con tres partes: un id, un bloque de información y la comprobación.
Anatomía de una plantilla
Vea una plantilla sencilla que detecta un panel de administración accesible sin credenciales. No ataca nada: pide una ruta y revisa la respuesta.
id: panel-admin-expuesto
info:
name: Panel de administracion accesible
author: secwing
severity: medium
description: Detecta un panel de administracion que responde sin autenticacion.
tags: exposure,panel
http:
- method: GET
path:
- "{{BaseURL}}/admin/login"
matchers-condition: and
matchers:
- type: word
part: body
words:
- "Panel de administracion"
- type: status
status:
- 200El id es único e identifica el hallazgo en la salida. El bloque info describe la plantilla: name legible, author, severity, una description y los tags que la agrupan por familia. El bloque http define la petición: el método, la ruta (donde {{BaseURL}} se reemplaza por el objetivo) y los matchers, las condiciones que, si se cumplen, confirman el hallazgo. Aquí deben cumplirse ambas (matchers-condition: and): que el cuerpo contenga un texto y que el código sea 200.
Matchers y extractors
Los matchers son el corazón de la detección. Los más comunes comparan el código de estado (status), buscan palabras en la respuesta (word), aplican una expresión regular (regex) o revisan el tamaño. Un extractor, además, saca un dato concreto de la respuesta (una versión, un token) y lo muestra junto al hallazgo, útil para el triaje.
Como la plantilla solo describe una petición y una comparación, es fácil de auditar: usted puede leerla y saber exactamente qué va a hacer contra su servidor.
Severidades
El campo severity clasifica la gravedad del hallazgo. Son cinco niveles y conviene conocerlos porque luego sirven para filtrar y priorizar.
| Severidad | Qué suele significar |
|---|---|
info | Dato informativo: tecnología detectada, cabecera ausente |
low | Problema menor, poco aprovechable por sí solo |
medium | Falla o exposición que merece atención |
high | Riesgo serio, a corregir pronto |
critical | Crítico: suele permitir comprometer el sistema |
Las plantillas de la comunidad
El repositorio oficial nuclei-templates reúne miles de plantillas mantenidas por ProjectDiscovery y por la comunidad, organizadas en carpetas por tipo: cves para vulnerabilidades con CVE asignado, exposures para datos o paneles expuestos, misconfiguration, technologies y más. Cada CVE nuevo relevante suele tener su plantilla a los pocos días, y por eso mantener el repositorio al día es parte del trabajo.