文章摘要
作者发现 Discord 的媒体代理在处理请求时未对空格和换行符进行转义,导致可以向后端 GCP 存储桶注入非法 HTTP 指令。通过构造带有超长 Content-Length 的 PUT 请求,作者成功实施了 HTTP 请求走私攻击,使后续其他用户的请求被误当作攻击者上传的文件内容。利用该漏洞,攻击者能够实时监控并获取全球用户(包括私聊)正在查看的附件 URL,最终获得了 3500 美元的漏洞赏金。
社区讨论
社区讨论指出该漏洞源于 Discord 自研代理对协议实现不当,未能有效校验转发请求的完整性。有评论提到,即便是一些主流云平台的负载均衡器也曾出现过类似问题,并非罕见现象。此外,讨论中还推荐了 PortSwigger 关于 HTTP 请求走私的深度研究,帮助读者从协议层面理解此类攻击的原理。