IPBUF安全漏洞报告
English
CVE-2026-44738 CVSS 7.7 高危

CVE-2026-44738 Grav敏感信息泄露漏洞

披露日期: 2026-05-11

漏洞信息

漏洞编号
CVE-2026-44738
漏洞类型
敏感信息泄露
CVSS评分
7.7 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Grav CMS

相关标签

敏感信息泄露GravCMSTwig沙箱绕过CWE-200CVE-2026-44738

漏洞概述

Grav是一个基于文件的Web平台。在2.0.0-rc.2版本之前,Twig沙箱白名单存在安全缺陷。拥有admin.pages角色的低权限用户可以利用该漏洞在页面正文中调用config.toArray()函数。此操作会将整个站点合并后的配置信息转储到渲染的HTML中,导致包括SMTP密码、AWS密钥、OAuth客户端密钥和API令牌在内的所有插件机密信息泄露。利用该漏洞无需管理员权限,攻击者只需具备页面编辑权限即可获取系统核心敏感数据。

技术细节

该漏洞的根本原因是Grav CMS中Twig模板引擎的沙箱安全机制配置不当。Twig沙箱旨在限制非管理员用户在模板中可访问的PHP函数和方法,以防止执行危险操作。然而,在受影响版本中,沙箱的允许列表过于宽松,允许具有admin.pages权限的用户调用全局配置对象的toArray()方法。当攻击者在页面内容中插入特定的Twig标签(如{{ config.toArray() }})时,服务器端会解析该标签。由于config对象包含了应用程序的所有配置项,包括明文或加密后的第三方服务凭证,调用toArray()会将这些对象结构转换为可读字符串并直接输出到响应的HTML源码中。攻击者无需复杂的交互,只需查看页面源代码即可窃取高价值凭据,进而接管关联的外部服务。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标网站使用的是Grav CMS,并确认其版本低于2.0.0-rc.2。
STEP 2
2. 获取低权限账号
攻击者通过注册、钓鱼或利用现有漏洞获取一个具有admin.pages角色的普通用户账号。
STEP 3
3. 注入恶意Payload
攻击者登录后台,进入页面编辑模式,在页面正文内容中插入Twig代码{{ config.toArray() }}。
STEP 4
4. 执行与数据泄露
保存并预览或发布页面,服务器渲染Twig模板并将包含敏感配置的JSON/数组输出到页面中。
STEP 5
5. 提取凭据
攻击者查看浏览器返回的HTML源代码,从中提取SMTP密码、API密钥等敏感信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
{# PoC for CVE-2026-44738: Grav Configuration Dump #} {# Usage: Embed this Twig code in a page body with 'admin.pages' privileges #} {{ config.toArray() }} {# Alternative: Dump specific secrets if known #} {{ config.system.sitename }} - {{ config.get('plugins.email.smtp.password') }}

影响范围

Grav < 2.0.0-rc.2

防御指南

临时缓解措施
如果无法立即升级,建议暂时撤销所有非管理员用户的页面编辑权限,或者在WAF(Web应用防火墙)中部署规则,拦截包含"config.toArray"或类似Twig配置调用特征的HTTP请求。同时,应密切监控服务器日志中是否存在异常的页面编辑行为。

参考链接