Host攻击原理分析
字数 1268 2025-08-30 06:50:27
HTTP Host 标头攻击原理与实战指南
一、HTTP Host 标头基础
1.1 Host 标头定义
HTTP Host 标头是自 HTTP/1.1 起强制要求的请求标头,用于指定客户端想要访问的域名。例如访问 https://baidu.com 时,请求头会包含:
Host: baidu.com
1.2 Host 标头的主要用途
- 虚拟主机支持:帮助服务器识别客户端想要访问的特定网站
- 流量路由:在通过中介系统转发请求时指导路由方向
- 绝对URL生成:网站生成包含当前域名的链接时可能依赖Host值
二、HTTP Host 标头攻击原理
2.1 漏洞成因
- 盲目信任:服务器隐式信任Host标头而未验证或转义
- 配置不当:基础设施配置不安全,特别是集成第三方技术时
- 验证缺陷:验证逻辑存在缺陷或可以被绕过
- 标头覆盖:Host可能被其他注入标头(X-Forwarded-Host等)覆盖
2.2 常见攻击类型
- Host标头注入:直接注入恶意payload
- 密码重置中毒:篡改密码重置链接中的域名
- 认证绕过:通过伪造Host绕过访问控制
- Web缓存中毒:利用缓存系统与后端对Host解析的差异
- SSRF攻击:利用中间件基于Host的路由功能
三、漏洞探测技术
3.1 基本探测方法
- 提供任意不可识别域名,观察响应
- 使用Burp Suite确保请求到达预期目标(分离Host标头与目标IP)
3.2 绕过验证的技术
- 端口注入:添加非数字端口绕过域名验证
Host: vulnerable.com:badpayload - 子域名欺骗:注册以白名单域名结尾的任意域名
Host: attacker-mydomain.com - 利用不安全子域名:通过已被入侵的子域名进行攻击
3.3 模糊请求技术
- 重复Host标头:添加多个Host标头利用系统解析差异
Host: vulnerable.com Host: attacker.com - 绝对URL:在请求行使用绝对URL制造解析歧义
GET https://attacker.com/ HTTP/1.1 Host: vulnerable.com - 添加换行/空格:通过缩进标头制造解析差异
Host: vulnerable.com Host: attacker.com - 覆盖标头:使用X-Forwarded-Host等标头覆盖Host
Host: vulnerable.com X-Forwarded-Host: attacker.com
四、实战攻击案例
4.1 密码重置中毒
步骤:
- 找到密码重置功能
- 修改Host为攻击者控制的域名
- 触发密码重置请求
- 在攻击者服务器日志中捕获重置令牌
关键点:
- 确保目标应用使用Host生成重置链接
- 可能需要结合其他参数如username
4.2 认证绕过
步骤:
- 发现受限接口(如/admin)
- 收到"仅限本地访问"提示
- 修改Host为localhost
- 访问受限功能
4.3 Web缓存中毒
步骤:
- 找到缓存响应(X-Cache: hit)
- 注入恶意Host并添加缓存键参数
- 诱导用户访问被缓存的恶意响应
4.4 基于路由的SSRF
步骤:
- 确认中间件基于Host路由请求
- 替换Host为内部IP或Collaborator域名
- 探测内部网络服务
- 访问内部管理接口
4.5 通过有缺陷的请求解析实现SSRF
步骤:
- 发现Host标头无法直接修改
- 使用绝对URL绕过限制
- 扫描内部网络(如192.168.0.0/24)
- 访问内部管理接口
4.6 通过悬垂标记的密码重置中毒
步骤:
- 发现密码重置邮件包含原始密码
- 通过非数字端口注入悬垂标记
Host: vulnerable.com:'>