子域名劫持(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解析流程
- 用户访问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工具:
nslookup ping.ubnt.com
检查解析结果是否指向可被注册的第三方服务(如*.cloudfront.net)
2. 自动化工具检测
推荐使用aquatone工具套件:
-
子域名探测:
- 结合搜索引擎、API接口和爆破手段
- 需要配置相关API Key
- 生成hosts.json文件
-
劫持检测:
aquatone-takeover -l hosts.json
六、漏洞防护措施
1. 主动防御
- 及时清理:停止服务时立即删除相关DNS记录
- 持续监控:定期检查DNS配置和子域名状态
- 保留所有权:即使停止服务也保持对第三方服务账户的控制
2. 被动防御
- 实施子域名监控系统
- 使用DNSSEC增强安全性
- 限制CNAME记录的使用范围
3. 最佳实践
- 建立子域名生命周期管理流程
- 维护所有第三方服务的清单
- 进行定期的安全审计
七、参考案例
八、总结
子域名劫持是一种容易被忽视但危害严重的安全漏洞,组织应建立完善的子域名管理机制,定期审计DNS配置,及时清理废弃记录,以防止攻击者利用此类漏洞实施钓鱼、会话劫持等攻击。