host头介绍-碰撞
漏洞不是 Host 头本身,而是“应用程序错误地信任了 Host 头的内容”。
一、什么是 Host 碰撞?
Host 碰撞(也称 Host 头注入攻击)是指:
攻击者通过伪造 HTTP 请求中的 Host 头字段,欺骗服务器返回非预期的内容或行为。
在 HTTP/1.1 协议中,一个 IP 地址上可以托管多个网站(虚拟主机),服务器依靠请求头中的 Host 字段来判断用户想访问哪个网站。
例如:
Host: www.example.comHost: admin.example.com
如果服务器没有严格校验 Host 头的合法性,就可能被利用。
二、为什么会出现 Host 碰撞?
出现 Host 碰撞的主要原因包括:
-
服务器配置不当
- 未限制允许的 Host 值(如只接受特定域名)。
- 使用了通配符虚拟主机(catch-all vhost)。
-
应用程序信任 Host 头
- 应用直接使用
Host头生成重定向 URL、密码重置链接、API 回调地址等。 - 例如:
https://<Host>/reset-password?token=xxx,若 Host 可控,则可钓鱼。
- 应用直接使用
-
缓存中毒(Cache Poisoning)
- CDN 或反向代理根据 Host 头缓存内容,攻击者构造恶意 Host 可污染缓存,影响其他用户。
-
内部系统暴露
- 某些内网服务(如管理后台)仅通过 Host 头区分是否为“合法访问”,外部可通过伪造 Host 访问。

五、如何利用 Host 碰撞?
-
Web 缓存投毒(Web Cache Poisoning)
- 诱导 CDN 缓存恶意页面,影响所有用户。
-
密码重置劫持
- 若重置链接为
https://<Host>/reset?token=xxx,可让受害者点击你控制的域名链接,窃取 token。
- 若重置链接为
-
绕过访问控制
- 某些系统认为
Host: admin.local是内网访问,允许高权限操作。
- 某些系统认为
-
SSRF 辅助攻击
- 结合其他漏洞,通过 Host 头触发内部请求。
# import requests
#
# headers = {
# 'host': 'www.baidu.com'
# }
# response = requests.get('http://117.172.121.190:5080/', headers=headers)
# if int(response.status_code) == 200:
# print('碰撞成功')






那么对应bp靶场的对应的简单的测试


直接按照题目要求把host从原本的改完localhost即可

由于信任了host头导致的问题-密码重置问题
攻击者拥有一个自己控制的服务器(比如 abc123.exploit-server.net)。
由于目标网站的代码错误地信任了 HTTP 请求中的 Host 头,
当攻击者发送一个 Host: abc123.exploit-server.net 的密码重置请求时,
目标服务器就把本该指向 https://shop.com/reset?token=SECRET123 的链接,
改成了 https://abc123.exploit-server.net/reset?token=SECRET123,
并把这个“有毒”的链接发到了受害者(如 carlos)的邮箱里。


点击选项(按照顺序发包)
第二个请求请求管理员获取token

第三个配合从第二个包获取的token然后删除即可
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)