
Proof-of-concept che dimostra un'iniezione SQL numerica autenticata in ChurchCRM precedente alla versione 6.7.2, consentendo la manipolazione della logica per bypassare le clausole WHERE e influenzare più record. Include istruzioni di utilizzo, dettagli sulla patch e raccomandazioni di mitigazione.
Autore: Mohammed Idrees Banyamer
Paese: Giordania
Handle: @banyamer_security
GitHub: https://github.com/mbanyamer
Questa repository contiene una Proof of Concept (PoC) che dimostra una vulnerabilità di SQL injection numerica autenticata in ChurchCRM nelle versioni precedenti alla 6.7.2.
La vulnerabilità consente la manipolazione logica delle query SQL iniettando payload non numerici in parametri considerati numerici, permettendo modifiche non autorizzate al comportamento delle query (ad esempio, bypassando le clausole WHERE).
La vulnerabilità è presente nel seguente file:
src/PaddleNumEditor.php
Il parametro POST PerID viene concatenato direttamente in diverse query SQL senza un corretto type casting o sanitizzazione. Sebbene sia previsto come numerico, può essere manipolato per alterare la logica SQL.
Esempio di pattern vulnerabile (concettuale):
DELETE FROM multibuy_mb WHERE mb_per_ID = $PerID AND mb_fr_ID = $frID;
Fornendo un payload come:
0 OR 1=1 --
la logica della clausola WHERE può essere bypassata, trasformando potenzialmente un'operazione su singolo record in un'operazione multi-record o sull'intera tabella.
Questa vulnerabilità non è progettata per l'estrazione cieca di dati, ma per l'abuso logico che interessa operazioni UPDATE, DELETE o INSERT.
Un attaccante autenticato può:
Poiché questa falla si verifica in logica solo numerica, può bypassare i controlli di base per la rilevazione di SQL injection e le regole WAF.
La PoC dimostra:
Una richiesta legittima che utilizza un PerID numerico e interessa un solo record.
Un payload di SQL injection numerica appositamente costruito:
0 OR 1=1 --
Questo payload bypassa le restrizioni della clausola WHERE, producendo effetti multi-record o sull'intera tabella (ad esempio, eliminazione di massa).
La PoC confronta le risposte HTTP e le differenze comportamentali per confermare la manipolazione riuscita.
Installa la dipendenza:
pip install requests
Modifica le seguenti variabili nello script PoC:
TARGET_BASE = "http://localhost/churchcrm"
USERNAME = "admin"
PASSWORD = "yourpassword"
⚠️ Utilizza solo un'istanza locale o autorizzata per i test
python3 churchcrm_cve-2026-24854_poc.py
Per confermare lo sfruttamento:
multibuy_mb) prima e dopoLa funzione is_success_response() può essere regolata per adattarsi alle risposte normali vs manipolate della tua istanza.
Il problema è stato corretto in ChurchCRM 6.7.2 tramite il commit:
748f5084
Dettagli della correzione:
(int) applicato a:
PerIDNum0, prevenendo l'iniezioneGli utenti dovrebbero aggiornare immediatamente.
Questa vulnerabilità è stata scoperta e divulgata in modo responsabile da:
Mohammed Idrees Banyamer
Giordania
Instagram: @banyamer_security
GitHub: https://github.com/mbanyamer
Questa Proof of Concept è fornita solo per scopi educativi e di sicurezza difensiva.
Non utilizzare questo codice contro sistemi di cui non sei proprietario o per i quali non hai esplicita autorizzazione al test.
L'autore non si assume alcuna responsabilità per usi impropri o danni derivanti da questo codice.