本项目包含一个非破坏性验证器,用于确认授权的 Camaleon CMS 实例是否应用了 2.9.3 版本中引入的授权机制。
该问题影响 Camaleon CMS 2.9.2 及之前版本中的 POST /admin/media/crop。拥有 :manage, :media 但没有 :manage, :users 的用户,可以在 saved_avatar 中提供另一个用户的 ID,从而在其授权对象之外写入头像。修复要求对任何非当前用户的目标都必须具有 :manage, :users。
该验证器发送单个经过身份验证的 POST 请求,其中包含:
saved_avatar;cp_img_path。在修复后的版本中,授权发生在任何文件处理之前,应用程序会以重定向响应(通常为 302)。在旧版本中,请求不会在此阶段被拒绝,结果仅为 INCONCLUSIVE:本程序不发送图像、不读取数据,也不尝试修改任何头像。
在同一站点上创建两个测试账户:
:manage, :media 但没有 :manage, :users;获取第一个账户的会话 cookie 并执行:
go test ./...
go run . \
--i-own-this-lab \
--url http://127.0.0.1:3000 \
--cookie '_session_id=COLOQUE_A_SESSAO_DE_TESTE_AQUI' \
--nonself-user-id 42
PROTECTED 表示端点在处理图像路径之前拒绝了该操作。INCONCLUSIVE 要求验证已安装的版本并进行更新;这不是对漏洞利用的确认。
更新到 Camaleon CMS 2.9.3 或更高版本。补丁为 c143e145caa600947e70a240e87f2fed889149d3。