tools-nuclei
Operate nuclei for template-based vulnerability scanning at scale — severity/tag selection, bulk targets, rate limiting, proxying, JSON output, and safe custom templates. Load when you have live hosts
SKILL.mdskills/tools/tools-nuclei/SKILL.md
GitHubnuclei vulnerability scanning
When it applies
Recon has produced live in-scope hosts (automation-recon-pipeline) and you want fast coverage of
known issues — CVEs, exposed panels, misconfigurations — before spending manual time. Also the
right tool for re-checking a fixed finding across all hosts. For writing a template that codifies
your own finding, load automation-nuclei-templates (that skill is the deep guide; the essentials
are below).
Why it works
nuclei runs declarative YAML templates (9000+ community templates, HTTP/DNS/TCP/SSL/file protocols) against many targets in parallel with matchers on the response. You trade stealth for breadth: it's fast and consistent, and loud.
Method
- Install/update:
apt install nuclei(Kali) orgo install github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest; alwaysnuclei -update-templatesfirst. - Scope the run — never full-template blindly:
nuclei -u https://target.com -severity critical,high # single host, high signal nuclei -u https://target.com -tags cve,exposure # by tag nuclei -l urls.txt -severity critical,high -o results.txt # bulk targets nuclei -u https://target.com -t http/cves/2024/ # one template dir after fingerprinting - Pipe from recon (the standard pipeline):
subfinder -d target.com -silent | httpx -silent | nuclei -severity critical,high -o report.txt - Be a good citizen (and stay under WAF/IDS thresholds):
-rate-limit 10 -bulk-size 5to slow down;-proxy http://127.0.0.1:8080to route through Burp for visibility;-exclude-tags dos,fuzzto skip destructive/noisy checks;-new-templatesfor only-recently-added templates on a re-visit. - Capture machine-readable output for triage:
-json -o results.json. - Custom template essentials (full guide:
automation-nuclei-templates):idinvendor-product-vulnerabilityform;infowith honest severity/tags;http:block with{{BaseURL}}paths; combine matchers withcondition: andand match a signal unique to the vuln (a computed reflection like49from{{7*7}}, a specific error string) — never a bare 200; add anextractorthat pulls the proof. Validate with-validate, then against a known-vulnerable and a known-good host.
Gotchas
- A nuclei hit is a candidate, not a finding — templates false-positive on version banners and
lookalike strings. Manually reproduce every hit (
reporting-triage-validation) before it goes in notes/findings; this is the #1 way automated scanning burns reporter credibility. - Full-template runs are loud and slow — fingerprint first (
recon-techstack-fingerprinting), then run only relevant tags/dirs. - Rate limiting cuts both ways — too fast gets you WAF-banned (and can breach bug-bounty RoE on
request rates); too slow on a big scope never finishes. Tune
-rate-limit/-bulk-sizeto the RoE. - Windows naming collision — the
httpxcommand on Windows may resolve to the Python httpx library's CLI, not ProjectDiscovery's httpx; verify withhttpx -versionbefore piping. - Keep templates read-only — anything that writes state or can DoS doesn't belong in a mass scan.
Verify success
Each nuclei hit either reproduces manually with a concrete impact (and gets a findings entry) or is recorded as a false positive with the reason. The scan config (severity/tags/rate) is logged so the run is reproducible.
References
ProjectDiscovery docs; nuclei-templates repo. Writing templates: automation-nuclei-templates.
Pipeline context: automation-recon-pipeline.
Portions adapted from reverse-skill by zhaoxuya520, MIT License.