结论:子域名接管指 DNS 记录(CNAME)指向一个已被释放的第三方资源——典型场景:blog.example.com CNAME 到 xxx.github.io 或某 S3/Heroku 应用,后来第三方服务上的资源被删除,DNS 记录却没清理;攻击者在第三方平台注册同名资源,example.com 的子域名立刻开始为攻击者提供内容。由于域名属于受害者,钓鱼、Cookie 窃取(父域 Cookie)、CSP/CORS 信任全部继承。

展开:漏洞链三要素:悬空 DNS 记录(dangling CNAME/A 指向云资源)+ 云资源可重注册 + 平台无所有权校验(GitHub Pages 历史上可直接认领同名 repo 页面;现在部分平台要求域名验证,但 S3 静态站、部分 CDN 仍可乘)。危害细拆:钓鱼只是入门——Cookie 若设成 .example.com,攻击页面可读全部子域共享的会话 Cookie;OAuth 回调白名单按 *.example.com 配置时令牌直接送上门。发现:1)进攻视角——subfinder/amass 枚举子域,批量探测 CNAME 目标返回 404/未认领签名(can-i-take-over-xyz 项目维护指纹库);2)防守视角——资产清单里比对 DNS 记录与云资源存活状态,CI 里跑自动化监控。预防:下线服务时先删 DNS 记录再删云资源(顺序反了就有窗口期);IaC 管理 DNS 与资源同生命周期;给子域证书用 ACME DNS-01 校验时注意临时 TXT 记录也要清理。易错点:A 记录指向已释放的弹性 IP(云厂商 IP 池再分配)同样可被接管,不止 CNAME。

追问方向:NS 记录级别的接管(整个 DNS 区域委)风险、证书透明度日志如何用于发现悬空子域。