子域名接管漏洞是怎么回事儿
字数 1433 2025-08-07 00:35:01

子域名接管漏洞详解

一、漏洞概述

子域名接管漏洞(Subdomain Takeover)是指攻击者能够控制目标组织不再使用的子域名,从而可以展示任意内容或进行恶意活动的安全漏洞。这种漏洞通常发生在组织忘记删除DNS记录(特别是CNAME记录)的情况下。

二、漏洞原理

  1. 基本流程

    • 组织为某个功能(如GitHub Pages)创建子域名并设置CNAME记录
    • 该功能停止使用后,组织忘记删除DNS记录
    • 攻击者发现后可重新注册该服务并接管子域名
  2. 核心原因

    • DNS记录(特别是CNAME)指向的服务已不再使用
    • 但DNS记录未被及时清理
    • 攻击者可重新注册该服务并声明对该子域名的所有权

三、漏洞危害

  1. 网络钓鱼

    • 伪造合法组织的登录页面
    • 窃取用户凭据
  2. Cookie窃取

    • 设置恶意JavaScript窃取用户Cookie
  3. 邮件伪造

    • 如果子域名用于邮件服务,可伪造发件人
  4. 信任滥用

    • 利用合法组织的域名信任关系进行攻击

四、漏洞复现(以GitHub Pages为例)

  1. 设置阶段

    # 在DNS管理平台设置CNAME记录
    blog.example.com CNAME username.github.io
    
  2. 正常使用阶段

    • 在GitHub创建项目并配置Pages
    • 在Settings > Pages中添加自定义域名blog.example.com
    • 此时访问blog.example.com显示GitHub Pages内容
  3. 漏洞产生阶段

    • 用户删除GitHub项目但保留DNS记录
    • 访问blog.example.com显示404页面
  4. 攻击者接管

    • 攻击者创建自己的GitHub项目
    • 在Settings > Pages中添加blog.example.com
    • 现在该子域名显示攻击者控制的内容

五、检测方法

  1. 手动检测

    • 收集目标所有子域名
    • 检查DNS记录(特别是CNAME)
    • 访问子域名查看是否返回特定服务商的404页面
  2. 自动化工具

六、易受攻击的服务

  1. 常见易受攻击平台

    • GitHub Pages (*.github.io)
    • Heroku (*.herokuapp.com)
    • AWS S3 (*.s3.amazonaws.com)
    • Shopify (*.myshopify.com)
    • Azure (*.azurewebsites.net)
  2. 其他情况

    • 域名过期被抢注:如果CNAME指向的域名过期并被他人注册

七、防御措施

  1. 主动防御

    • 定期审计DNS记录
    • 下线服务时同步清理DNS记录
    • 监控子域名状态
  2. 被动防御

    • 使用DNSSEC防止DNS劫持
    • 设置适当的SPF、DKIM、DMARC记录防止邮件伪造
  3. 应急响应

    • 发现被接管后立即删除或修改DNS记录
    • 通知相关服务提供商

八、实战技巧

  1. 目标发现

    • 大规模子域名收集
    • 筛选CNAME记录指向第三方服务的子域名
    • 批量检测这些服务是否可被接管
  2. 成功率统计

    • 测试表明约3%的GitHub Pages相关子域名存在接管风险
  3. 利用扩展

    • 不仅限于GitHub,其他云服务也存在类似问题
    • 关注新出现的云服务平台

九、法律与道德

  1. 注意事项

    • 未经授权测试可能违法
    • 发现漏洞应通过合法渠道报告
    • 仅在授权范围内进行测试
  2. 漏洞报告

    • 通过组织官方渠道或漏洞赏金平台报告
    • 提供详细复现步骤和影响证明

十、参考资料

  1. Subdomain Takeover深度解析
  2. subtake工具
  3. can-i-take-over-xyz
子域名接管漏洞详解 一、漏洞概述 子域名接管漏洞(Subdomain Takeover)是指攻击者能够控制目标组织不再使用的子域名,从而可以展示任意内容或进行恶意活动的安全漏洞。这种漏洞通常发生在组织忘记删除DNS记录(特别是CNAME记录)的情况下。 二、漏洞原理 基本流程 : 组织为某个功能(如GitHub Pages)创建子域名并设置CNAME记录 该功能停止使用后,组织忘记删除DNS记录 攻击者发现后可重新注册该服务并接管子域名 核心原因 : DNS记录(特别是CNAME)指向的服务已不再使用 但DNS记录未被及时清理 攻击者可重新注册该服务并声明对该子域名的所有权 三、漏洞危害 网络钓鱼 : 伪造合法组织的登录页面 窃取用户凭据 Cookie窃取 : 设置恶意JavaScript窃取用户Cookie 邮件伪造 : 如果子域名用于邮件服务,可伪造发件人 信任滥用 : 利用合法组织的域名信任关系进行攻击 四、漏洞复现(以GitHub Pages为例) 设置阶段 : 正常使用阶段 : 在GitHub创建项目并配置Pages 在Settings > Pages中添加自定义域名blog.example.com 此时访问blog.example.com显示GitHub Pages内容 漏洞产生阶段 : 用户删除GitHub项目但保留DNS记录 访问blog.example.com显示404页面 攻击者接管 : 攻击者创建自己的GitHub项目 在Settings > Pages中添加blog.example.com 现在该子域名显示攻击者控制的内容 五、检测方法 手动检测 : 收集目标所有子域名 检查DNS记录(特别是CNAME) 访问子域名查看是否返回特定服务商的404页面 自动化工具 : subtake :专门检测子域名接管问题 can-i-take-over-xyz :不同服务的利用方式 六、易受攻击的服务 常见易受攻击平台 : GitHub Pages (* .github.io) Heroku (* .herokuapp.com) AWS S3 (* .s3.amazonaws.com) Shopify (* .myshopify.com) Azure (* .azurewebsites.net) 其他情况 : 域名过期被抢注:如果CNAME指向的域名过期并被他人注册 七、防御措施 主动防御 : 定期审计DNS记录 下线服务时同步清理DNS记录 监控子域名状态 被动防御 : 使用DNSSEC防止DNS劫持 设置适当的SPF、DKIM、DMARC记录防止邮件伪造 应急响应 : 发现被接管后立即删除或修改DNS记录 通知相关服务提供商 八、实战技巧 目标发现 : 大规模子域名收集 筛选CNAME记录指向第三方服务的子域名 批量检测这些服务是否可被接管 成功率统计 : 测试表明约3%的GitHub Pages相关子域名存在接管风险 利用扩展 : 不仅限于GitHub,其他云服务也存在类似问题 关注新出现的云服务平台 九、法律与道德 注意事项 : 未经授权测试可能违法 发现漏洞应通过合法渠道报告 仅在授权范围内进行测试 漏洞报告 : 通过组织官方渠道或漏洞赏金平台报告 提供详细复现步骤和影响证明 十、参考资料 Subdomain Takeover深度解析 subtake工具 can-i-take-over-xyz