6.1 KiB
6.1 KiB
name, description, whenToUse, role, enabled
| name | description | whenToUse | role | enabled |
|---|---|---|---|---|
| nuclei-scan | nuclei 模板化漏洞扫描:13,000+ 模板覆盖 CVE/暴露面/配置缺陷/默认口令,Nday 与 1day 的主力检测手段 | 漏洞发现阶段拿到存活资产清单后,做 Nday/1day 批量检测;或已知组件版本想快速确认是否有现成模板 | vuln-scan | true |
nuclei(模板化漏洞检测)
nuclei 是漏洞发现阶段的主力:一条命令覆盖 CVE、暴露面、错误配置、默认口令、未授权访问。
本机模板库已就位(详见下方路径),不要上网重新找 POC。
本机二进制与模板
| 项 | 值 |
|---|---|
| 二进制 | /usr/bin/nuclei(v3.11.1) |
| 模板库 | ~/.local/nuclei-templates(13,742 个模板) |
| 模板版本 | v10.4.9(更新于 2026-09-18) |
| 配置 | ~/.config/nuclei/config.yaml、.templates-config.json |
模板分布(写报告时按类引用):http/ 11,364(其中 http/cves 4,320、http/misconfiguration 981、
http/vulnerabilities 961、http/exposures 707、http/default-logins 307)、cloud/ 663、file/ 447、
network/ 282、dast/ 251。
更新模板:nuclei -update-templates(频率不超过每周一次;更新后先跑 -tl 确认没坏)。
基本用法
# 1) 单目标快速体检(先看会命中什么,不实际打)
nuclei -u https://target.example.com -severity critical,high,medium -rl 30 -c 15
# 2) 批量:从资产库导出的存活 URL 清单
nuclei -l runs/alive-urls.txt -severity critical,high -rl 50 -c 25 \
-jsonl -o runs/nuclei-$(date +%m%d-%H%M).jsonl
# 3) 指定模板(已知组件版本 → 精确打击,命中率高、噪声小)
nuclei -u http://target:8080 -t http/cves/2021/CVE-2021-44228.yaml
nuclei -u http://target -t http/exposures/ -t http/default-logins/
# 4) 按标签(tags)批量
nuclei -l runs/alive-urls.txt -tags seeyon,weaver,panel,exposure -rl 20
# 5) 只列出会跑的模板(不发包,先评估覆盖面)
nuclei -l runs/alive-urls.txt -tags cve -tl
关键参数(本场景常用)
| 参数 | 作用 | 建议 |
|---|---|---|
-rl |
每秒请求上限 | 互联网侧 30–50;被 WAF 盯上后降到 5 |
-c |
并发模板数 | 15–25,过高会打崩小站 |
-severity |
只跑指定等级 | 演练只关心 critical,high(中低危不得分) |
-tags / -t |
模板筛选 | 有指纹线索时优先用,别全量轰 |
-jsonl -o |
结构化输出 | 必须落 runs/,报告要引用 |
-proxy |
走代理 | 降噪用 cn-proxy-pool;内网目标走 suo5 隧道加 -proxy socks5://127.0.0.1:1080 |
-H |
自定义头 | 带 Cookie/Token 测登录后功能点 |
-duc |
禁用模板更新检查 | 批量跑时省时间 |
-stats -si 30 |
进度输出 | 长任务看进度 |
与知识库的配合(先查再打,禁止重复劳动)
动手前先 redteam_poc_search(按 CVE / 组件 / 版本 / 正文特征)——它一次查两层:本机 POC 知识库 + 本机 nuclei 模板库。
命中就用 redteam_poc_get 取全文或直接 nuclei -t <模板>;两层都没有才上网找,最后才手搓。
验证有效的新模板/EXP 用 redteam_poc_add 回填知识库(带 category + engagement + asset_target + verified + verified_note,脱敏本次靶标信息)。
降噪与自保(重要)
- 默认 ignore 已排除危险标签:
~/.config/nuclei/.nuclei-ignore里默认忽略dos、local、fuzz、bruteforce、txt-service—— 不要为了"打得更全"去掉这些忽略项,DoS 类模板会打死生产系统,直接毁掉演练。 - 先探测后开火:先用
-severity critical,high跑一轮;命中后再对具体命中项深入,不要一上来全量。 - WAF/封禁处理:被拦先降
-rl到 5 并加--delay 1s,换 UA(-H "User-Agent: ..."), 必要时用技能cn-proxy-pool换出口;同一目标累计被封 >3 次立刻放弃(redteam_asset_teststatus=abandoned + blocked=true),转向下一个目标。 - 生产系统避开业务高峰:定时任务、批量任务类模板(如触发同步/重建索引的)先在测试/预发资产上验证。
输出与落库(强制)
跑完立刻落库,不要攒到最后:
- 读
runs/nuclei-*.jsonl,逐条redteam_vuln_add:title(模板名 + 命中点)、severity、cve(模板带的classification.cve-id)、target(带端口)、evidence(命中回显/响应特征/matched-at)、confidence=confirmed(nuclei 命中即为已确认存在于响应层面)、gained(通过它能拿到什么)、agent=vuln-scan。
- 每条确认漏洞配一条
redteam_http_evidence_add:请求行 + Host + 关键请求头 + 响应摘要(模板的curl-command字段可直接用)。 - 每个关键动作
redteam_chain_add:stage_code=recon或internet,tool写实际命令原文(例如nuclei -l runs/alive-urls.txt -severity critical,high -rl 50 -jsonl -o runs/nuclei-0918.jsonl),result写回显摘要(例如命中 3 条:CVE-2023-xxxx(critical)…)。 - 测完该资产立刻
redteam_asset_test回写:status(testing/tested/no_surface/blocked)、test(追加式结论)、surface(还剩什么可测)。 - 只记能得分的面:与得分无关的信息泄露、版本暴露、CORS/CSRF、SSL 与响应头类问题最多记一行排除结论,不深挖、不重复跑。
常见坑
| 现象 | 原因 | 处理 |
|---|---|---|
| 一条不命中 | 目标不是 HTTP,或模板被 ignore | 加 -tl 看实际跑了哪些模板;确认协议 -t http/ vs network/ |
大量 could not resolve |
URL 清单里有死链 | 先用 pd-httpx 过滤存活:pd-httpx -l all.txt -o alive-urls.txt -silent |
| 命中一堆 low/info | severity 没限 | 演练加 -severity critical,high,medium |
| 目标被打挂 | 并发过高 / 跑了 dos 模板 | 降 -rl/-c;确认 ignore 文件没被动过 |
| 内网目标打不到 | 没走隧道 | 加 -proxy socks5://127.0.0.1:<suo5端口>(技能 suo5-tunnel) |