用途:本技能是一套 HTTP Host Header 攻击方法论,用于在授权安全测试中评估应用对 Host 头的信任带来的风险,适用场景包括密码重置、缓存机制、反向代理、虚拟主机与重定向功能。
主要能力:
- 密码重置投毒:应用信任 Host 生成重置链接时,替换 Host 为攻击者域名,使受害者邮件中的 reset token 指向恶意服务器;直接替换被拒(400/403)时可尝试 X-Forwarded-Host、端口注入、绝对 URI、双 Host、换行符注入等绕过变体。
- Web 缓存投毒:当响应内容受 Host 值影响且缓存键不含该头时,投毒响应可分发给所有用户;检测到 Host 注入影响响应后应进一步评估缓存投毒利用链。
- 通过 Host 路由的 SSRF:反向代理据 Host 决定后端,可尝试内部虚拟主机名或云元数据地址(如 169.254.169.254);绝对 URI 绕过可用于 ACL 与路由不一致的场景。
- 虚拟主机枚举:用 ffuf 以 Host 头 fuzz 发现隐藏内部站点;典型名称包括 admin、staging、dev、internal、jenkins、grafana 等。
- 七种绕过技术:X-Forwarded-Host、双 Host、绝对 URI、Host 端口注入、其他 Override Header(X-Host、X-Forwarded-Server、X-HTTP-Host-Override、Forwarded)、CRLF 注入、Tab/空格。
- 框架特定行为:Django(ALLOWED_HOSTS 不覆盖 X-Forwarded-Host,风险高)、Rails(X-Forwarded-Host 优先,风险高)、Laravel、Spring、Express/Node、ASP.NET 各有差异。
- Connection State 攻击:Keep-Alive 下部分代理仅在首个请求验证 Host。
用法:按决策树逐步排查——先判断是否存在 Host 注入点,再依密码重置、缓存、多后端、连接复用等分支测试;检测命令保留原始形式,如 curl -X POST https://target.com/forgot-password -H "Host: evil-server.com" -d "email=victim@target.com",以及 ffuf -u https://target.com -H "Host: FUZZ.target.com" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -fs <default-size>。
限制:仅限授权测试;具体有效性取决于目标配置,资料未提供各框架的完整利用成功率与影响范围,需结合实际测试判断。