常见漏洞验证121 条

Host 头处理检查

应用信任 Host 头时可能影响密码重置链接、缓存键与路由判断;检查关键链路对 Host/X-Forwarded-Host 的使用与校验。

Host 头为什么会影响安全

应用如果直接把请求里的 Host 头当作可信输入,会同时影响三件事:生成的绝对链接(密码重置邮件里的域名)、跳转地址(登录后回跳)、缓存键(共享缓存把内容存给谁)。检查方式是用自有账号触发关键链路,替换 Host 与 X-Forwarded-Host 后对比生成的链接与路由去向。边界很清楚:只用自有账号与自有链路,绝不拿他人邮箱去触发重置。

基本信息

关注点密码重置链接、跳转地址、缓存键、多租户路由
测试方法替换 Host 与 X-Forwarded-Host,对比链接域名与路由变化
前置确认先问清反向代理是否重写 Host,否则结论无法复现
边界仅使用自有测试账号与自有链路
修复方向为站点配置固定的规范域名,不信任请求头中的 Host

典型使用场景

  • 评估密码重置与邀请链接是否会泄露令牌到攻击者可控域名
  • 核查登录后的跳转地址是否允许外部域名
  • 多租户系统的路由判断:Host 是否被用作租户标识
  • 共享缓存场景下的缓存键构成分析
  • 验证修复:域名是否已改为服务端配置项而非依赖请求头

检查步骤

检查步骤
# 1. 用自有账号触发重置,记录邮件或响应中的链接域名
curl -s -X POST https://example.com/api/reset -d 'email=own-test@example.com'
# 2. 替换 Host 与转发头后重放,观察生成的链接是否跟着变化
curl -s -X POST https://example.com/api/reset \
  -H 'Host: evil.example' -H 'X-Forwarded-Host: evil.example' -d 'email=own-test@example.com'
# 3. 观察跳转类接口是否受理外部域名参数
# 4. 记录现象与影响链路;缓存相关验证先与客户约定窗口

现象与影响

现象影响处置
重置链接域名随 Host 变化令牌可能被引导到攻击者域名列为缺陷,要求改为固定配置域名
跳转地址接受外部域名钓鱼跳转与令牌泄露风险要求跳转白名单校验
缓存键未包含 Host内容可能在租户或站点之间串用评估缓存层配置,先约定验证窗口
反向代理重写 Host 后无变化结论不可复现记录代理配置,说明验证局限
修复视角:为每个站点配置固定的规范域名,应用不信任请求头中的 Host 做安全决策;转发头只在受信代理链路内使用。
不要用他人邮箱触发密码重置来验证:这既触碰他人隐私,也会给对方发送真实邮件,属于明确的越界行为。

易错点

  • 用他人邮箱做重置验证:越权触碰隐私,还会向真实用户发送邮件,影响可追溯
  • 忽略反代层对 Host 的重写:结论不可复现,客户复核时会直接质疑
  • 只测 Host 不测 X-Forwarded-Host:转发头常是被信任的旁路
  • 缓存类验证未约定窗口:可能把标记写入共享缓存,影响真实用户

数据来源与参考

  • OWASP WSTG WSTG-CONF-07
  • PortSwigger Academy(Host header)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