Grav vulnerable to Path traversal / arbitrary YAML write via user creation leading to Account Takeover / System Corruption · CVE-2025-66295 · GitHub Advisory Database · GitHub
漏洞详情
包 composer getgrav/grav (Composer)
受影响版本 < 1.8.0-beta.27
已修复版本 1.8.0-beta.27
描述
概述
当拥有用户创建权限的管理员通过Admin UI创建新用户,并提交一个包含路径遍历序列(例如 ..\Nijat 或 ../Nijat)的用户名时,Grav会将账户的YAML文件写入到 user/accounts/ 目录之外的意外路径。写入的YAML可以包含账户字段,如电子邮件、全名、twofa_secret和哈希密码。在测试中,攻击者能够使Admin UI将任意内容写入到任意的.yaml文件中(包括 email.yaml、system.yaml 或其他站点YAML文件如 admin.yaml)——这证明了通过Admin UI可以实现任意的YAML写入/覆盖。
示例观察到的由Admin UI写入的内容(测试数据):
|
|
复现步骤
- 以管理员身份登录Grav Admin UI。
- 创建新用户并填写以下值(示例):
a. 用户名:
..\POC-TOKEN-2025-09-29b. 全名:POC-TOKEN-2025-09-29c. 电子邮件:poc+2025-09-29@example.testd. 密码:(任意密码) - 观察到一个包含POC-TOKEN的YAML文件被写入到
user/accounts/目录之外(例如在user/accounts/的父目录中)。
影响
- 配置损坏/服务中断:用攻击者控制的YAML覆盖
system.yaml、email.yaml或插件配置文件(即使仅限于账户YAML中存在的字段)可能会破坏功能、禁用服务或导致配置错误,需要从备份中恢复。 - 账户接管:任何拥有创建用户权限的用户,只需创建一个名为
..\accounts\USERNAME_OF_VICTIM的新用户,就可以修改其他用户的电子邮件和密码。
概念验证 https://github.com/user-attachments/assets/cf503d74-f765-4031-8e22-71f6b3630847
参考
- GHSA-h756-wh59-hhjv
- https://nvd.nist.gov/vuln/detail/CVE-2025-66295
- getgrav/grav@3462d94
严重性
严重等级:高
CVSS 总分:8.8 / 10
CVSS v3 基础指标
- 攻击向量 (AV):网络 (N)
- 攻击复杂度 (AC):低 (L)
- 所需权限 (PR):低 (L)
- 用户交互 (UI):无 (N)
- 作用域 (S):未更改 (U)
- 机密性影响 (C):高 (H)
- 完整性影响 (I):高 (H)
- 可用性影响 (A):高 (H)
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
弱点
弱点 CWE-22 不恰当的限制目录路径名(路径遍历) 产品使用外部输入来构造一个旨在标识位于受限父目录下的文件或目录的路径名,但产品未能正确中和路径名中的特殊元素,这些元素可能导致路径名解析到受限目录之外的位置。在MITRE上了解更多。
标识符
- CVE ID: CVE-2025-66295
- GHSA ID: GHSA-h756-wh59-hhjv
源代码
getgrav/grav
致谢
报告者:NicatAliyevh