一键导入
subdomain-enumeration
通过被动来源和受控主动 DNS 枚举目标子域名,发现更多授权攻击面入口。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
通过被动来源和受控主动 DNS 枚举目标子域名,发现更多授权攻击面入口。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
使用 agent-browser 在授权范围内执行浏览器交互验证,并在需要视觉判断时调用 pents vision-review 生成结构化视觉复核结果。
检测 API 中的功能级授权破坏(BFLA),验证普通用户是否能通过直接调用管理端点或操纵 HTTP 方法来执行管理员功能。
检测 API 中的对象级授权缺陷(BOLA/IDOR),通过篡改对象标识符越权访问或修改其他用户的数据。
利用 JWT 库接受 alg:none 的漏洞绕过签名验证,伪造任意 Token 实现权限提升。
检测 API 中的批量赋值漏洞,通过在请求体中添加非预期字段修改不应被客户端控制的属性。
检测和绕过 API 速率限制,通过 HTTP 头操纵、路径变体和参数污染绕过节流控制。
| name | subdomain-enumeration |
| description | 通过被动来源和受控主动 DNS 枚举目标子域名,发现更多授权攻击面入口。 |
| category | recon |
| source | xalgorix |
| tags | ["信息收集","子域名","DNS","证书透明"] |
| required_tools | ["subfinder","massdns","dnsx","httpx","subzy"] |
| optional_tools | ["puredns","shuffledns"] |
docs/项目路线/源站线索分级与授权策略.md 分层:历史 DNS、证书、favicon、测绘搜索等只做被动线索记录;Host 绑定验证、源站 IP 直连和小范围端口确认必须单独确认;CDN/WAF 绕过、全端口扫描、网段扫描和 Host 爆破默认禁止。执行前先区分任务类型:
| 类型 | 最低条件 | 默认节奏 |
|---|---|---|
| 被动子域名收集 | 目标根域名 | 无主动请求 |
| 主动 DNS 子域名枚举 | 目标根域名、授权窗口、允许 DNS 并发/速率、字典规模、解析器来源 | 受控批量,不按 HTTP 低频处理 |
| HTTP 存活探测 | 已解析子域名、授权窗口、允许 HTTP 速率 | 低频 |
| 路径/API 发现 | 已确认入口 URL、授权窗口、允许请求速率、字典规模 | 低频 |
| 端口/源站验证 | 实际入口或明确授权 IP、授权窗口、端口范围、速率 | 低频或专项确认 |
工具缺失时先运行:
pents doctor-recon
如果缺少 subfinder、massdns、dnsx、httpx、puredns、shuffledns 或 subzy,必须说明缺失工具、影响步骤、安装建议和可替代方案,不能只写“未执行”。其中 massdns 是默认主动 DNS 核心工具;puredns、shuffledns 和 dnsx 是可选 wrapper/诊断/复核工具,不应因为它们缺失就阻塞 massdns direct 主链路。
第三方工具优先从 tools/third-party/bin/ 查找;PATH 只作为 fallback。dnsx 若只存在于全局 PATH,仍要在记录中说明这是 fallback,不是项目推荐安装位置。
默认使用项目字典层:
dicts/curated/subdomains-main.txtdicts/curated/web-paths-small.txtdicts/curated/params-small.txtdicts/curated/subdomains-main.txt 原样同步自 refer/fuzzDicts/subdomainDicts/main.txt。当前阶段子域名字典优先照搬,不自行发明或过早裁剪;后续再根据实战命中质量分层优化。
refer/fuzzDicts/ 仍是参考库。需要扩大其他类型字典,或从参考库补充专项词表时,必须在执行记录里写清:
弱口令、RCE、SQL、XSS、SSRF、XXE 等 payload 字典不属于默认子域名枚举流程,必须专项授权。
至少使用 2 类被动来源,先尽量不触达目标业务:
subfinder -d <target.com> -silent -o subs_passive.txt
可补充:
记录每个子域名的来源、采集时间和是否去重。
如果 crt.sh、urlscan、Wayback、OTX、搜索引擎等被动来源都没有结果,不要只写“无结果”。按下面清单复盘:
CF-Ray、__cf_bm、cf_clearance、captcha 等 CDN/WAF/反自动化线索。dicts/curated/subdomains-main.txt。输出要求:
遇到 Cloudflare、通配符证书、泛解析或被动来源全空时:
origin-candidate-needs-confirmation;未获确认前不得做 Host 绑定验证、IP 直连或端口确认。满足主动 DNS 枚举条件后,使用同步自 fuzzDicts 主字典的默认子域名字典做受控批量解析。这个步骤不应被描述为“低频 HTTP 探测”,但也不能无限并发或忽略授权窗口。
建议默认:
dicts/curated/subdomains-main.txtai.<target.com>;canary 不命中时停止完整枚举。优先使用 pents active-dns 生成执行计划,不要临场拼完整流程:
uv run --project cli pents active-dns "*.target.com" \
--project <project-name> \
--run <Rxxx-date-purpose> \
--dict dicts/curated/subdomains-main.txt \
--resolvers 1.1.1.1,1.0.0.1,8.8.8.8,8.8.4.4,223.5.5.5,119.29.29.29 \
--canary <known-existing-label-or-fqdn> \
--engine auto \
--save
执行计划或脚本必须包含:
massdns 文件输入完整字典枚举。pents evidence 证据登记命令。工具链选择:
massdns direct,由 tools/recon/active-dns-massdns.ps1 生成候选文件并把文件交给 massdns,不走 stdin pipe。puredns + massdns,只用于人工诊断或复杂 wildcard 场景参考;不要让 Claude Code 默认执行 puredns pipe。shuffledns + massdns,用于 ProjectDiscovery 风格兼容验证。dnsx -l,用于小列表复核、NOERROR/NODATA 补查或参数排查,不作为默认完整字典枚举链路。禁止把 dnsx -wd 当作常规枚举参数。R001 已暴露过该类参数误用会造成 0 命中误判;如果看到 dnsx -wd <domain> 被用于完整字典枚举,必须停止并修正为 pents active-dns 计划或 dnsx -l <fqdn-list> fallback。
massdns:不能执行默认主动 DNS 主链路,应阻塞并建议按 pents doctor-recon 补齐项目本地工具。puredns 或 shuffledns:默认 massdns direct 不受影响,只记录 optional wrapper/fallback 缺失。dnsx:默认 massdns direct 仍可执行;但不能做 dnsx 小列表诊断或 NOERROR/NODATA 补查,应写清复核能力缺失。massdns -o Snl 只输出存在 A/AAAA/CNAME 等记录的结果。NOERROR 但无 A/AAAA/CNAME 的域名不会出现在命中列表里,这是预期行为,不是漏扫。
R003 devnu11 复测中,massdns direct 命中 ai/blog/lk/st 4 个可解析子域;R001 dnsx 额外出现 online.devnu11.cn,原因是该域名为 NOERROR/NODATA 候选。报告对比时必须写成:
massdns hits:可解析入口候选。dnsx NOERROR/NODATA:DNS 存在但无地址记录的候选,不直接作为 Web 入口。如果任务需要捕获 NOERROR/NODATA,不要改回 puredns pipe;应对小列表、已知候选或专项候选文件追加 dnsx 复核,并单独记录其耗时、query 类型和差异。
对被动和主动结果合并去重,再验证解析结果。复核必须记录 A/AAAA/CNAME,不只记录“解析成功”。
sort -u subs_passive.txt subs_active_dns.txt > subs_all.txt
dnsx -silent -l subs_all.txt -a -aaaa -cname -json -o subs_resolved.jsonl
结果分类要求:
| 分类 | 判定 | 处理 |
|---|---|---|
resolved-a | NOERROR 且有 A 记录 | 进入 inventory,后续 HTTP 授权后再探测 |
resolved-aaaa | NOERROR 且有 AAAA 记录 | 进入 inventory,记录 IPv6 线索 |
resolved-cname | NOERROR 且有 CNAME | 记录 CNAME、CDN/云厂商/第三方服务线索 |
nodata | NOERROR 但无 A/AAAA/CNAME | 不当作可访问入口;记录为 DNS 存在但无地址 |
nxdomain | NXDOMAIN | 丢弃或保留为去噪证据 |
wildcard-noise | 随机 NXDOMAIN 与候选结果响应一致 | 不当作真实资产,暂停并复盘 wildcard 策略 |
resolver-error | SERVFAIL、REFUSED、timeout 或 resolver 0 响应 | 剔除异常 resolver 后重试关键步骤 |
去噪要求:
wildcard-noise,不要当作真实资产。HTTP 探测比 DNS 枚举更接近业务系统,必须使用低频节奏:
httpx -l subs_resolved.txt -title -status-code -tech-detect -o subs_alive.txt
记录状态码、标题、最终 URL、关键响应头、证书线索和技术栈。不要在这个步骤做路径 fuzz、漏洞扫描或认证绕过。
仅做提示,不替代人工确认:
subzy run --targets subs_all.txt --hide-fails
疑似接管结果必须带上 CNAME、第三方服务类型和验证证据;证据不足时只能进入 candidate finding。
主动 DNS 枚举遇到以下情况应暂停:
HTTP/路径/API/端口探测遇到以下情况应立即暂停:
如果未执行主动子域名枚举,必须明确写:
主动 DNS 子域名枚举:未执行
原因:缺少 <授权窗口 / DNS 并发或速率 / 字典规模 / 解析器来源 / scope 确认>
缺失工具:<massdns / dnsx / puredns / shuffledns / 无;说明核心或可选>
安装建议:<运行 pents doctor-recon 后摘录具体建议;不要只写“安装工具”>
已完成替代项:<被动来源、本地 JS、证书、历史 URL 等>
影响:无法确认精选字典能否发现新子域名
下一步需要用户确认:<具体问题>
如果未执行 HTTP 存活或路径/API 探测,必须单独说明,不要和 DNS 枚举混为一个 blocker。
执行结果至少输出下面结构,方便主代理写入项目记录:
目标根域:<target.com>
授权状态:<被动 / 主动 DNS / HTTP 探测分别说明>
被动来源:<来源 + 数量 + 文件>
主动 DNS:<默认 massdns direct / 可选 puredns+massdns wrapper / 替代 shuffledns+massdns / dnsx-l 诊断 / 未执行>
Canary:<目标 + 命中/未命中 + 证据文件>
NXDOMAIN / wildcard:<随机目标 + 结果 + 是否 wildcard-noise>
Resolver:<保留 resolver / 剔除 resolver / 剔除原因>
DNS 结果分类:
- resolved-a: <数量>
- resolved-aaaa: <数量>
- resolved-cname: <数量>
- nodata: <数量>
- nxdomain: <数量>
- wildcard-noise: <数量>
- resolver-error: <数量>
工具缺失或 fallback:<缺失工具、是否影响 massdns direct 主链路、fallback 原因、影响>
下一步:<HTTP 探测 / 等待授权 / 字典回灌 / skill 修订>
证据:<E-xxxx 或待登记文件路径>
执行完毕后必须更新项目记录:
inventory.md:子域名、DNS 记录类型、A/AAAA/CNAME、NOERROR/NODATA 分类、CDN/云厂商判断、HTTP 存活入口、技术栈。evidence.md:来源、命令摘要、字典文件、resolver、canary、NXDOMAIN、采集时间、关键响应摘要。progress.md:已执行项、跳过项、阻塞项、停止原因。review.md:本次字典命中质量、漏掉的新词条、是否需要修订 skill。复盘时,把实战中发现但 dicts/curated/ 没覆盖的有效词条先写入 dicts/candidates/,再按 dicts/notes/promotion-rules.md 晋升。
pents active-dns 计划,并确认默认主链路为 massdns direct。