子域名劫持指南
字数 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. 自动化工作流程

  1. 从主机列表中过滤活动子域:
while read subdomain; do
  if host "$subdomain" > /dev/null; then
    echo "$subdomain" >> live.txt
  fi
done < subdomain-list.txt
  1. 子域概览方法:
  • 截图工具: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-OptionsALLOW-FROM指令的浏览器
  • 子域被列入白名单时可构建点击劫持攻击

6.6 密码管理器

  • 某些密码管理器会在子域自动填写登录表单
  • 可能导致账户密码泄露

6.7 电子邮件拦截

  • 案例:通过在SendGrid上声明子域拦截邮件

7. 合规报告指南

  1. 验证实际控制能力

    • 不要在索引页面发布明显内容
    • 建议在HTML注释中添加隐秘消息
    • 创建隐藏路径的HTML文件作为证明
  2. 报告内容应包含:

    • 劫持证明
    • 潜在影响分析
    • 不擅自扩大渗透测试范围(需获得许可)
  3. 报告特点:

    • 奖金通常较高
    • 重复报告概率低
    • 无需急于提交

8. 最佳实践

  • 持续监控目标变化
  • 关注所有可能的子域
  • 结合多种发现技术
  • 创新侦察方法(越奇特的方法可能发现越多)
  • 实践检验想法以提高发现率
子域名劫持全面指南 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. 自动化工作流程 从主机列表中过滤活动子域: 子域概览方法: 截图工具:EyeWitness 轻量级内容获取:meg 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. 最佳实践 持续监控目标变化 关注所有可能的子域 结合多种发现技术 创新侦察方法(越奇特的方法可能发现越多) 实践检验想法以提高发现率