关于子域名劫持的一些总结
字数 1368 2025-08-25 22:58:35
子域名劫持技术全面解析与实战指南
0x00 子域名劫持概述
子域名劫持(Subdomain Takeover)是一种利用目标组织废弃子域名未正确清理DNS记录的安全漏洞。当企业停止使用某个子域名服务但未删除相关DNS记录时,攻击者可以注册该服务并将子域名指向自己控制的服务器,从而获得对该子域名的控制权。
0x01 核心概念与技术原理
CNAME记录与CDN工作原理
- CNAME记录:DNS别名记录,将域名解析到另一个域名
- CDN中的CNAME应用:
- 用户访问域名时,CDN参与后解析流程变为:域名 → CNAME解析
- 如果CNAME指向的域名配置错误,会导致跳转到错误地址
CloudFront服务特性
- AWS CloudFront是内容分发网络(CDN)服务
- 关键特性:
- 允许用户上传SSL证书和私钥到CloudFront发行版
- 作为SSL代理提供服务
- 创建服务后会生成随机域名供用户访问
- 采用多对多映射,无专用IPv4地址
0x02 子域名劫持发生条件
-
必要条件:
- 目标组织曾经使用过某子域名服务
- 停止服务后未删除DNS记录(特别是CNAME记录)
- 该服务允许新用户注册并配置相同子域名
-
典型场景:
- 企业关闭CloudFront服务但保留CNAME记录
- 攻击者发现后可注册相同子域名指向自己的服务器
- CloudFront会调用遗留的CNAME记录指向攻击者服务器
0x03 子域名发现技术
1. Google Hacking方法
site:*.target.com
site:*.*.target.com
site:*.*.*.target.com
2. 自动化工具检测
推荐工具:
- aquatone:综合性子域名发现与接管检测工具
- JSFinder:从JavaScript文件中提取子域名
- subfinder:被动子域名枚举工具
3. 其他发现方法
- 证书透明度日志查询
- DNS区域传输尝试
- 暴力破解常见子域名
- 第三方服务历史记录查询
0x04 劫持可能性验证
-
初步检测:
aquatone-takeover --domain example.com检查输出中"vulnerable"标记的域名
-
手动验证:
- 访问疑似废弃子域名
- 检查是否显示服务不存在或错误页面
- 常见错误提示:
- "NoSuchBucket" (AWS S3)
- "404 Not Found"
- "未找到网站"
-
参考资源:
- can-i-take-over-xyz:各平台子域名接管可能性汇总
0x05 特殊劫持技术
利用平台自身功能劫持
案例:Intercom服务劫持
- 发现Intercom废弃子域名
- 创建Intercom试用账户
- 在服务设置中添加目标子域名
- 发布测试内容
- 成功接管子域名的帮助中心
0x06 防御措施
-
企业防护建议:
- 下线服务前彻底清理DNS记录
- 定期审计所有子域名状态
- 监控子域名解析异常
- 建立子域名生命周期管理流程
-
服务商防护机制:
- 强制域名所有权验证
- 提供域名释放确认流程
- 实施域名占用保护期
0x07 实战注意事项
-
常见错误:
- 未确认目标使用的CDN平台
- 忽略CNAME记录的实际指向
- 对错误页面判断失误
-
成功关键:
- 准确识别服务提供商
- 验证DNS记录类型
- 确认服务注册可行性