
第7章 阶段6HTTP 探测与价值评估本篇定位子域名挖掘流程的第六阶段。前五步从 DNS 层面确认了有没有这个子域。但 DNS 存在不等于有价值——一个子域可能解析成功HTTP 探测返回 404、403、502——这些状态码的挖掘意义完全不同。这一步把DNS 存活的子域筛选为HTTP 层面有价值的目标。阅读建议如果你做过批量 HTTP 探测可以跳到 7.5 价值分级看分级标准。如果是新手按顺序读——7.1 到 7.4 是四道探测工序7.5 把探测结果汇总成分级。7.0 方法论框架HTTP 探测在全局流程里的位置阶段5DNS 清洗可信子域 IP 列表 ──→ 【阶段6HTTP 探测与价值评估】 ──→ 阶段7输出与监控 │ ├── 探测策略协议、方法、顺序 ├── 状态码语义判断服务状态 ├── 重定向链跟踪发现新子域 ├── TLS 证书二次分析发现新子域 └── 价值分级高/中/低/信息/CDN 后什么是 HTTP 探测HTTP 探测HTTP Probing指的是对清洗后的子域名做 HTTP/HTTPS 请求根据响应判断子域是否存活且有价值。为什么在最后清洗解决的问题清洗没解决的问题DNS 层面是否存活HTTP 层面是否存活是否命中通配符服务返回什么状态码CNAME 链终点重定向链指向哪里IP 是否 CDN证书 SAN 有没有新子域—这个子域值不值得打关键认知DNS 存在不等于有价值。一个子域名 DNS 解析成功但 HTTP 探测可能返回 404空站、403禁止访问/WAF、502后端故障、301重定向到别处。HTTP 探测的价值是从 DNS 存活筛选到 HTTP 有价值。四个环节概览HTTP 探测探测策略http-firsthttps-onlyhttp-onlyUA 伪装超时控制状态码语义2xx 正常服务3xx 重定向4xx 权限/禁止/不存在5xx 服务异常重定向链跟踪自动跟随记录每一跳提取新子域TLS 证书二次分析抓取证书提取 SAN对比已有列表探测的本质前五步解决有没有这个子域这一步解决值不值得打。价值分级是这一步的核心输出——不是所有子域都值得深入分级帮你分配精力。7.1 探测策略前置知识HTTP 请求方法回顾HTTP 请求方法HTTP Method告诉服务器客户端要做什么方法含义和探测的关系GET请求资源最常用服务器返回完整页面HEAD只请求头不返回 body速度快——适合批量探测POST提交数据不适合探测——可能触发业务逻辑OPTIONS查询支持的方法部分服务器返回允许的方法HTTP/HTTPS 回顾基础知识05讲过 TLS 基础——HTTPS 是 HTTP over TLS在 HTTP 下面加了一层加密。探测时要同时考虑 HTTP 和 HTTPS——有些子域只开 HTTP没配证书有些只开 HTTPSHTTP 自动重定向到 HTTPS。是什么决定用什么协议HTTP/HTTPS、什么方法GET/HEAD、什么顺序探测清洗后的子域列表。为什么不同策略的覆盖面和效率不同策略覆盖效率遗漏风险http-first先 HTTP自动重定向到 HTTPS中部分只开 HTTPS 的可能漏如果重定向关闭https-only只测 HTTPS高只开 HTTP 的漏掉http-only只测 HTTP高只开 HTTPS 的漏掉怎么做三种策略对比策略怎么做适合场景http-first先请求 HTTP80如果返回 3xx 重定向到 HTTPS自动跟随不确定目标开了什么想全覆盖https-only只请求 HTTPS443忽略 HTTP确定目标都开了 HTTPS或只关心 HTTPShttp-only只请求 HTTP80不测 HTTPS目标只开 HTTP或历史快照分析推荐策略http-first——先 HTTP自动重定向到 HTTPS。覆盖面最广。技巧技巧做法价值自动跟随重定向客户端配置自动跟随 3xx不漏掉 HTTPS 子域UA 伪装用常见浏览器 UA避免被 WAF 按非浏览器 UA 拦截超时控制连接超时 5s读取超时 10s避免慢响应拖慢批量探测HEAD 优先批量探测先用 HEAD快的先过提高效率再对存活的做 GET注意事项事项说明HTTPS 证书错误要忽略自签证书或过期证书不代表服务不存在——忽略证书错误继续探测部分子域只开 HTTP没配 HTTPS 的子域https-only 策略会漏掉部分子域只开 HTTPS强制 HTTPS 的子域http-only 策略会漏掉HEAD 可能被拒部分服务器不接受 HEAD 请求——返回 405要切 GET 重试7.2 状态码实战语义前置知识HTTP 状态码分类回顾HTTP 状态码Status Code是服务器响应的第一行数字表示请求结果分类含义典型状态码1xx信息101协议切换2xx成功200、201、2043xx重定向301、302、3074xx客户端错误401、403、404、4055xx服务端错误500、502、503是什么从 HTTP 状态码判断子域的挖掘价值——是正常服务、管理后台、还是空站。为什么状态码暴露了服务状态状态码意味着挖掘价值200正常服务高——有可探测的接口和页面401需要认证高——有登录入口可尝试爆破403禁止访问高——可能是管理后台也可能是 WAF404不存在低——可能是空站也可能是默认 404 页面500服务器内部错误中——后端有异常可能暴露调试信息502网关错误中——后端服务故障可能暴露真实后端301/302重定向中——重定向链可能暴露新子域怎么做2xx成功状态码含义处理200正常响应高价值——记录页面标题、响应体大小201资源创建成功可能是 API 接口204无内容可能是 API 接口返回空 body3xx重定向状态码含义处理301永久重定向记录 Location 头提取目标子域302临时重定向记录 Location 头提取目标子域307保持方法重定向同 3024xx客户端错误状态码含义处理401需要认证高价值——有登录入口记录 WWW-Authenticate 头403禁止访问高价值——可能是管理后台或 WAF要重试404不存在低价值——但要看是不是自定义 404 页面405方法不允许换 GET 重试5xx服务端错误状态码含义处理500内部错误中价值——可能暴露调试信息、堆栈跟踪502网关错误中价值——后端故障可能暴露真实后端 IP503服务不可用低价值——服务维护中技巧技巧做法价值401/403 重试用不同 UA 重试区分 WAF 拦截和真管理后台404 不一定没用看响应体是不是自定义 404有些 404 页面暴露了框架信息5xx 可能是真实后端502/503 时看响应头 Server后端故障时可能暴露真实服务器信息多方法探测GET 返回 405 时换 POST/PUT/DELETE发现隐藏的 API 接口注意事项事项说明WAF 干扰WAF 可能对所有非浏览器 UA 返回 403——要换 UA 重试CDN 缓存干扰CDN 缓存了 404 页面——实际后端可能不是 404状态码可能变化第一次 503 的子域重试可能变 200——服务恢复了默认页面新部署的服务可能返回 200 但内容是默认欢迎页7.3 重定向链跟踪前置知识HTTP 重定向机制HTTP 重定向Redirection是服务器告诉客户端你要的资源不在这里去那个地址。机制是服务器返回 3xx 状态码在响应头Location字段里写上新地址。客户端按Location重新请求——可能又是一轮 3xx——形成链条。重定向链概念重定向链Redirect Chain是指一连串的 3xx 重定向A → B → C → D。链条的起点是原始 URL终点是最终返回非 3xx 的页面。链条中间的每一跳可能是一个新子域。关键认知重定向链是 HTTP 探测里被动发现新子域的机会。原始子域old.example.com可能重定向到new.example.com——new是之前没发现过的子域。跟踪链条的每一跳从 Location 头里提取子域名是 HTTP 探测的副产物。是什么跟踪 3xx 重定向链从链条中间节点的 Location 头里提取新子域名。为什么重定向链可能暴露新子域——A 重定向到 BB 是未发现的子域。常见场景旧域名重定向到新域名、HTTP 重定向到 HTTPS、未认证重定向到登录页、子域名重定向到主站。怎么做第一步自动跟随重定向配置 HTTP 客户端自动跟随 3xx 重定向记录每一跳跳数URL状态码Location1http://old.example.com301https://new.example.com2https://new.example.com302https://www.example.com/login3https://www.example.com/login200—终点第二步记录每一跳的 URL从每一跳的 Location 头里提取 URL解析出子域名跳数Location 头提取的子域1https://new.example.comnew.example.com新发现2https://www.example.com/loginwww.example.com已有第三步从中间节点提取子域名把发现的新子域加入已有列表进入阶段4进阶发现做递归。技巧技巧做法价值多级重定向跟踪跟踪到最终非 3xx 页面只看第一跳会漏掉后面的JavaScript 跳转检测看响应体有没有location.href或meta refreshHTTP 客户端不跟 JS 跳转要单独检测认证重定向未登录重定向到登录页登录页域名可能是新子域对比新旧子域重定向链里的子域和已有列表对比只提取新子域注意事项事项说明循环重定向A→B→A 的循环——要设最大跳数通常 10 跳JavaScript 跳转HTTP 客户端不执行 JS——location.href跳转检测不到登录重定向干扰未登录全部重定向到登录页——登录页子域反复出现CDN 重定向CDN 根据地理位置重定向到不同节点——不是新子域7.4 TLS 证书二次分析前置知识TLS 证书回顾基础知识05讲过 TLS 基础——HTTPS 握手时服务器返回证书证书里有 SANSubject Alternative Name列表列出这张证书覆盖的所有域名。SAN 二次发现概念阶段2被动发现用 CT Logs 查证书 SAN——查的是公开证书日志里历史签发的证书。这里做的是 HTTPS 握手时实时拿证书——查的是当前服务器实际使用的证书。两者数据来源不同对比CT Logs阶段2TLS 握手阶段6数据来源公开证书日志实时握手获取覆盖所有签发过的证书服务器当前用的证书时间维度历史包括已过期的当前发现价值大范围覆盖小范围但更实时CT Logs 覆盖历史所有证书TLS 握手只拿当前证书——为什么要再查因为有些证书不在 CT Logs 里自签证书、内部 CA 签发的证书、未提交到 CT 的证书只有 HTTPS 握手时才暴露。自签证书与证书过期证书类型说明挖掘价值CA 签发公开 CA 签发在 CT Logs 里阶段2 已覆盖自签证书服务器自己签的不在 CT Logs 里阶段2 查不到——只有 TLS 握手能发现内部 CA 签发组织内部 CA 签发不公开阶段2 查不到——TLS 握手能发现过期证书证书已过期但服务还在用证书 SAN 仍可提取关键认知TLS 证书二次分析的核心价值是发现CT Logs 没有的证书。自签证书和内部 CA 签发的证书不在公开日志里只有 HTTPS 握手时才暴露——这些往往是内部服务价值更高。是什么在 HTTP 探测时分析 HTTPS 握手返回的 TLS 证书从 SAN 列表里发现新子域。为什么证书来源阶段2 CT Logs阶段6 TLS 握手公开 CA 签发✓✓自签证书✗✓内部 CA 签发✗✓过期证书✓历史有✓仍在用TLS 握手能发现 CT Logs 覆盖不到的证书——自签证书和内部 CA 证书。怎么做第一步抓取 HTTPS 响应的证书对每个开 HTTPS 的子域做 TLS 握手抓取服务器返回的证书。第二步提取 SAN 列表从证书的 Subject Alternative Name 字段提取所有域名子域证书 SANapi.example.comapi.example.com,admin.example.com,internal.example.com第三步对比已有子域列表SAN 里的域名已有列表处理api.example.com已有跳过admin.example.com没有新发现加入列表internal.example.com没有新发现加入列表技巧技巧做法价值自签证书更真实自签证书往往是内部服务内部服务价值高证书过期≠下线过期证书的子域可能仍在用不要因过期就丢弃SNI 影响不带 SNI 的握手可能返回默认证书带正确 SNI 握手拿真实证书通配符证书识别SAN 只有*.example.com的不暴露具体子域跳过通配符证书注意事项事项说明通配符证书不暴露具体子域SAN 只有*.example.com——和 CT Logs 一样不暴露CDN 证书干扰CDN 节点返回 CDN 的证书不是目标的——SAN 是 CDN 的域名部分服务不发证书只开 HTTP 的服务没有证书证书可能随时更换证书有有效期过段时间可能换了新证书7.5 价值分级体系前置知识攻击面概念攻击面Attack Surface是指一个系统暴露给攻击者的所有入口点。子域名是攻击面的一部分——每个子域可能暴露不同的入口登录页可爆破、API 接口可测注入、管理后台高权限、静态资源低价值、调试页面信息泄露。价值分级就是评估每个子域暴露了什么类型的攻击面。是什么根据探测结果状态码 CNAME IP 归属 标题对子域做价值分级帮你分配精力。为什么不是所有子域都值得深入。100 个 DNS 存活的子域里可能只有 20 个是高价值目标。分级帮你把精力集中在高价值目标上不在低价值目标上浪费时间。怎么做五级分级等级定义典型特征高价值管理后台、API 接口、认证服务200 标题含 admin/console/dashboard401/403中价值业务功能页面、内部服务200 标题含业务关键词500可能泄露调试信息低价值静态资源、CDN 缓存200 响应体小 静态文件CNAME 指向 CDN信息价值空站、已下线、自定义 404404502/503200 但内容是默认页CDN 后资产IP 归属 CDN看不到真实后端CNAME 指向 CDNIP 归属 CDN ASN判定矩阵状态码 × CNAME 类型 × 标题关键词 → 等级状态码CNAME 类型标题关键词等级200无 CNAME自有 IPadmin/console/dashboard高200无 CNAME自有 IPapi/swagger/graphql高401/403无 CNAME自有 IP任意高200无 CNAME自有 IP业务关键词中500无 CNAME自有 IP任意中200CDN任意低或 CDN 后404任意任意信息502/503无 CNAME任意中后端故障任意悬挂 DNS任意高可接管技巧技巧做法价值多维度综合分级状态码 CNAME IP 归属 标题 响应体大小单一维度会误判标题关键词匹配维护高价值关键词表admin/api/console/swagger快速识别高价值目标响应体大小对比和默认 404 页面大小对比识别自定义 404CDN 判断要准IP 归属 ASN 判断不能只看 CNAME部分 CDN 用自有 CNAME注意事项事项说明CDN 判断要准确IP 归属 CDN ASN 才是 CDN 后资产——CNAME 不一定指向 CDN动态服务状态码变化第一次 503 的子域重试可能变 200——服务恢复了自定义 404返回 200 但内容是not found——要对比响应体分级是快照当前是低价值不代表以后是——服务可能更新7.6 阶段输出输出1带价值分级的子域列表字段说明示例子域名探测过的子域名admin.example.com协议HTTP/HTTPSHTTPS状态码HTTP 响应码401标题页面标题Admin LoginCNAME 链CNAME 记录无IP 归属IP 的 ASNAS37963自有价值等级高/中/低/信息/CDN 后高备注补充信息可能是管理后台输出2高价值目标清单字段说明示例子域名高价值子域admin.example.com价值原因为什么高价值401 标题含 admin建议动作下一步做什么尝试登录爆破风险提示注意什么可能有 WAF输出3CDN 后资产清单字段说明示例子域名CDN 后的子域cdn.example.comCDN 名称CDN 厂商Cloudflare真实 IP 状态是否找到真实 IP未找到建议动作下一步做什么CDN 绕过尝试输出4新发现子域字段说明示例子域名新发现的子域new.example.com发现方法怎么发现的重定向链 / TLS 证书 SAN来源子域从哪个子域发现的old.example.com重定向链处理下一步加入列表进入阶段4递归7.7 与其他阶段的衔接输出流向带价值分级的子域列表 ──→ 阶段7输出与监控归档 高价值目标清单 ──→ 阶段7输出与监控重点跟踪 CDN 后资产清单 ──→ 后续 CDN 绕过章节 新发现子域 ──→ 阶段4进阶发现回路做递归新发现子域的回路HTTP 探测可能发现新子域——重定向链和 TLS 证书 SAN 都是新子域的来源来源怎么发现回路重定向链Location 头里的子域回到阶段4进阶发现做递归TLS 证书 SAN证书 SAN 里的子域回到阶段4进阶发现做递归清洗没解决的问题清洗解决了HTTP 探测解决DNS 是否存活HTTP 是否存活是否通配符假阳性是什么状态码CNAME 链终点重定向链指向哪里IP 是否 CDN证书 SAN 有没有新子域—这个子域值不值得打CDN 后资产的去向CDN 后资产在 HTTP 探测阶段只能标注——IP 是 CDN 的看不到真实后端。后续的 CDN 绕过方法历史 DNS、邮件服务器、子域名接管等留到专门的章节。关键认知HTTP 探测是流程里从存报到有价值的转折点。前五步收集的是DNS 层面的资产清单HTTP 探测把它变成HTTP 层面的攻击面清单。价值分级后的高价值目标清单才是真正进入漏洞挖掘阶段的起点。下一篇第8章——踩坑实录实战中的陷阱与预防。