| name | nuclei-scan |
| description | 用于对授权目标执行 Nuclei 模板检查并整理结果。适合已有 URL、主机列表、技术栈线索或 CVE 线索时使用。重点指导模板选择、速率控制、JSONL 输出、结果复核和后续验证。 |
Nuclei 模板扫描
这份技能提供 Nuclei 的模板选择、影响控制和结果复核知识。Nuclei 适合快速生成候选线索,不应替代对目标场景和证据的判断。
目标
使用 Nuclei 对授权目标进行模板化检查,发现:
- 暴露项。
- 错误配置。
- 弱口令或默认凭据线索。
- 已知 CVE 线索。
- 技术栈相关风险。
- 需要进一步人工验证的问题。
适用输入
- URL 列表。
- 主机列表。
web-surface-mapping 生成的 discovered_urls.txt。
asset-discovery 生成的 Web 服务。
- 指定技术栈,例如 Jenkins、Grafana、Spring、WordPress。
- 指定 CVE。
开始前先判断
确认:
- 目标是否授权。
- 是否允许默认凭据检查。
- 是否允许 intrusive 模板。
- 是否需要排除 DoS、fuzz、bruteforce、file-upload 等模板。
- 请求速率和并发限制。
- 是否需要 Header、Cookie、代理。
数据新鲜度和下载量策略
当前镜像已经内置常用模板、规则、缓存或数据库。默认先使用内置资源,不要每次任务都在线更新。
临时更新前,先按下面标准判断是否划算:
| 预计新增下载量 | 默认策略 |
|---|
| 0–20 MB | 可以直接更新,适合增量更新或小规则集 |
| 20–50 MB | 通常可以更新,但要确认任务确实需要较新数据 |
| 50–100 MB | 谨慎更新;只有近期漏洞、近期 PoC 或用户要求最新结果时才做 |
| >100 MB | 默认不更新;除非用户明确要求,并且这个任务强依赖最新数据 |
| 无法估算大小 | 默认不更新,先使用镜像内置资源 |
同时考虑耗时:
- 预计 1–2 分钟内完成:可以接受。
- 预计超过几分钟:默认不做,除非用户明确要求。
- 需要拉取大型仓库、完整漏洞库、语言生态数据库或框架更新:默认不在任务中临时执行。
更新失败时不要阻塞主流程,直接回退到镜像内置资源,并在结果里说明“使用的是内置数据,可能不是最新”。
如果工具支持 dry-run、增量更新或只更新索引,优先使用这种方式。不要为了普通任务下载大型字典、完整框架或未知来源的 PoC 仓库。
临时更新建议
Nuclei 模板更新频率较高,而且通常是增量更新。遇到下面情况可以考虑临时更新:
- 用户明确要求“用最新模板”。
- 目标涉及最近公开的 CVE。
- 需要覆盖最近几天或几周新增的模板。
- 当前内置模板明显缺少目标 CVE。
推荐先设定时间上限,避免更新拖慢任务:
timeout 120 nuclei -update-templates -silent
如果更新成功,继续使用默认模板目录:
nuclei -l nuclei/input/targets.txt \
-t /root/nuclei-templates \
-severity medium,high,critical \
-jsonl \
-rate-limit 20 \
-o nuclei/raw/nuclei_after_update.jsonl
如果更新超时或失败,回退到内置模板:
nuclei -l nuclei/input/targets.txt \
-t /root/nuclei-templates \
-jsonl \
-o nuclei/raw/nuclei_builtin_templates.jsonl
不要为了普通常规扫描每次都更新模板。
常见使用路径
下面几种路径可独立使用,也可按证据逐步收窄。已知技术栈或 CVE 时,通常直接进行定向检查比全模板扫描更有价值。
准备目标和模板来源
mkdir -p nuclei/{input,raw,clean,final,notes}
准备目标:
cp web/final/discovered_urls.txt nuclei/input/targets.txt
检查模板目录:
test -d /root/nuclei-templates || test -d /opt/security-resources/nuclei-templates
从低影响模板开始建立线索
默认先跑常见低影响类别,便于发现暴露项和错误配置:
nuclei -l nuclei/input/targets.txt \
-t /root/nuclei-templates/http/exposures/ \
-t /root/nuclei-templates/http/misconfiguration/ \
-severity low,medium,high,critical \
-jsonl \
-rate-limit 30 \
-c 10 \
-o nuclei/raw/nuclei_low_impact.jsonl
按技术栈聚焦
如果已知技术栈,按标签或目录筛选:
nuclei -l nuclei/input/targets.txt \
-t /root/nuclei-templates \
-tags cve,exposure,misconfig \
-severity medium,high,critical \
-jsonl \
-rate-limit 20 \
-c 8 \
-o nuclei/raw/nuclei_focused.jsonl
对 CVE 做定向检查
如果用户给出 CVE:
nuclei -l nuclei/input/targets.txt \
-t /root/nuclei-templates \
-id CVE-YYYY-NNNN \
-jsonl \
-rate-limit 10 \
-o nuclei/raw/nuclei_cve.jsonl
如果 -id 没有命中模板,搜索本地模板:
grep -R "CVE-YYYY-NNNN" /root/nuclei-templates | head -20
扩大模板范围时控制影响
如果需要全模板扫描,先排除明显高影响标签:
nuclei -l nuclei/input/targets.txt \
-t /root/nuclei-templates \
-exclude-tags dos,fuzz,intrusive,bruteforce,file-upload \
-severity low,medium,high,critical \
-jsonl \
-rate-limit 20 \
-c 8 \
-o nuclei/raw/nuclei_safe_full.jsonl
整理和去重候选结果
合并结果:
cat nuclei/raw/*.jsonl 2>/dev/null \
| jq -c '.' \
| sort -u > nuclei/clean/nuclei_all.jsonl
提取摘要:
jq -r '[.info.severity, ."template-id", ."matched-at", .info.name] | @tsv' \
nuclei/clean/nuclei_all.jsonl \
| sort -u > nuclei/final/findings.tsv
按严重程度统计:
jq -r '.info.severity' nuclei/clean/nuclei_all.jsonl \
| sort | uniq -c > nuclei/final/severity_count.txt
为高价值候选准备复核线索
jq -r 'select(.info.severity=="high" or .info.severity=="critical") |
[.info.severity, ."template-id", ."matched-at", .info.name] | @tsv' \
nuclei/clean/nuclei_all.jsonl > nuclei/final/high_critical_review.tsv
工具使用要点
nuclei 基础命令
nuclei -l targets.txt -t /root/nuclei-templates -jsonl -o nuclei.jsonl
常用参数
-l:目标列表。
-u:单个目标。
-t:模板目录或模板文件。
-id:指定模板 ID。
-tags:按标签选择模板。
-exclude-tags:排除标签。
-severity:按严重程度过滤。
-jsonl:结构化输出。
-rate-limit:限制请求速率。
-c:并发数量。
-H:添加 Header。
-proxy:走代理。
携带 Header
nuclei -l targets.txt \
-H "Cookie: session=REDACTED" \
-t /root/nuclei-templates \
-jsonl -o nuclei_auth.jsonl
走代理
nuclei -l targets.txt \
-proxy http://127.0.0.1:8080 \
-t /root/nuclei-templates \
-jsonl -o nuclei_proxy.jsonl
看结果
重点字段:
template-id
info.name
info.severity
matched-at
extracted-results
curl-command
matcher-name
不要只根据 severity 下结论。要看证据是否能复核。
高影响模板及使用前提
以下模板可能造成状态变更、资源消耗、账号锁定或业务动作。使用前应确认它们与当前验证目标相关,并确认授权和影响范围:
- DoS 类模板。
- 暴力破解模板。
- 会写入或删除数据的模板。
- 文件上传类模板。
- 高强度 fuzz 模板。
- 会触发业务动作的模板。
值得保留的证据
- 实际使用的目标范围、模板来源、标签、排除项、速率和认证上下文。
template-id、matched-at、匹配器、提取结果和原始请求响应线索。
- 模板命中的复核状态、可信度和可能的误报原因。
- 因影响控制而未执行的模板类型,以及由此留下的覆盖缺口。
严重度是模板作者提供的初始分类,不等同于目标环境中的实际影响。
判断与复核要点
- 低危和信息类结果不要淹没重点结论。
- 高危结果要给出复核办法。
- Nuclei 命中是线索,不是最终证明。
- 预置模板通常足以完成常规检查;近期漏洞或用户要求最新覆盖时,再评估更新收益。