未经验证的通过缩略图进行的开放重定向 (v2.25.1)
· 先决条件
- 我在[发 清单(https://GitHub.com/halo-dev/halo/issues)中搜寻了有关问题。
- 这是光环计划本身的问题。 如果与项目本身无关(例如:安装和部署问题),建议在[讨论]中提交(https://GitHub.com/halo-dev/halo/discussions)。
- 我已经尝试取消所有插件的功能以排除插件作为问题的原因.
- 如果存在插件和主题的问题,请在相应的插件和主题寄存器中提交.
系统信息
2026年6月15日通过电子邮件报道.
项目操作方法是什么?
ZZ2ZZ
发生了什么事?
我写信报告在Halo v2.25.1(最新版)中,
** 受影响的终点:**
(原始内容存档于2018-03-25). GET/apis/api.storage.halo.run/v1alpha1/thummbnails/-/vi-uri?uri=&i>&i>&i>&i>&i=<i=<i|i|i|i|i|i|i|i|l|l>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>i>.
** 原因:**
Thumbnail Endpoint.getThumbnailByUri'将原始的'uri'查询参数直接传递到'DefaultThumbnailService.get(URI, ThumbnailSize)'. 当找不到匹配附件时, 端点会回到 .default IfEmpty( uri.get ())' , 并将 302 Found' 发回原未验证的 URI 。 匿名角色明确给予api.storage.halo.run/thumbnails/via-uri'的“权限”,因此不需要认证。
- 重复步骤
** 概念证明(对照光环/光环:2.25.1):**
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢? 开始光环 Docker 跑-d-取名光环-poc-p 8090:8090光环/卤:2.25.1 睡觉 15
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0}触发未认证的开口重定向 卷起-v"http://localhost:8090/apis/api.storage.halo.run/v1alpha1/thumbnails/--/via-uri?uri=https://sattacker.example.com/&ssize=m".
预期反应:
< HTTP/1.1 302 找到
< 地点:https://sattacker.example.com/
** 影响:**
任何访客都可以在合法的光环域上编造一条连接线,转而前往攻击者控制的地盘,从而可以进行钓鱼运动并有可能收获OAuth的令牌,如果光环域被外部身份提供者信任的话.
** 建议的固定号:**
在发布重定向之前,验证已解决的URI要么是应用程序内的相对路径,要么与配置的Halo外部URL共享相同的出处. 如果 URI 指的是未注册的外部主机,则返回400 Bad Request.
QQ 相关日志输出
贝壳
补充资料
无回复( N)
内容来源: halo-dev/halo