web-hacking

Nuclei: Vulnerability Scanner Template-Based ad Alta Velocità

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 #

bash
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

Alternativa con binary release:

bash
sudo apt install nuclei

Verifica e download template:

bash
nuclei -version
nuclei -update-templates

Output:

text
Nuclei Engine Version: v3.3.7
Template Count: 8742

I 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:

bash
nuclei -u http://10.10.10.50

Output:

text
[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/config

Parametri 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à:

bash
nuclei -u http://10.10.10.50 -severity critical,high -o critical_findings.txt

3️⃣ Tecniche Operative #

Scansione per categoria specifica #

Solo CVE:

bash
nuclei -u http://10.10.10.50 -tags cve

Solo misconfiguration:

bash
nuclei -u http://10.10.10.50 -tags misconfig

Solo default login:

bash
nuclei -u http://10.10.10.50 -tags default-login

Scansione su lista di target #

Dopo una fase di recon con Subfinder o Amass:

bash
cat subdomains.txt | httpx -silent | nuclei -severity critical,high,medium -o vuln_report.txt

Pipeline: 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:

bash
nuclei -u http://10.10.10.50 -t cves/2024/CVE-2024-XXXXX.yaml

Scansione con header custom #

Per target con autenticazione o header specifici:

bash
nuclei -u http://10.10.10.50 -H "Authorization: Bearer eyJ..." -H "X-Custom: value"

Output JSON per parsing automatico #

bash
nuclei -u http://10.10.10.50 -json -o results.json

Il 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:

yaml
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:
          - 200

Salvalo come custom-admin.yaml e lancialo:

bash
nuclei -u http://target -t custom-admin.yaml

Workflow — Scansioni condizionali #

I workflow eseguono template in sequenza condizionale:

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

bash
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:

bash
nuclei -u http://target -tags oast -interactsh-url https://your-interactsh-server.com

Il 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 #

bash
cat all_subdomains.txt | httpx -silent -o live_hosts.txt
nuclei -l live_hosts.txt -severity critical,high -tags cve -o perimeter_vulns.txt

Output atteso:

text
[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/config

Cosa fare se fallisce:

  • Zero risultati → Target ben patchati. Espandi: rimuovi filtro severity e cerca anche info e low.
  • 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 #

bash
nuclei -u https://app.corp.local -tags cve,misconfig,exposure,default-login -severity critical,high,medium -H "Cookie: session=abc123" -o app_scan.txt

Output atteso: finding specifici all’applicazione autenticata.

Cosa fare se fallisce:

  • Cookie scaduto → Rinnova la sessione e aggiorna il cookie.
  • SSL error → Aggiungi -insecure per 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:

bash
nuclei -l all_web_targets.txt -t cves/2021/CVE-2021-44228.yaml -o log4shell_results.txt

Cosa fare se fallisce:

  • Template non trovato → nuclei -update-templates per aggiornare.
  • Falsi negativi → Log4Shell richiede OOB detection. Usa -interactsh-url per 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:

bash
subfinder -d target.com -silent | httpx -silent | nuclei -severity critical,high -o findings.txt

Una pipeline in una riga: subdomain discovery → HTTP probe → vulnerability scan.

CriterioNucleiNiktoNessusBurp Scanner
Template community8.000+NoNoNo
Custom templateSì (YAML)LimitatoNoSì (estensioni)
Velocità★★★★★★★★☆☆★★★★☆★★★☆☆
Multi-targetNativoManualeNativoLimitato
Stealth★★★☆☆★☆☆☆☆★☆☆☆☆★★★☆☆
PrezzoFreeFree$$$$$$
CI/CD integrationOttimaLimitataLimitataLimitata

7️⃣ Attack Chain Completa #

Obiettivo: Da subdomain enumeration a RCE sfruttando un CVE trovato con Nuclei.

Fase 1 — Subdomain Discovery (10 min)

bash
subfinder -d corp.com -silent | httpx -silent -o live_targets.txt

342 host live trovati.

Fase 2 — Vulnerability Scan con Nuclei (8 min)

bash
nuclei -l live_targets.txt -severity critical,high -o vulns.txt

Trova 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 #

  1. User-Agent personalizzato: -H "User-Agent: Mozilla/5.0 ...". Rimuove il fingerprint Nuclei.
  2. Rate limiting aggressivo: -rate-limit 5 -c 1. Lento ma quasi invisibile.
  3. Template selection chirurgica: invece di lanciare tutti i template, seleziona solo quelli rilevanti con -tags e -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 #

FlagDescrizione
-u URLTarget singolo
-l fileLista target
-t templateTemplate specifico
-tags tag1,tag2Filtra per tag
-severity s1,s2Filtra per severity
-rate-limit NMax richieste/sec
-c NTemplate concorrenti
-bulk-size NHost concorrenti
-H "header"Header custom
-jsonOutput JSON
-o fileOutput file
-insecureIgnora SSL errors
-update-templatesAggiorna template
-interactsh-urlServer OOB

Tag più utili #

TagTipo di checkUso
cveVulnerabilità notePerimeter scan
misconfigMisconfigurationInfrastructure audit
default-loginCredenziali defaultQuick win
exposureInformation disclosureData leak check
panelAdmin panelWeb app enum
techTechnology detectFingerprinting
oastOut-of-bandBlind vuln detection

11️⃣ Troubleshooting #

ProblemaCausaFix
Template non trovatiNon aggiornatinuclei -update-templates
SSL errorsCertificato non valido-insecure
Rate limiting dal targetTroppe richieste-rate-limit 10 -c 2
Falsi positiviTemplate troppo permissivoVerifica manualmente il finding
context deadline exceededTimeout-timeout 15
Pochi risultatiTemplate severity troppo restrittivaRimuovi 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 #

AzioneComando
Scan basenuclei -u http://target
Solo critical/highnuclei -u target -severity critical,high
Solo CVEnuclei -u target -tags cve
Lista targetnuclei -l targets.txt
Template specificonuclei -u target -t cves/2024/CVE-XXXX.yaml
Output JSONnuclei -u target -json -o results.json
Rate limit stealthnuclei -u target -rate-limit 5 -c 1
Pipeline completasubfinder -d domain | httpx -silent | nuclei -severity high
Aggiorna templatenuclei -update-templates
Header customnuclei -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.

#template-scanning

DIVENTA PARTE DELL’ÉLITE DELL’HACKING ETICO.

Accedi a risorse avanzate, lab esclusivi e strategie usate dai veri professionisti della cybersecurity.

Non sono un robot

Iscrivendoti accetti di ricevere la newsletter di HACKITA. Ti puoi disiscrivere in qualsiasi momento.