如何HOST碰撞挖掘隐蔽资产
字数 1583 2025-08-22 12:22:54

HOST碰撞挖掘隐蔽资产技术详解

一、反向代理基础概念

1.1 反向代理定义

反向代理是一种服务器配置,它代理客户端的请求并将其转发到一个或多个后端服务器。在这种模式下:

  • 客户端不知道实际的后端服务器地址
  • 所有请求由反向代理服务器接收并转发
  • 处理结果通过反向代理返回给客户端

1.2 反向代理与正向代理的区别

特性 正向代理 反向代理
代理对象 代理客户端 代理服务器
客户端感知 知道代理存在 不知道后端服务器
主要用途 访问外部资源 隐藏后端服务器

1.3 反向代理的典型应用场景

  1. 负载均衡
  2. 提升安全性
  3. 缓存静态内容
  4. 隐藏后端服务器架构

二、反向代理工作原理示例

2.1 无反向代理的情况

  • 客户端直接访问 a.test.com
  • DNS解析直接指向服务器真实IP 210.120.1.111
  • 客户端与服务器直接交互

2.2 有反向代理的情况

  1. 客户端请求 a.test.com
  2. DNS解析指向反向代理服务器IP 210.120.1
  3. 反向代理检查配置,发现 a.test.com 对应 210.120.1.111
  4. 请求转发到后端服务器 210.120.1.111
  5. 响应通过反向代理返回客户端

关键点

  • 直接访问服务器真实IP将无法获取内容
  • 只能通过正确域名访问
  • DNS解析显示的是反向代理服务器IP

三、HOST碰撞原理

3.1 产生条件

HOST碰撞是反向代理配置不当导致的漏洞,典型场景:

  1. 初始配置:

    • 域名 oa.admin.com 解析到反向代理 210.110.110.110
    • 反向代理配置将 oa.admin.com 绑定到内网 192.168.1.1
  2. 维护操作:

    • 删除 oa.admin.com 的DNS解析记录
    • 但反向代理服务器上的绑定配置未删除

3.2 漏洞利用原理

  • 虽然DNS解析被删除,但反向代理绑定仍然有效
  • 攻击者可手动将域名解析到反向代理IP(通过hosts文件)
  • 反向代理仍会将请求转发到内网服务器

四、HOST碰撞利用方法

4.1 利用步骤

  1. 信息收集阶段

    • 收集反向代理服务器的IP地址
    • 收集解析异常的域名(可能指向内网的域名)
  2. 碰撞测试

    • 手动将域名解析为收集到的IP
    • 采用笛卡尔积方式进行两两匹配测试
    • 直到发现能访问到隐藏系统的组合

4.2 自动化工具

  1. HostCollision

    • GitHub地址:https://github.com/pmiaowu/HostCollision
    • 功能:自动化检测HOST碰撞漏洞
  2. Hosts_scan

    • GitHub地址:https://github.com/fofapro/Hosts_scan
    • 功能:批量扫描HOST碰撞可能性

4.3 辅助脚本示例

import socket

def check_domain_resolution(domain):
    try:
        ip = socket.gethostbyname(domain)
        return True
    except socket.gaierror:
        return False

def main():
    input_file = 'subdomain.txt'
    output_file = 'result.txt'
    
    with open(input_file, 'r') as file:
        domains = [line.strip() for line in file.readlines()]
    
    unresolved_domains = []
    for domain in domains:
        if not check_domain_resolution(domain):
            print(f"无法解析的域名: {domain}")
            unresolved_domains.append(domain)
    
    if unresolved_domains:
        with open(output_file, 'w') as result_file:
            for domain in unresolved_domains:
                result_file.write(f"{domain}\n")
        print(f"解析异常的域名已写入 {output_file}")
    else:
        print("所有域名均能解析")

if __name__ == '__main__':
    main()

五、Nginx反向代理配置示例

server {
    listen 80;
    server_name a.test.com;  # 设置域名
    
    location / {
        proxy_pass http://210.120.1.111;  # 设置反向代理目标地址
        proxy_set_header Host $host;  # 保留原始请求头的Host
        proxy_set_header X-Real-IP $remote_addr;  # 设置真实客户端IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;  # 传递协议
    }
    
    # 可选HTTPS配置
    # listen 443 ssl;
    # ssl_certificate /path/to/certificate.crt;
    # ssl_certificate_key /path/to/private.key;
}

六、HOST碰撞修复方案

6.1 DNS配置检查

  • 确保DNS记录指向正确的IP地址
  • 检查/etc/hosts文件,删除重复或错误的映射
    cat /etc/hosts
    

