SuperAPI AI 工具集

subdomain-takeover

安全与审计

查看项目

更新于 10-16 05:10

技能介绍

子域名接管检测与利用方法论。

一、核心概念 子域名接管发生在:sub.target.com 有 DNS 记录(CNAME/NS/A)指向外部服务;该外部资源已被删除或停用(如删除的 S3 bucket、移除的 Heroku app 等);攻击者可在该供应商上注册或认领同名资源;攻击者控制 sub.target.com 下的内容。影响包括 cookie 窃取(父域 cookie)、OAuth token 拦截、可信域名钓鱼、CORS 绕过、CSP 绕过。

二、检测方法论

  1. CNAME 枚举:收集子域名(amass/subfinder/assetfinder/crt.sh/SecurityTrails);逐个解析 DNS:dig CNAME sub.target.com +short;对每个 CNAME 检查目标是否返回 NXDOMAIN 或供应商错误页;用指纹表匹配错误响应。
  2. 关键信号:CNAME 指向 xxx.s3.amazonaws.com 且 HTTP 404 "NoSuchBucket" 表示 S3 bucket 已删除可认领;CNAME 指向 xxx.herokuapp.com 且 "No such app" 表示 Heroku 应用已删除;CNAME 指向 xxx.github.io 且 404 "There isn't a GitHub Pages site here" 表示 GitHub Pages 未认领;CNAME 目标域名本身 NXDOMAIN 表示目标域名过期或不存在;CNAME 指向供应商但 HTTP 200 加默认停车页可能可认领,需验证。
  3. 自动化工具:subjack(自动化 CNAME 接管检查)、nuclei -t takeovers/(Nuclei 接管检测模板)、can-i-take-over-xyz(GitHub 可接管服务参考列表)、dnsreaper(多供应商接管扫描器)、subzy(快速子域名接管验证)。

三、供应商指纹表 AWS S3:CNAME 模式 .s3.amazonaws.com / .s3-website-.amazonaws.com,指纹 NoSuchBucket(404),可接管,创建同名 bucket。 GitHub Pages:.github.io,指纹 There isn't a GitHub Pages site here(404),可接管,创建 repo 并启用 Pages。 Heroku:.herokuapp.com / .herokudns.com,指纹 No such app,可接管,创建同名 app。 Azure:.azurewebsites.net / .cloudapp.azure.com / .trafficmanager.net,指纹各种默认页面/NXDOMAIN,可接管,注册匹配资源。 Shopify:.myshopify.com,指纹 Sorry, this shop is currently unavailable,可接管,创建 shop 并添加自定义域名。 Fastly:CNAME 指向 Fastly edge,指纹 Fastly error: unknown domain,可接管,在 Fastly 添加域名。 Pantheon:.pantheonsite.io,指纹 404 Site Not Found 加 Pantheon 品牌,可接管。 Tumblr:.tumblr.com,指纹 There's nothing here / Whatever you were looking for doesn't exist,可接管。 WordPress.com:CNAME 指向 .wordpress.com,指纹 Do you want to register,可接管,在 WP.com 认领。 Zendesk:.zendesk.com,指纹 Help Center Closed / Zendesk 品牌错误页,可接管。 Unbounce:.unbouncepages.com,指纹 The requested URL was not found,可接管。 Ghost:.ghost.io,指纹 404 Not Found Ghost 错误,可接管。 Surge.sh:*.surge.sh,指纹 project not found,可接管。 Fly.io:CNAME 指向 *.fly.dev,指纹 Fly.io 默认 404,可接管。

四、接管步骤(常见供应商)

  1. AWS S3:确认 curl -s http://sub.target.com 返回 "NoSuchBucket";从 CNAME 提取 bucket 名(如 sub.target.com.s3.amazonaws.com 则 bucket = "sub.target.com");aws s3 mb s3://sub.target.com --region <region>;上传 index.html 证明控制;启用静态网站托管。
  2. GitHub Pages:确认 curl -s https://sub.target.com 返回 "There isn't a GitHub Pages site here";创建 GitHub 仓库(任意名称);添加 CNAME 文件内容为 "sub.target.com";在仓库设置中启用 GitHub Pages;等待 DNS 传播(GitHub 验证 CNAME 匹配)。
  3. Heroku:确认 curl -s http://sub.target.com 返回 "No such app";heroku create <cname 中的 app-name>;heroku domains:add sub.target.com;部署 PoC 页面。

