بنقرة واحدة
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。