Nuclei: Vulnerability Scanner Template-Based ad Alta Velocità

Nuclei: Vulnerability Scanner Template-Based ad Alta Velocità
- Pubblicato il 2026-02-20
- Tempo di lettura: 6 min
Introduzione #
Nuclei ha cambiato il modo in cui i penetration tester fanno vulnerability scanning. Invece di database chiusi e signature proprietarie, Nuclei usa template YAML scritti dalla community — oltre 8.000 template attivi che coprono CVE, misconfiguration, default credential, exposed panel e molto altro. Ogni template è leggibile, modificabile e condivisibile.
Il tool, sviluppato da ProjectDiscovery, è scritto in Go ed è veloce: scansiona centinaia di host in parallelo con consumo minimo di risorse. A differenza di Nikto che lavora con un database monolitico, Nuclei ti permette di scegliere esattamente cosa cercare — dal singolo CVE alla scansione completa di un perimetro.
Nella kill chain opera nella fase di Vulnerability Assessment (MITRE ATT&CK T1595). L’articolo copre installazione, template management, scansione operativa e creazione di template custom.
1️⃣ Setup e Installazione #
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latestAlternativa con binary release:
sudo apt install nucleiVerifica e download template:
nuclei -version
nuclei -update-templatesOutput:
Nuclei Engine Version: v3.3.7
Template Count: 8742I template sono scaricati in ~/.local/nuclei-templates/.
Requisiti:
- Go 1.21+ (per installazione da sorgente)
- ~500MB di spazio per i template
- Connettività HTTP/HTTPS verso i target
2️⃣ Uso Base #
Scansione completa di un target:
nuclei -u http://10.10.10.50Output:
[2025-01-20 15:00:00] [apache-detect] [http] [info] http://10.10.10.50 [Apache/2.4.52]
[2025-01-20 15:00:01] [missing-x-frame-options] [http] [info] http://10.10.10.50
[2025-01-20 15:00:02] [phpmyadmin-panel] [http] [medium] http://10.10.10.50/phpmyadmin/
[2025-01-20 15:00:03] [CVE-2021-41773] [http] [critical] http://10.10.10.50
[2025-01-20 15:00:04] [git-config] [http] [medium] http://10.10.10.50/.git/configParametri fondamentali:
-u URL→ target singolo-l file→ lista di target-t template→ template specifico o directory-severity critical,high→ filtra per severità-tags cve,rce→ filtra per tag-o output.txt→ salva risultati-rate-limit N→ richieste al secondo-c N→ template concorrenti
Scansione con filtro severità:
nuclei -u http://10.10.10.50 -severity critical,high -o critical_findings.txt3️⃣ Tecniche Operative #
Scansione per categoria specifica #
Solo CVE:
nuclei -u http://10.10.10.50 -tags cveSolo misconfiguration:
nuclei -u http://10.10.10.50 -tags misconfigSolo default login:
nuclei -u http://10.10.10.50 -tags default-loginScansione su lista di target #
Dopo una fase di recon con Subfinder o Amass:
cat subdomains.txt | httpx -silent | nuclei -severity critical,high,medium -o vuln_report.txtPipeline: lista subdomain → filtra quelli attivi con httpx → scansiona con Nuclei.
Template specifico per CVE #
Hai letto di un CVE recente e vuoi verificare se il target è vulnerabile:
nuclei -u http://10.10.10.50 -t cves/2024/CVE-2024-XXXXX.yamlScansione con header custom #
Per target con autenticazione o header specifici:
nuclei -u http://10.10.10.50 -H "Authorization: Bearer eyJ..." -H "X-Custom: value"Output JSON per parsing automatico #
nuclei -u http://10.10.10.50 -json -o results.jsonIl JSON include severity, matched template, extracted data e URL esatto.
4️⃣ Tecniche Avanzate #
Creazione di template custom #
Un template Nuclei è un file YAML con questa struttura base:
id: custom-admin-panel
info:
name: Custom Admin Panel Detection
severity: medium
tags: panel,admin
http:
- method: GET
path:
- "{{BaseURL}}/admin/"
- "{{BaseURL}}/administrator/"
- "{{BaseURL}}/manage/"
matchers:
- type: word
words:
- "Login"
- "Admin Panel"
condition: or
- type: status
status:
- 200Salvalo come custom-admin.yaml e lancialo:
nuclei -u http://target -t custom-admin.yamlWorkflow — Scansioni condizionali #
I workflow eseguono template in sequenza condizionale:
id: wordpress-workflow
info:
name: WordPress Full Assessment
workflows:
- template: technologies/wordpress-detect.yaml
subtemplates:
- template: vulnerabilities/wordpress/
- template: default-logins/wordpress/Se WordPress viene rilevato, lancia automaticamente tutti i template di vulnerabilità e default login correlati.
Rate limiting per stealth #
nuclei -l targets.txt -rate-limit 10 -bulk-size 5 -c 2-rate-limit 10→ max 10 richieste/secondo-bulk-size 5→ 5 host alla volta-c 2→ 2 template concorrenti
Riduce il rumore a livelli accettabili per engagement dove la detection conta.
Interazione out-of-band (OOB) #
Nuclei supporta interazioni OOB per rilevare SSRF, blind XXE e blind RCE:
nuclei -u http://target -tags oast -interactsh-url https://your-interactsh-server.comIl tool monitora le callback DNS/HTTP verso il server interactsh per confermare vulnerabilità blind.
5️⃣ Scenari Pratici di Pentest #
Scenario 1: Perimeter scan enterprise — Quick win su centinaia di host #
cat all_subdomains.txt | httpx -silent -o live_hosts.txt
nuclei -l live_hosts.txt -severity critical,high -tags cve -o perimeter_vulns.txtOutput atteso:
[CVE-2023-22515] [http] [critical] https://confluence.corp.com
[CVE-2024-21887] [http] [critical] https://vpn.corp.com
[git-config] [http] [medium] https://dev.corp.com/.git/configCosa fare se fallisce:
- Zero risultati → Target ben patchati. Espandi: rimuovi filtro severity e cerca anche
infoelow. - Timeout frequenti → Rete lenta o target rate-limiting. Riduci concorrenza:
-c 5 -rate-limit 20.
Timeline: 100 host con template critical/high: 5-10 minuti.
Scenario 2: Web application specifica — Scan approfondito #
nuclei -u https://app.corp.local -tags cve,misconfig,exposure,default-login -severity critical,high,medium -H "Cookie: session=abc123" -o app_scan.txtOutput atteso: finding specifici all’applicazione autenticata.
Cosa fare se fallisce:
- Cookie scaduto → Rinnova la sessione e aggiorna il cookie.
- SSL error → Aggiungi
-insecureper ignorare certificati non validi.
Timeline: 3-5 minuti per applicazione singola.
Scenario 3: Ricerca CVE specifica su range IP #
Verifica CVE-2021-44228 (Log4Shell) su tutta la rete:
nuclei -l all_web_targets.txt -t cves/2021/CVE-2021-44228.yaml -o log4shell_results.txtCosa fare se fallisce:
- Template non trovato →
nuclei -update-templatesper aggiornare. - Falsi negativi → Log4Shell richiede OOB detection. Usa
-interactsh-urlper callback monitoring.
Timeline: 500 host con singolo template: 2-3 minuti.
6️⃣ Toolchain Integration #
Nuclei è il centro della pipeline di vulnerability assessment automatizzato.
Flusso operativo:
Amass/Subfinder (subdomain enum) → Httpx (probe alive) → Nuclei (vuln scan) → Manual exploitation
Passaggio dati completo:
subfinder -d target.com -silent | httpx -silent | nuclei -severity critical,high -o findings.txtUna pipeline in una riga: subdomain discovery → HTTP probe → vulnerability scan.
| Criterio | Nuclei | Nikto | Nessus | Burp Scanner |
|---|---|---|---|---|
| Template community | 8.000+ | No | No | No |
| Custom template | Sì (YAML) | Limitato | No | Sì (estensioni) |
| Velocità | ★★★★★ | ★★★☆☆ | ★★★★☆ | ★★★☆☆ |
| Multi-target | Nativo | Manuale | Nativo | Limitato |
| Stealth | ★★★☆☆ | ★☆☆☆☆ | ★☆☆☆☆ | ★★★☆☆ |
| Prezzo | Free | Free | $$$ | $$$ |
| CI/CD integration | Ottima | Limitata | Limitata | Limitata |
7️⃣ Attack Chain Completa #
Obiettivo: Da subdomain enumeration a RCE sfruttando un CVE trovato con Nuclei.
Fase 1 — Subdomain Discovery (10 min)
subfinder -d corp.com -silent | httpx -silent -o live_targets.txt342 host live trovati.
Fase 2 — Vulnerability Scan con Nuclei (8 min)
nuclei -l live_targets.txt -severity critical,high -o vulns.txtTrova CVE-2023-22515 su confluence.corp.com.
Fase 3 — Exploitation (15 min)
Exploit pubblico per Confluence RCE. Ottieni shell come confluence user.
Fase 4 — Post-exploitation (30 min)
Enumerazione Active Directory. Credenziali nel config di Confluence. Lateral movement verso il domain controller. Per la persistenza, configura una scheduled task o un cron job.
Timeline totale: ~63 minuti.
8️⃣ Detection & Evasion #
Cosa monitora il Blue Team #
- Volume di richieste verso path noti (CVE check path)
- User-Agent
Nuclei(default) - Richieste verso endpoint diagnostici (
.git/config,/actuator/env,/server-status)
Log rilevanti #
- WAF → richieste verso path di CVE noti
- Web server access log → burst di richieste 404
- IDS → signature per scanner noti
Tecniche di evasion #
- User-Agent personalizzato:
-H "User-Agent: Mozilla/5.0 ...". Rimuove il fingerprint Nuclei. - Rate limiting aggressivo:
-rate-limit 5 -c 1. Lento ma quasi invisibile. - Template selection chirurgica: invece di lanciare tutti i template, seleziona solo quelli rilevanti con
-tagse-severity. Meno richieste = meno rumore.
Cleanup #
Nuclei non lascia artefatti sul target.
9️⃣ Performance & Scaling #
Single target: scansione completa con tutti i template: 3-5 minuti.
Multi-target (100 host): con default settings: 10-15 minuti. Con rate limiting: 30-60 minuti.
Scaling estremo (1000+ host): Nuclei gestisce senza problemi liste da migliaia di URL. Consuma ~100-200MB di RAM.
Ottimizzazione: usa -tags e -severity per ridurre il numero di template eseguiti. 8.000 template su 1.000 host = milioni di richieste. Filtra.
🔟 Tabelle Tecniche #
Command Reference #
| Flag | Descrizione |
|---|---|
-u URL | Target singolo |
-l file | Lista target |
-t template | Template specifico |
-tags tag1,tag2 | Filtra per tag |
-severity s1,s2 | Filtra per severity |
-rate-limit N | Max richieste/sec |
-c N | Template concorrenti |
-bulk-size N | Host concorrenti |
-H "header" | Header custom |
-json | Output JSON |
-o file | Output file |
-insecure | Ignora SSL errors |
-update-templates | Aggiorna template |
-interactsh-url | Server OOB |
Tag più utili #
| Tag | Tipo di check | Uso |
|---|---|---|
cve | Vulnerabilità note | Perimeter scan |
misconfig | Misconfiguration | Infrastructure audit |
default-login | Credenziali default | Quick win |
exposure | Information disclosure | Data leak check |
panel | Admin panel | Web app enum |
tech | Technology detect | Fingerprinting |
oast | Out-of-band | Blind vuln detection |
11️⃣ Troubleshooting #
| Problema | Causa | Fix |
|---|---|---|
| Template non trovati | Non aggiornati | nuclei -update-templates |
| SSL errors | Certificato non valido | -insecure |
| Rate limiting dal target | Troppe richieste | -rate-limit 10 -c 2 |
| Falsi positivi | Template troppo permissivo | Verifica manualmente il finding |
context deadline exceeded | Timeout | -timeout 15 |
| Pochi risultati | Template severity troppo restrittiva | Rimuovi filtro -severity |
12️⃣ FAQ #
Nuclei sostituisce Nikto? Non completamente. Nikto ha check specifici per configurazioni web server che Nuclei non copre. Usali in parallelo.
Posso creare template per vulnerabilità custom? Sì. Template YAML con matcher basati su parole, regex, status code e header. La documentazione ufficiale ha esempi per ogni tipo.
Nuclei funziona su protocolli non-HTTP? Sì. Supporta DNS, TCP, SSL/TLS, file e WHOIS come protocolli aggiuntivi nei template.
Come aggiorno solo i template senza aggiornare il tool?
nuclei -update-templates aggiorna solo i template. Per il tool: nuclei -update.
Nuclei è adatto per CI/CD? Sì, è uno dei migliori tool per security scanning automatizzato. L’output JSON è facilmente parsabile e integrabile in pipeline GitHub Actions, GitLab CI o Jenkins.
13️⃣ Cheat Sheet #
| Azione | Comando |
|---|---|
| Scan base | nuclei -u http://target |
| Solo critical/high | nuclei -u target -severity critical,high |
| Solo CVE | nuclei -u target -tags cve |
| Lista target | nuclei -l targets.txt |
| Template specifico | nuclei -u target -t cves/2024/CVE-XXXX.yaml |
| Output JSON | nuclei -u target -json -o results.json |
| Rate limit stealth | nuclei -u target -rate-limit 5 -c 1 |
| Pipeline completa | subfinder -d domain | httpx -silent | nuclei -severity high |
| Aggiorna template | nuclei -update-templates |
| Header custom | nuclei -u target -H "Cookie: session=abc" |
Disclaimer: Nuclei è un tool open source per security assessment. L’uso su target senza autorizzazione esplicita è illegale. Repository: github.com/projectdiscovery/nuclei.
Vuoi supportare HackIta? Visita hackita.it/supporto per donazioni. Per penetration test professionali e formazione 1:1, scopri hackita.it/servizi.







