HOST 碰撞漏洞原理+无缝集成一把梭哈
字数 2109 2025-08-29 08:30:06
HOST碰撞漏洞原理与利用完全指南
一、反向代理基础
1.1 反向代理概念
反向代理是一种服务器配置,它代理客户端的请求并将其转发到一个或多个后端服务器。在这种模式下:
- 客户端不知道实际的后端服务器地址
- 所有请求由反向代理服务器接收并转发
- 处理结果通过反向代理返回给客户端
访问流程对比:
- 无反向代理:客户端 → 请求 → 服务器 → 响应 → 客户端
- 有反向代理:客户端 → 请求 → 反向代理 → 服务器 → 响应 → 反向代理 → 客户端
关键区别:有反向代理时不能直接通过IP访问服务器,域名DNS解析后也不是真实IP。
1.2 主机与Host关系
单个Web服务器可以托管多个网站/应用,这些网站可能:
- 拥有不同域名
- 共享同一个IP地址
- 服务器通过HTTP请求中的Host头部字段确定要访问的网站
服务器配置示例:
Nginx:
- 配置文件:
/etc/nginx/nginx.conf或/etc/nginx/sites-available/default - 使用
server_name指令绑定多个域名
Apache:
- 配置文件:
/etc/httpd/httpd.conf或/etc/apache2/sites-available/000-default.conf - 在
VirtualHost配置块中使用ServerName和ServerAlias指令绑定域名
二、DNS解析机制
DNS(Domain Name System)实现域名与IP地址的相互映射,解析步骤:
- 浏览器缓存检查
- 本地hosts文件检查(HOST碰撞的修改点)
- 本地区域域名服务器(LDNS)
- 上级域名服务器(递归查询)
三、HOST碰撞漏洞原理
3.1 漏洞场景
场景一:
- 网站对外主域名:www.test.com
- 内网存在多个业务系统绑定内网域名(如manage.test.com)
- 公网DNS无法解析内网域名
- 访问条件:
- 知道内网域名和对应IP
- 本地hosts文件写入绑定关系
- 导致"隐形资产"问题
场景二:
- 正常配置:外部域名(oa.admin.com)解析到反向代理IP(210.110.110.110)
- 域名删除:管理员删除oa.admin.com的DNS解析
- 反向代理未删除:配置仍保留
- 攻击者:
- 收集信息猜测域名和IP
- 修改本地hosts文件绕过DNS解析
- 访问本应禁用的内部系统
场景三:
- admin.example.com未公开但与www.example.com共享IP
- 通过reverse IP lookup发现该域名
- 直接访问目标IP并修改Host头
- 成功访问后台管理系统
3.2 漏洞复现
实验环境:
- 虚拟机安装Nginx作为反向代理
- 本机运行Tomcat服务(192.168.3.101:8081)
- 虚拟机IP(192.168.44.133),域名www.test1.com
Nginx配置:
server {
listen 80;
server_name _; # 匹配任意域名
return 400; # IP访问返回400
}
server {
listen 80;
server_name www.test1.com; # 匹配特定域名
location / {
proxy_pass http://192.168.3.101:8081; # 转发到Tomcat
}
}
访问测试:
- 访问192.168.44.133 → 返回400
- 访问www.test1.com(无DNS解析)→ 访问不到
- 直接访问IP并修改Host头为www.test1.com → 成功访问Tomcat
四、漏洞利用方法
4.1 信息收集
需要收集:
- 可疑IP或域名
- 域名解析指向内网IP的情况
- IP访问时的响应特征:
- 4xx状态码(400/403/404)
- 5xx错误
- 200状态但无响应
4.2 利用工具
工具一:HostCollision
项目地址:https://github.com/pmiaowu/HostCollision
目录结构:
HostCollision
├── HostCollision.jar (主程序)
├── config.yml (配置文件)
├── dataSource
│ ├── ipList.txt (目标IP,一行一个)
│ └── hostList.txt (目标Host,一行一个)
使用步骤:
- 修改ipList.txt和hostList.txt
- 运行程序
- 结果生成在根目录的"年-月-日_8位随机数.csv/txt"文件中
自定义修改:
- 可修改代码固定输出文件名(如改为result.csv)
- 处理结果时建议先删除旧文件再生成新文件
工具二:Hosts_scan
项目地址:https://github.com/fofapro/Hosts_scan
特点:
- Python编写
- 较长时间未更新
4.3 集成开发建议
后端逻辑:
- 文件处理:运行前删除旧结果文件
- 运行工具进行HOST碰撞
- 监控新文件生成作为完成标志
- 使用正则处理结果数据
前端展示:
- 实时刷新状态
- 优化结果显示便于复制
- 显示处理进度
五、防御措施
-
反向代理配置:
- 严格限制允许的Host头
- 无效Host请求返回统一错误页面
-
DNS管理:
- 及时清理不再使用的DNS记录
- 监控异常的DNS查询
-
访问控制:
- 内网服务实施网络层访问控制
- 关键系统使用双向认证
-
监控审计:
- 记录带有非常见Host头的请求
- 定期审计服务器配置
-
安全意识:
- 避免在公网暴露内网域名
- 及时回收测试/临时环境的配置
六、总结
HOST碰撞漏洞利用的是服务器配置与DNS管理之间的不一致性,通过手动指定Host头绕过访问限制。防御关键在于严格的配置管理和多层访问控制。自动化工具可以大大提高漏洞检测效率,但使用时应注意结果处理和误报过滤。