五、NS 接管(高危) NS 接管比 CNAME 接管危险得多:控制该区域的全部 DNS 解析。发生方式:target.com NS 指向 ns1.expireddomain.com,攻击者注册 expireddomain.com 后控制 target.com 的全部 DNS(A 记录、MX 记录、TXT 记录等一切)。检测:枚举 NS 记录 dig NS target.com +short;检查每个 NS 域名 whois ns1.example.com 是否过期或可注册;验证 dig A ns1.example.com 是否 NXDOMAIN/SERVFAIL;检查子委派区域 dig NS sub.target.com。影响:完全域名控制(任意内容、拦截邮件、通过 DNS-01 签发 TLS 证书);从任何 CA 签发 DV 证书;修改 SPF/DKIM/DMARC 以目标身份发送认证邮件。

六、MX 接管(邮件拦截) 当 MX 记录指向已停用的邮件服务:target.com MX 指向 mail.deadservice.com(服务已停止)。如果攻击者可认领 mail.deadservice.com 或邮件租户,则可接收密码重置邮件、拦截敏感通信、重置使用邮件认证的账户。常见场景:过期的 Google Workspace / Microsoft 365 租户,MX 仍指向 Google/Microsoft,攻击者创建新租户并认领该域名。

七、通配符 DNS 风险 如果 *.target.com 有通配符 CNAME 指向可认领的服务,则每个未定义的子域名都有漏洞,anything.target.com 都可被接管,攻击面大幅增加。检测:dig A random1234567.target.com,如果解析成功则存在通配符。

八、决策树 发现子域名 sub.target.com 后解析 DNS 记录:有 CNAME 指向外部服务时,若 HTTP 响应匹配已知指纹,则在供应商上尝试认领,认领成功即接管确认,认领被阻止(名称保留/区域锁定)则记录并尝试变体;若不匹配指纹则服务活跃无法接管。CNAME 目标 NXDOMAIN 时,若目标是可注册域名则注册后完全控制,若目标是活跃供应商的子域名则检查供应商认领流程。有 NS 记录指向外部 nameserver 时,若 NS 域名过期或可注册则注册后全域接管,若 NS 域名活跃则无法接管。有 MX 指向外部邮件服务时,若邮件服务已停用或可认领则认领租户后邮件拦截,若邮件服务活跃则无法接管。有 A 记录指向 IP 地址时,若 IP 属于弹性云(AWS EIP/Azure/GCP)且未分配则可认领 IP 并提供内容,若已分配给其他客户则无法接管;若 IP 属于专用服务器则无法接管。接管后影响评估:与父域共享 cookie 则会话劫持;CORS 信任 *.target.com 则跨域数据窃取;CSP 白名单 *.target.com 则通过接管子域 XSS;OAuth redirect_uri 允许 sub.target.com 则 Token 窃取;能为 sub.target.com 签发 TLS 证书则完整 MITM。

九、注意事项 CNAME 不等于可接管:CNAME 指向 S3 返回 403(bucket 存在但私有)不是漏洞,只有 NoSuchBucket(404)才是。S3 区域问题:Bucket 名称全局唯一,但网站端点是区域性的,尝试匹配 CNAME 中的区域。GitHub Pages 验证:GitHub 已添加域名验证,组织验证的域名不能被其他人认领。边缘情况:部分供应商(如 CloudFront)需要特定的分发配置,不只是域名认领。二阶接管:sub.target.com CNAME 指向 other.target.com CNAME 指向 dead-service.com,必须跟踪完整链。SPF 子域接管:如果 SPF 包含 include:sub.target.com 且你接管了 sub.target.com,可以修改其 SPF TXT 记录授权你的邮件服务器,以 target.com 身份发送伪造邮件。

深入参考:云服务商接管模式与 DNS 记录类型速查见 references/takeover-techniques.md。