Nuclei 模板化漏洞扫描
Nuclei 是 ProjectDiscovery 的模板化漏洞扫描工具。它的核心思路是把漏洞检测逻辑写成 YAML 模板,再对 URL、主机、IP、OpenAPI、Burp 数据等输入执行扫描。
在 BeeHack 的靶场工作流里,Nuclei 更适合作为“发现线索”的工具:先用 RustScan、Nmap、Katana 收集目标面,再用 Nuclei 对高价值入口做模板检测,最后回到手工验证。
仅在自有资产、靶场环境或明确授权范围内运行 Nuclei。DAST/Fuzz 模板会主动构造请求,比普通信息收集更有侵入性。
安装
Go Install
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
确认版本:
nuclei -version
Homebrew
brew install nuclei
Docker
docker pull projectdiscovery/nuclei:latest
docker run --rm projectdiscovery/nuclei:latest -u https://example.com
二进制安装
从 Nuclei Releases 下载对应系统的压缩包,解压后把 nuclei 放到 PATH 中。
模板更新
首次运行 Nuclei 会自动下载常用社区模板。手动更新模板:
nuclei -update-templates
更新 Nuclei 引擎:
nuclei -update
查看当前模板版本:
nuclei -tv
核心参数速查
| 参数 | 说明 | 示例 |
|---|---|---|
-u, -target | 单个目标 URL 或主机 | -u http://target/ |
-l, -list | 从文件读取目标列表 | -l urls.txt |
-im, -input-mode | 指定输入格式,如 list、burp、openapi | -im burp |
-t, -templates | 指定模板或模板目录 | -t http/cves/ |
-w, -workflows | 指定 workflow | -w workflows/wordpress-workflow.yaml |
-tags | 按模板标签过滤 | -tags cve,lfi |
-severity, -s | 按严重级别过滤 | -severity medium,high,critical |
-exclude-tags, -etags | 排除标签 | -etags dos,fuzz |
-exclude-templates, -et | 排除模板或目录 | -et exposures/ |
-tl | 只列出将运行的模板,不执行扫描 | -tl |
-o, -output | 输出到文件 | -o nuclei.txt |
-j, -jsonl | JSONL 输出 | -j -o nuclei.jsonl |
-json-export | 导出 JSON 文件 | -json-export nuclei.json |
-markdown-export | 导出 Markdown 报告目录 | -markdown-export report/ |
-silent | 只显示发现项 | -silent |
-H, -header | 自定义请求头 | -H "Cookie: PHPSESSID=abc" |
-p, -proxy | 走代理,便于 Burp 抓包 | -p http://127.0.0.1:8080 |
-rl, -rate-limit | 全局每秒请求数限制 | -rl 50 |
-c, -concurrency | 并行执行模板数量 | -c 20 |
-bs, -bulk-size | 每个模板并行处理的主机数量 | -bs 10 |
-dast | 启用 DAST fuzz 模板 | -dast |
-fa, -fuzz-aggression | Fuzz 激进程度 | -fa low |
-headless | 启用需要浏览器的模板 | -headless |
常用扫描模式
1. 单目标扫描
nuclei -u http://192.168.1.108/ -severity medium,high,critical -silent
2. 扫描 URL 列表
nuclei -l urls.txt -severity medium,high,critical -silent -o nuclei_findings.txt
urls.txt 可以来自 Katana、httpx、手工整理,或者靶场记录中的关键入口。
3. 按标签扫描
# 常见 CVE
nuclei -u http://target/ -tags cve -severity high,critical -silent
# LFI 相关模板
nuclei -u http://target/ -tags lfi -severity medium,high,critical -silent
# 暴露面和错误配置
nuclei -u http://target/ -tags exposure,misconfig -silent
4. 指定模板目录
nuclei -u http://target/ -t http/cves/ -t http/exposures/ -silent
先用 -tl 看看会运行哪些模板:
nuclei -u http://target/ -tags cve -severity high,critical -tl
5. JSONL 输出,方便后续处理
nuclei -l urls.txt -severity medium,high,critical -j -o nuclei.jsonl
JSONL 适合后续用脚本筛选、写报告、做搜索索引或导入其他工具。
6. 走 Burp 代理复核请求
nuclei -u http://target/ -severity medium,high,critical -p http://127.0.0.1:8080 -debug
当发现结果可疑时,用代理观察请求和响应,比只看终端输出更可靠。
和 Katana 联动
保存 URL 后扫描
katana -u http://target/ -silent -jc -d 3 -o katana_urls.txt
nuclei -l katana_urls.txt -severity medium,high,critical -silent -o nuclei_findings.txt
管道扫描
katana -u http://target/ -silent -jc -d 3 | nuclei -severity medium,high,critical -silent
参数 URL 的 DAST/Fuzz
katana -u http://target/ -silent -jc -f qurl | nuclei -dast -severity medium,high,critical -silent
-dast 会运行 fuzz 类模板。建议先只对带参数的 URL 执行,并配合 -rl 控制速率:
katana -u http://target/ -silent -jc -f qurl | nuclei -dast -fa low -rl 20 -severity medium,high,critical -silent
误报处理
Nuclei 的发现结果需要复核,尤其是信息泄露、弱口令、反射类漏洞和基于响应文本的模板。
1. 保存原始输出
2. 记录命中的模板 ID、URL、请求方法、关键响应
3. 用 curl / Burp / 浏览器复现
4. 确认是否需要认证、特定 Header、特定参数
5. 把可复现证据写入 walkthrough 或报告
如果模板噪音过多,优先缩小范围:
# 只扫高危 CVE
nuclei -l urls.txt -tags cve -severity high,critical -silent
# 排除低价值标签
nuclei -l urls.txt -etags dos,brute -severity medium,high,critical -silent
# 降速
nuclei -l urls.txt -rl 20 -c 10 -bs 5 -silent
靶场实战速查
| 场景 | 命令 |
|---|---|
| 单 URL 常规扫描 | nuclei -u http://target/ -severity medium,high,critical -silent |
| URL 列表扫描 | nuclei -l urls.txt -severity medium,high,critical -silent -o findings.txt |
| 只跑 LFI 模板 | nuclei -u http://target/ -tags lfi -severity medium,high,critical -silent |
| 查看将运行的模板 | nuclei -tags cve -severity high,critical -tl |
| JSONL 输出 | nuclei -l urls.txt -j -o nuclei.jsonl |
| Katana 管道 | katana -u http://target/ -silent -jc | nuclei -severity medium,high,critical -silent |
| DAST/Fuzz | katana -u http://target/ -silent -jc -f qurl | nuclei -dast -fa low -rl 20 -silent |
| Burp 复核 | nuclei -u http://target/ -p http://127.0.0.1:8080 -debug |
相关知识
- Katana Web 爬虫与端点发现 — 为 Nuclei 提供更多 URL 和参数输入
- Nmap 服务识别与脚本扫描 — 确认服务类型和版本
- Gobuster 目录与子域名枚举 — 发现隐藏路径后再交给 Nuclei 扫描
- Sunset: Solstice 靶机通关记录 — 示例中包含 Katana + Nuclei 发现 LFI 的流程