Nuclei 是一款基于模板驱动的漏洞扫描与验证工具,通过执行社区或自定义的 PoC(模板)对目标发起请求并匹配响应,从而判断漏洞是否真实存在。相比传统漏扫工具,它误报更低、速度更快,适用于 Web、安全测试和自动化扫描场景,是当前红队和漏洞挖掘中的常用工具之一。

1. 快速扫描

1.1 指定目标

命令说明
nuclei -u https://example.com扫描单个目标
nuclei -l targets.txt扫描列表中的多个目标(一行一个)

1.2 选择模板

# 使用官方模板库中的特定目录
nuclei -u https://example.com -t http/cves/ -t exposures/

# 使用所有模板(默认,不指定 -t 时自动加载)
nuclei -u https://example.com

1.3 常用过滤参数

参数说明示例
-tags按标签筛选-tags cve,oast
-etags排除特定标签-etags intrusive
-s按严重等级-s critical,high
-id按模板 ID 精确运行-id CVE-2024-XXXX
-a按作者筛选-a pdteam

1.4 输出与监控

参数说明
-o result.txt保存结果到文件
-silent仅显示发现的漏洞
-jsonlJSON 行格式输出(便于后续处理)
-stats显示实时扫描统计
-si 10每 10 秒刷新统计信息

1.5 速率与并发

参数说明默认值
-rl 50每秒最大请求数150
-c 10并行执行的模板数25
-timeout 15单个请求超时(秒)10

2. POC 检索与查找

2.1 更新模板库

确保本地 POC 库与官方同步,获取最新漏洞检测模板。

nuclei -ut

2.2 列出所有可用模板

nuclei -tl

该命令会列出所有已安装模板的路径和基本信息。

2.3 按关键词搜索 POC

结合 grep 在模板目录中搜索特定关键词(如漏洞名称、CVE 编号、应用名)。

# 搜索包含 "CVE-2023-28432" 的模板
grep -r "CVE-2023-28432" ~/nuclei-templates/

# 搜索包含 "MinIO" 的模板
grep -r -i "minio" ~/nuclei-templates/

2.4 通过 -id-tags 精确定位

# 运行已知 ID 的模板
nuclei -u https://example.com -id CVE-2023-28432

# 运行带特定标签的模板(如 spring4shell)
nuclei -u https://example.com -tags spring4shell

2.5 查看模板元数据(名称、标签、作者等)

使用 -td 参数显示模板内容,快速确认该模板的检测逻辑和适用场景。

# 显示模板内容(YAML 源码)
nuclei -td -id CVE-2023-28432

3. 典型使用场景命令速查

3.1 快速验证单个 CVE

nuclei -u https://example.com -id CVE-2024-12345 -silent

3.2 批量扫描高危漏洞

nuclei -l targets.txt -s critical,high -o critical_high.txt -stats

3.3 仅扫描特定技术的 POC

nuclei -u https://example.com -tags wordpress,php -etags intrusive

3.4 使用代理扫描(避免暴露真实 IP)

nuclei -u https://example.com -p http://127.0.0.1:8080 -silent

3.5 检索并测试某应用的已知漏洞

# 先查找相关模板
grep -r "Apache Tomcat" ~/nuclei-templates/

# 然后运行这些模板(假设标签为 tomcat)
nuclei -u https://example.com -tags tomcat -s high,critical