跳到主要内容

Nuclei 模板化漏洞扫描

Nuclei 是 ProjectDiscovery 的模板化漏洞扫描工具。它的核心思路是把漏洞检测逻辑写成 YAML 模板,再对 URL、主机、IP、OpenAPI、Burp 数据等输入执行扫描。

在 BeeHack 的靶场工作流里,Nuclei 更适合作为“发现线索”的工具:先用 RustScanNmapKatana 收集目标面,再用 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指定输入格式,如 listburpopenapi-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, -jsonlJSONL 输出-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-aggressionFuzz 激进程度-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/Fuzzkatana -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

相关知识