作者:Mohammed Idrees Banyamer
国家:约旦
代号:@banyamer_security
GitHub:https://github.com/mbanyamer
本仓库包含一个概念验证(PoC),演示了 ChurchCRM 6.7.2 之前版本中存在的认证数字型 SQL 注入漏洞。
该漏洞允许通过向本应为数字型的参数注入非数字载荷,实现对 SQL 查询的逻辑操纵,从而未经授权地修改查询行为(例如,绕过 WHERE 子句)。
该漏洞存在于以下文件中:
src/PaddleNumEditor.php
POST 参数 PerID 被直接拼接进多个 SQL 查询中,未进行适当的类型转换或清理。尽管该参数本应为数字型,但可以被操纵以改变 SQL 逻辑。
易受攻击的模式示例(概念性):
DELETE FROM multibuy_mb WHERE mb_per_ID = $PerID AND mb_fr_ID = $frID;
通过提供如下载荷:
0 OR 1=1 --
可以绕过 WHERE 子句逻辑,可能将单记录操作转变为多记录或全表操作。
该漏洞并非用于盲注数据提取,而是用于逻辑滥用,影响 UPDATE、DELETE 或 INSERT 操作。
经过认证的攻击者可以:
由于该缺陷发生在纯数字逻辑中,可能绕过基本的 SQL 注入检测和 WAF 规则。
该 PoC 演示了:
使用数字型 PerID 的合法请求,仅影响一条记录。
精心构造的数字型 SQL 注入载荷:
0 OR 1=1 --
该载荷绕过 WHERE 子句限制,导致多记录或全表影响(例如,批量删除)。
该 PoC 比较 HTTP 响应和行为差异,以确认操纵成功。
安装依赖:
pip install requests
在 PoC 脚本中编辑以下变量:
TARGET_BASE = "http://localhost/churchcrm"
USERNAME = "admin"
PASSWORD = "yourpassword"
⚠️ 仅使用本地或授权的测试实例
python3 churchcrm_cve-2026-24854_poc.py
确认利用成功:
multibuy_mb)前后变化is_success_response() 函数可根据您实例的正常响应与操纵响应进行调整。
该问题已在 ChurchCRM 6.7.2 中通过以下提交修复:
748f5084
修复详情:
(int) 类型转换:
PerIDNum0,从而防止注入用户应立即升级。
该漏洞由以下人员发现并负责任地披露:
Mohammed Idrees Banyamer
约旦
Instagram:@banyamer_security
GitHub:https://github.com/mbanyamer
本概念验证仅用于教育和防御性安全目的。
请勿将本代码用于您不拥有或未经明确许可测试的系统。
作者对因使用本代码而导致的滥用或损害不承担任何责任。