子域名劫持指南
字数 1494 2025-08-27 12:33:23
子域名劫持全面指南
1. 子域名劫持概述
子域名劫持是指主站指向了一个已停用的子域名,而攻击者通过在第三方服务商注册,从而在子域名上提供危险内容的安全漏洞。
1.1 基本劫持场景
- 目标:example.com
- 发现子域:subdomain.example.com
- DNS记录显示指向GitHub页面(IP 192.30.252.153/154)
- 访问显示404错误页面
- 攻击者将该子域添加到自己的GitHub项目
- 成功控制subdomain.example.com的内容
1.2 二阶子域名劫持(坏链劫持)
- 目标网站导入的资源来自可被劫持的子域
- 可能导致存储型XSS攻击
- 攻击者可在目标页面上加载任意代码
2. 子域发现技术
2.1 爬虫爬取(被动侦察)
- 使用第三方服务收集子域:
- DNS Dumpster
- VirusTotal
- 其他来源:GIT仓库、CSP头部、源代码、问题跟踪器等
2.2 暴力枚举
- 遍历词表测试子域存在性
- 重要:先检查目标是否启用通配符
- 测试方法:
host randomifje8z193hf8jafvh7g4q79gh274.example.com
- 测试方法:
- 建议创建个性化词表(包含常见服务关键词如"jira"、"git")
2.3 指纹识别技术
- 为目标创建自定义词表
- 可发现通用词表无法找到的资产
3. 常用工具
| 工具名称 | 类型 | 特点 |
|---|---|---|
| Sublist3r | 爬取 | 从搜索引擎、SSL证书等收集子域 |
| Altdns | 暴力枚举 | 递归暴力枚举,可生成词表 |
| Commonspeak | 词表生成 | 使用Google BigQuery生成趋势词表 |
| SubFinder | 混合 | 结合爬取和暴力枚举 |
| Massdns | 暴力枚举 | 超快枚举,需提供有效解析器列表 |
4. 自动化工作流程
- 从主机列表中过滤活动子域:
while read subdomain; do
if host "$subdomain" > /dev/null; then
echo "$subdomain" >> live.txt
fi
done < subdomain-list.txt
- 子域概览方法:
- 截图工具:EyeWitness
./EyeWitness -f live.txt -d out --headless - 轻量级内容获取:meg
meg -d 10 -c 200 / live.txt
5. 特殊情况处理
- 死的DNS记录:
host命令可能返回错误,但dig可能揭示死的记录 - 云提供商DNS劫持:无需验证的特殊情况
6. 利用技术
6.1 Cookies操作
- 子域可修改cookies范围到主域
- 可能劫持主站会话
- 会话固定攻击场景:设置恶意cookie顶替新生成的cookie
6.2 跨域资源共享(CORS)
- 检查应用程序是否将子域列入白名单
- 可能窃取主应用程序的认证用户数据
6.3 Oauth白名单
- 子域被列入白名单时
- 可将用户重定向到子域,泄露Oauth令牌
6.4 内容安全策略(CSP)
- 子域在白名单中时可绕过策略
- 执行恶意客户端代码
6.5 点击劫持
- 支持
X-Frame-Options的ALLOW-FROM指令的浏览器 - 子域被列入白名单时可构建点击劫持攻击
6.6 密码管理器
- 某些密码管理器会在子域自动填写登录表单
- 可能导致账户密码泄露
6.7 电子邮件拦截
- 案例:通过在SendGrid上声明子域拦截邮件
7. 合规报告指南
-
验证实际控制能力
- 不要在索引页面发布明显内容
- 建议在HTML注释中添加隐秘消息
- 创建隐藏路径的HTML文件作为证明
-
报告内容应包含:
- 劫持证明
- 潜在影响分析
- 不擅自扩大渗透测试范围(需获得许可)
-
报告特点:
- 奖金通常较高
- 重复报告概率低
- 无需急于提交
8. 最佳实践
- 持续监控目标变化
- 关注所有可能的子域
- 结合多种发现技术
- 创新侦察方法(越奇特的方法可能发现越多)
- 实践检验想法以提高发现率