子域名劫持(Subdomain Takeover)
字数 1249 2025-08-29 08:32:24

子域名劫持(Subdomain Takeover)漏洞详解与防御指南

一、概述

子域名劫持(Subdomain Takeover)是一种利用DNS配置不当导致的安全漏洞,攻击者可以接管目标组织的子域名控制权。这种漏洞通常发生在组织停止使用第三方服务但未清理相关DNS记录的情况下。

二、核心概念:CNAME解析

1. DNS记录类型

  • A记录:将主机名映射到IPv4地址
  • NS记录:指定负责解析域名的DNS服务器
  • CNAME记录:将一个域名映射到另一个域名(别名记录)

2. CNAME解析流程

  1. 用户访问shop.abc.com
  2. DNS查询发现CNAME记录指向shop.aliyun.com
  3. 解析shop.aliyun.com获取实际IP地址
  4. 用户连接到目标服务器

三、漏洞原理

1. 典型场景

  1. 组织注册域名abc.com
  2. 使用阿里云服务,获得二级域名shop.aliyun.com
  3. 配置CNAME记录:shop.abc.com → shop.aliyun.com
  4. 停止阿里云服务但未删除CNAME记录
  5. 攻击者注册相同的阿里云服务,获得shop.aliyun.com
  6. 用户访问shop.abc.com时被重定向到攻击者控制的服务器

2. 关键因素

  • 已废弃的CNAME记录仍然存在
  • 第三方服务允许注册已被释放的子域名
  • 组织未持续监控DNS配置

四、漏洞利用方式

1. 网页钓鱼

  • 构造与原始服务相似的登录页面
  • 利用可信域名获取用户凭据
  • 用户难以辨别真伪(浏览器显示合法域名)

2. Cookie操纵

  • 利用单点登录(SSO)系统的广泛Cookie作用域
  • 获取用户会话凭证
  • 可能实现权限提升

3. 其他攻击

  • 恶意软件分发
  • 中间人攻击
  • 品牌声誉损害

五、漏洞检测方法

1. 手动检测

使用nslookupdig工具:

nslookup ping.ubnt.com

检查解析结果是否指向可被注册的第三方服务(如*.cloudfront.net)

2. 自动化工具检测

推荐使用aquatone工具套件:

  1. 子域名探测

    • 结合搜索引擎、API接口和爆破手段
    • 需要配置相关API Key
    • 生成hosts.json文件
  2. 劫持检测

    aquatone-takeover -l hosts.json
    

六、漏洞防护措施

1. 主动防御

  • 及时清理:停止服务时立即删除相关DNS记录
  • 持续监控:定期检查DNS配置和子域名状态
  • 保留所有权:即使停止服务也保持对第三方服务账户的控制

2. 被动防御

  • 实施子域名监控系统
  • 使用DNSSEC增强安全性
  • 限制CNAME记录的使用范围

3. 最佳实践

  • 建立子域名生命周期管理流程
  • 维护所有第三方服务的清单
  • 进行定期的安全审计

七、参考案例

八、总结

子域名劫持是一种容易被忽视但危害严重的安全漏洞,组织应建立完善的子域名管理机制,定期审计DNS配置,及时清理废弃记录,以防止攻击者利用此类漏洞实施钓鱼、会话劫持等攻击。

子域名劫持(Subdomain Takeover)漏洞详解与防御指南 一、概述 子域名劫持(Subdomain Takeover)是一种利用DNS配置不当导致的安全漏洞,攻击者可以接管目标组织的子域名控制权。这种漏洞通常发生在组织停止使用第三方服务但未清理相关DNS记录的情况下。 二、核心概念:CNAME解析 1. DNS记录类型 A记录 :将主机名映射到IPv4地址 NS记录 :指定负责解析域名的DNS服务器 CNAME记录 :将一个域名映射到另一个域名(别名记录) 2. CNAME解析流程 用户访问shop.abc.com DNS查询发现CNAME记录指向shop.aliyun.com 解析shop.aliyun.com获取实际IP地址 用户连接到目标服务器 三、漏洞原理 1. 典型场景 组织注册域名abc.com 使用阿里云服务,获得二级域名shop.aliyun.com 配置CNAME记录:shop.abc.com → shop.aliyun.com 停止阿里云服务但未删除CNAME记录 攻击者注册相同的阿里云服务,获得shop.aliyun.com 用户访问shop.abc.com时被重定向到攻击者控制的服务器 2. 关键因素 已废弃的CNAME记录仍然存在 第三方服务允许注册已被释放的子域名 组织未持续监控DNS配置 四、漏洞利用方式 1. 网页钓鱼 构造与原始服务相似的登录页面 利用可信域名获取用户凭据 用户难以辨别真伪(浏览器显示合法域名) 2. Cookie操纵 利用单点登录(SSO)系统的广泛Cookie作用域 获取用户会话凭证 可能实现权限提升 3. 其他攻击 恶意软件分发 中间人攻击 品牌声誉损害 五、漏洞检测方法 1. 手动检测 使用 nslookup 或 dig 工具: 检查解析结果是否指向可被注册的第三方服务(如* .cloudfront.net) 2. 自动化工具检测 推荐使用 aquatone 工具套件: 子域名探测 : 结合搜索引擎、API接口和爆破手段 需要配置相关API Key 生成hosts.json文件 劫持检测 : 六、漏洞防护措施 1. 主动防御 及时清理 :停止服务时立即删除相关DNS记录 持续监控 :定期检查DNS配置和子域名状态 保留所有权 :即使停止服务也保持对第三方服务账户的控制 2. 被动防御 实施子域名监控系统 使用DNSSEC增强安全性 限制CNAME记录的使用范围 3. 最佳实践 建立子域名生命周期管理流程 维护所有第三方服务的清单 进行定期的安全审计 七、参考案例 HackerOne报告#172137 HackerOne报告#32825 HackerOne报告#38007 HackerOne报告#175070 八、总结 子域名劫持是一种容易被忽视但危害严重的安全漏洞,组织应建立完善的子域名管理机制,定期审计DNS配置,及时清理废弃记录,以防止攻击者利用此类漏洞实施钓鱼、会话劫持等攻击。