Index
HTTP Host 标头中毒
描述
HTTP Host 标头指定了 HTTP 客户端希望访问的域名。作为 HTTP/1.1 标准的一部分,它是强制性的。
例如,要访问域名 www.ostorlab.co,HTTP 客户端将发送包含 Host 标头的以下请求:
http request
GET / HTTP/1.1
Host: www.ostorlab.co
Host 标头对于启用将流量路由到虚拟主机至关重要。
以不安全方式处理 Host 标头的应用程序容易受到多类漏洞的影响,例如:
- 服务端请求伪造 (SSRF)
- Web 缓存中毒
- 不安全的重定向
Host 标头中毒可能以多种方式体现:
- 任意 Host 标头反射
- 重复的 Host 标头注入
- 绝对 URL 注入并忽略 Host 标头值
- 通过添加换行符进行标头注入
- 注入常见的 Host 覆盖标头,如
X-Host、X-Forwarded-Server、X-HTTP-Host-Override
建议
防止 Host 标头攻击将需要进行多项检查,这些检查取决于应用程序的目标架构,例如对虚拟主机的支持、反向代理的使用以及在支持额外路由标头的某些云环境中的存在。
防止这些攻击的建议包括:
- 避免在应用程序逻辑中使用
Host标头值。 - 实施可接受值的白名单检查;大多数 Web 框架通常支持此功能。
- 禁用主机覆盖标头;这取决于架构中部署的中间组件。常见的检查位置包括反向代理和 Kubernetes Ingress 控制器。
链接
标准
- PCI_STANDARDS:
- REQ_6_2
- REQ_6_3
- REQ_6_4
- REQ_11_3
- HIPAA_CONTROLS:
- SECURITY221
- SECURITY212
- SECURITY213