#10247·halo

未经验证的通过缩略图进行的开放重定向 (v2.25.1)

作者: geo-chen创建于 2026年8月16日更新于 2026年8月16日

· 先决条件

系统信息

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)