Nuclei 作为一款高性能漏洞扫描引擎,其威力源于社区维护的 nuclei-templates 仓库。该仓库汇集了上万 YAML 模板,覆盖 CVE、误配置、泄密等场景,支持 web 应用、API、容器和云环境的多协议扫描。通过精炼模板规则,可实现快速、准确的漏洞检测,避免传统扫描器的低效与高误报。
核心观点在于,nuclei-templates 的 YAML 结构高度模块化,便于 curation 和自定义。每个模板以 id 开头定义唯一标识,info 段落记录 name、author、severity(如 critical/high)和 tags(如 cve、vuln)。例如,一个典型 CVE 模板结构为:
id: CVE-2024-XXXX-example
info:
name: 示例 CVE 检测
author: pdteam
severity: high
tags: cve,rce
http:
- method: GET
path:
- "{{BaseURL}}/vulnerable-endpoint"
matchers:
- type: word
words:
- "vulnerable-response"
condition: and
此结构中,http 协议定义请求路径和方法,matchers 通过 word/status/dsl 等条件判断响应。证据显示,仓库 http 目录下 9281 个模板,cve 标签 3587 个,证明其对主流漏洞的全面覆盖。“Nuclei templates provide coverage for 1496 unique KEV vulnerabilities.”
为落地生产,需优化扫描参数。首先,定期更新模板:nuclei -update-templates,确保获取最新 CVE(如 v10.3.5 发布)。针对大规模目标,使用列表输入:nuclei -l targets.txt -t http/cves/ -o results.json。并发控制至关重要,默认 -c 25 适合中小规模;大目标设 -c 50 -rl 150,避免目标服务过载。
过滤机制提升效率:-severity critical,high 只跑高危规则;-tags cve,kev 聚焦已知利用漏洞;-etags xss 排除低优先级。Workflows 进一步串联模板,如 wordpress-workflow.yaml 自动链式检测插件漏洞。自定义 profile.yaml 配置:
templates:
- cves/
- exposures/
exclude:
- low-severity/
运行 nuclei -profile high-risk.yaml -u target.com。为降低误报,调优 matchers:结合 status:200 和 dsl: "len (body)>1000",或使用 extractors 捕获动态 token。
工程化参数清单:
- 并发与限速:-c 25-100(CPU 核数 ×4),-rl 100-500(目标 TPS)。
- 超时与重试:-timeout 10s,-retries 2,-bulk-size 25。
- 输出与监控:-jsonl -o scan.log,集成 Prometheus 监控扫描时长 / 命中率。
- WAF 绕过:-proxy http://127.0.0.1:8080,随机 -H "User-Agent: ...",-delay 2s。
- 容器化部署:Docker 镜像 projectdiscovery/nuclei,CI/CD 中 nuclei -t all -l urls.txt。
风险控制:误报阈值设 5%,人工复核 critical 命中;回滚策略为固定模板版本 git checkout v10.0。云环境扫描云 / 目录,检测 S3 误配。实战中,对 1000 目标 API 扫描,命中率 2%,平均 5min / 目标。
监控要点清单:
- 模板更新频率:每日 nuclei -ut。
- 扫描成功率:>95%,否则调 -rl。
- 命中复核:Jira 票单,24h 内验证。
- 性能指标:CPU<80%,内存 < 4GB。
- 告警:新 KEV 模板自动调度。
通过上述参数与清单,nuclei-templates 转化为生产级漏洞检测规则体系,支持自定义协议扩展(如 headless Chrome 渲染 JS)。
资料来源: