Nuclei
Nuclei
Parece que este escaner se está convirtiendo en uno de los más usados por los investigadores de ciberseguridad, pentesters y actores maliciosos. Su potencia parece residir en la capacidad de crear plantillas customizadas para identificar vulnerabilidades web de todo tipo. Soporta intregaciones con otras herramientas de ciberseguridad y es altamente configurable. Además es opensource, el repositorio lo puede encontrar en network-scanners. Está escrito en Go.
Nuclei en Docker
Para no complicarme con la instalación decidí probarlo usando Docker. Un cliente me pidio que realizase una auditoría sobre uno de sus sitios web, he cambiado el dominio por sitioescaneado.red
para no exponer información confindencial y me ha dado su permisos para mostrar los pocos resultados que tuve, dado que solo es una aplicación web y la tiene destrás de Cloudflare, que como ya imaginarás, impide la acción de bots si está bien configurado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
root@office ~# docker run projectdiscovery/nuclei:latest -u https://sitioescaneado.red __ _
____ __ _______/ /__ (_)
/ __ \/ / / / ___/ / _ \/ /
/ / / / /_/ / /__/ / __/ /
/_/ /_/\__,_/\___/_/\___/_/ v3.4.7
projectdiscovery.io
[INF] nuclei-templates are not installed, installing...
[INF] Successfully installed nuclei-templates at /root/nuclei-templates
[WRN] Found 1 templates with syntax error (use -validate flag for further examination)
[WRN] Found 9 templates with runtime error (use -validate flag for further examination)
[INF] Current nuclei version: v3.4.7 (latest)
[INF] Current nuclei-templates version: v10.2.7 (latest)
[WRN] Scan results upload to cloud is disabled.
[INF] New templates added in latest release: 55
[INF] Templates loaded for current scan: 8263
[INF] Executing 8060 signed templates from projectdiscovery/nuclei-templates
[WRN] Loading 203 unsigned templates for scan. Use with caution.
[INF] Targets loaded for current scan: 1
[INF] Templates clustered: 1777 (Reduced 1671 Requests)
[dns-waf-detect:cloudflare] [dns] [info] sitioescaneado.red
[INF] Using Interactsh Server: oast.online
[waf-detect:cloudflare] [http] [info] https://sitioescaneado.red
[tls-version] [ssl] [info] sitioescaneado.red:443 ["tls13"]
[robots-txt] [http] [info] https://sitioescaneado.red/robots.txt
[form-detection] [http] [info] https://sitioescaneado.red/Identity/Account/Login?ReturnUrl=%2F
[robots-txt-endpoint] [http] [info] https://sitioescaneado.red/robots.txt
[xss-deprecated-header] [http] [info] https://sitioescaneado.red ["1; mode=block"]
[tech-detect:bootstrap] [http] [info] https://sitioescaneado.red/Identity/Account/Login?ReturnUrl=%2F
[tech-detect:cloudflare] [http] [info] https://sitioescaneado.red/Identity/Account/Login?ReturnUrl=%2F
[tech-detect:cloudflare] [http] [info] https://sitioescaneado.red
[rdap-whois:registrationDate] [http] [info] https://rdap.identitydigital.services/rdap/domain/sitioescaneado.red ["2025-07-03T23:32:20.831Z"]
[rdap-whois:lastChangeDate] [http] [info] https://rdap.identitydigital.services/rdap/domain/sitioescaneado.red ["2025-07-31T09:38:51.757Z"]
[rdap-whois:expirationDate] [http] [info] https://rdap.identitydigital.services/rdap/domain/sitioescaneado.red ["2026-07-03T23:32:20.831Z"]
[rdap-whois:nameServers] [http] [info] https://rdap.identitydigital.services/rdap/domain/sitioescaneado.red ["rita.ns.cloudflare.com","rodney.ns.cloudflare.com"]
[rdap-whois:secureDNS] [http] [info] https://rdap.identitydigital.services/rdap/domain/sitioescaneado.red ["false"]
[rdap-whois:status] [http] [info] https://rdap.identitydigital.services/rdap/domain/sitioescaneado.red ["client transfer prohibited"]
[caa-fingerprint] [dns] [info] sitioescaneado.red
[nameserver-fingerprint] [dns] [info] sitioescaneado.red ["rita.ns.cloudflare.com.","rodney.ns.cloudflare.com."]
[http-missing-security-headers:cross-origin-resource-policy] [http] [info] https://sitioescaneado.red/Identity/Account/Login?ReturnUrl=%2F
[http-missing-security-headers:permissions-policy] [http] [info] https://sitioescaneado.red/Identity/Account/Login?ReturnUrl=%2F
[http-missing-security-headers:x-permitted-cross-domain-policies] [http] [info] https://sitioescaneado.red/Identity/Account/Login?ReturnUrl=%2F
[http-missing-security-headers:clear-site-data] [http] [info] https://sitioescaneado.red/Identity/Account/Login?ReturnUrl=%2F
[http-missing-security-headers:cross-origin-embedder-policy] [http] [info] https://sitioescaneado.red/Identity/Account/Login?ReturnUrl=%2F
[http-missing-security-headers:cross-origin-opener-policy] [http] [info] https://sitioescaneado.red/Identity/Account/Login?ReturnUrl=%2F
[ssl-issuer] [ssl] [info] sitioescaneado.red:443 ["Google Trust Services"]
[ssl-dns-names] [ssl] [info] sitioescaneado.red:443 ["sitioescaneado.red","*.sitioescaneado.red"]
[wildcard-tls] [ssl] [info] sitioescaneado.red:443 ["CN: sitioescaneado.red","SAN: [sitioescaneado.red *.sitioescaneado.red]"]
[INF] Scan completed in 7m. 27 matches found.
Podemos usar nuclei epecificando un Template, esto es casi mandatorio por dos motivos principalmente, uno para no generar demasiado ruido y dos para optimizar la búsqueda de vulnerabilidades.
1
2
3
docker run projectdiscovery/nuclei:latest -timeout 5 \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)AppleWebKit/537.36 (KHTML, >
-rl 5 --proxy http://192.168.2.13:8118 -t cves -v -u htps://sitioescaneado.red
Como casi cualquier herramienta que realiza peticiones a terceros tenemos opciones para limitar el escaneo y optimizarlo
Algunos flags básicos de optimización:
- -rl 20 Número peticiones por segundo
- -timeout 5 Por defecto es 10
- -c 5 Número de hilos/threads
- -H ‘User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36’ Cabeceras/Headers En este caso el user agent.
- t Usar un template
- tags Filtro basado en el campo de etiquetas disponible en la plantilla
Nuclei Templates Top 10 statistics
TAG | COUNT | AUTHOR | COUNT | DIRECTORY | COUNT | SEVERITY | COUNT | TYPE | COUNT |
---|---|---|---|---|---|---|---|---|---|
cve | 3288 | dhiyaneshdk | 1882 | http | 8967 | info | 4190 | file | 435 |
panel | 1342 | daffainfo | 868 | cloud | 657 | high | 2446 | dns | 26 |
xss | 1257 | princechaddha | 854 | file | 435 | medium | 2379 | ||
wordpress | 1181 | dwisiswant0 | 806 | dast | 255 | critical | 1425 | ||
exposure | 1107 | ritikchaddha | 649 | workflows | 202 | low | 318 | ||
wp-plugin | 1032 | pussycat0x | 532 | code | 198 | unknown | 56 | ||
osint | 841 | pikpikcu | 352 | network | 145 | ||||
tech | 803 | pdteam | 310 | javascript | 71 | ||||
rce | 786 | pdresearch | 269 | ssl | 38 | ||||
lfi | 777 | iamnoooob | 257 | dns | 23 |
En esta tabla tienes las estadísticas de los templates más utilizados
Conclusiones
Hay una versión pro y otra Enterprise, supongo que de pago que prometen más integraciones, Webhooks, más velocidad, etc. Muchos de los reportes que me ha proporcionado, no difieren mucho de los que puede proporciona el escaner de Zap u otras herramientas automáticas. Las herramientas automáticas pueden ser un punto de inicio para escarbar pero soy de los que opina que no puedes dejar el trabajo automatizado y confiar que todo sea perfecto. Especialmente en cuestiones como:
- Falsos positivos -> Te hará perder tiempo, la vulnerabilidad parece presente, pero en realidad tras realizar las acciones pertinentes se revelea como negativo.
- Falsos negativos -> Podría significar una falla grave en la seguridad además obviamente de la detección. Una vulnerabilidad Zero-Day se clasifica dentro de esta categoría.
Una herramienta que se puede considerar top para la edad que tiene este software, pero siempre hay que pensar que es una herramienta que puede descubrir cosas que el auditor haya pasado por alto pero no para hacer la auditoría. Para tener resultados adecuados creo que es mejor crear una plantilla dirigida a la web que se quiera auditar.