
Prova de conceito demonstrando injeção SQL numérica autenticada no ChurchCRM anterior à versão 6.7.2, permitindo manipulação de lógica para contornar cláusulas WHERE e afetar múltiplos registros. Inclui instruções de uso, detalhes do patch e recomendações de mitigação.
Autor: Mohammed Idrees Banyamer
País: Jordânia
Handle: @banyamer_security
GitHub: https://github.com/mbanyamer
Este repositório contém uma Prova de Conceito (PoC) que demonstra uma vulnerabilidade de injeção SQL numérica autenticada no ChurchCRM em versões anteriores à 6.7.2.
A vulnerabilidade permite a manipulação de lógica de consultas SQL ao injetar payloads não numéricos em parâmetros presumidos como numéricos, possibilitando a modificação não autorizada do comportamento da consulta (por exemplo, contornando cláusulas WHERE).
A vulnerabilidade existe no seguinte arquivo:
src/PaddleNumEditor.php
O parâmetro POST PerID é concatenado diretamente em múltiplas consultas SQL sem conversão de tipo ou sanitização adequada. Embora seja destinado a ser numérico, ele pode ser manipulado para alterar a lógica SQL.
Exemplo de padrão vulnerável (conceitual):
DELETE FROM multibuy_mb WHERE mb_per_ID = $PerID AND mb_fr_ID = $frID;
Ao fornecer um payload como:
0 OR 1=1 --
a lógica da cláusula WHERE pode ser contornada, potencialmente transformando uma operação de registro único em uma operação de múltiplos registros ou de tabela inteira.
Esta vulnerabilidade não foi projetada para extração cega de dados, mas para abuso de lógica que afeta operações UPDATE, DELETE ou INSERT.
Um atacante autenticado pode:
Como essa falha ocorre em lógica exclusivamente numérica, ela pode contornar a detecção básica de injeção SQL e regras de WAF.
A PoC demonstra:
Uma requisição legítima usando um PerID numérico que afeta apenas um registro.
Um payload de injeção SQL numérica elaborado:
0 OR 1=1 --
Este payload contorna as restrições da cláusula WHERE, resultando em efeitos de múltiplos registros ou de tabela inteira (por exemplo, exclusão em massa).
A PoC compara as respostas HTTP e as diferenças comportamentais para confirmar a manipulação bem-sucedida.
Instale a dependência:
pip install requests
Edite as seguintes variáveis no script da PoC:
TARGET_BASE = "http://localhost/churchcrm"
USERNAME = "admin"
PASSWORD = "yourpassword"
⚠️ Use apenas uma instância de teste local ou autorizada
python3 churchcrm_cve-2026-24854_poc.py
Para confirmar a exploração:
multibuy_mb) antes e depoisA função is_success_response() pode ser ajustada para corresponder às respostas normais vs. manipuladas da sua instância.
O problema foi corrigido no ChurchCRM 6.7.2 por meio do commit:
748f5084
Detalhes da correção:
(int) aplicada a:
PerIDNum0, prevenindo a injeçãoOs usuários devem atualizar imediatamente.
Esta vulnerabilidade foi descoberta e divulgada de forma responsável por:
Mohammed Idrees Banyamer
Jordânia
Instagram: @banyamer_security
GitHub: https://github.com/mbanyamer
Esta Prova de Conceito é fornecida apenas para fins educacionais e de segurança defensiva.
NÃO use este código contra sistemas que você não possui ou para os quais não tem permissão explícita de teste.
O autor não assume responsabilidade por uso indevido ou danos resultantes deste código.