6.2 虚拟主机配置检查

确保Nginx/Apache配置中:

  • 每个server_name唯一
  • 或使用通配符避免冲突
    server {
        listen 80;
        server_name *.example.com;
        root /var/www/example;
    }
    

6.3 反向代理配置检查

  1. 确保不同后端服务不使用相同端口或路径
  2. 删除不再使用的域名绑定配置
  3. 定期审计反向代理配置

6.4 完整修复流程

  1. 删除不再需要的DNS记录
  2. 同步删除反向代理服务器上的对应配置
  3. 重启反向代理服务使配置生效
  4. 进行验证测试确保修复完成

七、渗透测试中的识别特征

在渗透测试中,以下情况可能表明存在反向代理:

  • 多个不同域名解析到相同IP
  • 直接访问IP返回默认界面(Apache/Nginx默认页)
  • 出现404、403、400或空白界面
  • IP访问与域名访问返回内容不同
HOST碰撞挖掘隐蔽资产技术详解 一、反向代理基础概念 1.1 反向代理定义 反向代理是一种服务器配置,它代理客户端的请求并将其转发到一个或多个后端服务器。在这种模式下: 客户端不知道实际的后端服务器地址 所有请求由反向代理服务器接收并转发 处理结果通过反向代理返回给客户端 1.2 反向代理与正向代理的区别 | 特性 | 正向代理 | 反向代理 | |------|---------|---------| | 代理对象 | 代理客户端 | 代理服务器 | | 客户端感知 | 知道代理存在 | 不知道后端服务器 | | 主要用途 | 访问外部资源 | 隐藏后端服务器 | 1.3 反向代理的典型应用场景 负载均衡 提升安全性 缓存静态内容 隐藏后端服务器架构 二、反向代理工作原理示例 2.1 无反向代理的情况 客户端直接访问 a.test.com DNS解析直接指向服务器真实IP 210.120.1.111 客户端与服务器直接交互 2.2 有反向代理的情况 客户端请求 a.test.com DNS解析指向反向代理服务器IP 210.120.1 反向代理检查配置,发现 a.test.com 对应 210.120.1.111 请求转发到后端服务器 210.120.1.111 响应通过反向代理返回客户端 关键点 : 直接访问服务器真实IP将无法获取内容 只能通过正确域名访问 DNS解析显示的是反向代理服务器IP 三、HOST碰撞原理 3.1 产生条件 HOST碰撞是反向代理配置不当导致的漏洞,典型场景: 初始配置: 域名 oa.admin.com 解析到反向代理 210.110.110.110 反向代理配置将 oa.admin.com 绑定到内网 192.168.1.1 维护操作: 删除 oa.admin.com 的DNS解析记录 但反向代理服务器上的绑定配置未删除 3.2 漏洞利用原理 虽然DNS解析被删除,但反向代理绑定仍然有效 攻击者可手动将域名解析到反向代理IP(通过hosts文件) 反向代理仍会将请求转发到内网服务器 四、HOST碰撞利用方法 4.1 利用步骤 信息收集阶段 : 收集反向代理服务器的IP地址 收集解析异常的域名(可能指向内网的域名) 碰撞测试 : 手动将域名解析为收集到的IP 采用笛卡尔积方式进行两两匹配测试 直到发现能访问到隐藏系统的组合 4.2 自动化工具 HostCollision : GitHub地址:https://github.com/pmiaowu/HostCollision 功能:自动化检测HOST碰撞漏洞 Hosts_ scan : GitHub地址:https://github.com/fofapro/Hosts_ scan 功能:批量扫描HOST碰撞可能性 4.3 辅助脚本示例 五、Nginx反向代理配置示例 六、HOST碰撞修复方案 6.1 DNS配置检查 确保DNS记录指向正确的IP地址 检查 /etc/hosts 文件,删除重复或错误的映射 6.2 虚拟主机配置检查 确保Nginx/Apache配置中: 每个 server_name 唯一 或使用通配符避免冲突 6.3 反向代理配置检查 确保不同后端服务不使用相同端口或路径 删除不再使用的域名绑定配置 定期审计反向代理配置 6.4 完整修复流程 删除不再需要的DNS记录 同步删除反向代理服务器上的对应配置 重启反向代理服务使配置生效 进行验证测试确保修复完成 七、渗透测试中的识别特征 在渗透测试中,以下情况可能表明存在反向代理: 多个不同域名解析到相同IP 直接访问IP返回默认界面(Apache/Nginx默认页) 出现404、403、400或空白界面 IP访问与域名访问返回内容不同