
Proof-of-Concept, der eine authentifizierte numerische SQL-Injection in ChurchCRM vor 6.7.2 demonstriert, die eine Logikmanipulation ermöglicht, um WHERE-Klauseln zu umgehen und mehrere Datensätze zu beeinflussen. Enthält Nutzungshinweise, Patch-Details und Empfehlungen zur Schadensbegrenzung.
Autor: Mohammed Idrees Banyamer
Land: Jordanien
Handle: @banyamer_security
GitHub: https://github.com/mbanyamer
Dieses Repository enthält einen Proof of Concept (PoC), der eine authentifizierte numerische SQL-Injection-Schwachstelle in ChurchCRM-Versionen vor 6.7.2 demonstriert.
Die Schwachstelle ermöglicht die Manipulation der Logik von SQL-Abfragen, indem nicht-numerische Payloads in Parameter injiziert werden, die als numerisch angenommen werden. Dies ermöglicht eine unbefugte Änderung des Abfrageverhaltens (z. B. Umgehung von WHERE-Klauseln).
Die Schwachstelle existiert in der folgenden Datei:
src/PaddleNumEditor.php
Der POST-Parameter PerID wird direkt in mehrere SQL-Abfragen ohne ordnungsgemäße Typumwandlung oder Bereinigung eingefügt. Obwohl er als numerisch vorgesehen ist, kann er manipuliert werden, um die SQL-Logik zu verändern.
Beispiel für ein verwundbares Muster (konzeptionell):
DELETE FROM multibuy_mb WHERE mb_per_ID = $PerID AND mb_fr_ID = $frID;
Durch die Bereitstellung einer Payload wie:
0 OR 1=1 --
kann die Logik der WHERE-Klausel umgangen werden, wodurch eine Einzel-Datensatz-Operation möglicherweise in eine Mehrfach- oder Volltabellen-Operation umgewandelt wird.
Diese Schwachstelle ist nicht für die blinde Datenextraktion ausgelegt, sondern für Logik-Missbrauch, der UPDATE-, DELETE- oder INSERT-Operationen betrifft.
Ein authentifizierter Angreifer kann:
Da dieser Fehler in rein numerischer Logik auftritt, kann er grundlegende SQL-Injection-Erkennung und WAF-Regeln umgehen.
Der PoC demonstriert:
Eine legitime Anfrage mit einer numerischen PerID, die nur einen Datensatz betrifft.
Eine präparierte numerische SQL-Injection-Payload:
0 OR 1=1 --
Diese Payload umgeht die Einschränkungen der WHERE-Klausel, was zu Mehrfach- oder Volltabellen-Effekten führt (z. B. Massenlöschung).
Der PoC vergleicht HTTP-Antworten und Verhaltensunterschiede, um die erfolgreiche Manipulation zu bestätigen.
Abhängigkeit installieren:
pip install requests
Bearbeiten Sie die folgenden Variablen im PoC-Skript:
TARGET_BASE = "http://localhost/churchcrm"
USERNAME = "admin"
PASSWORD = "yourpassword"
⚠️ Verwenden Sie nur eine lokale oder autorisierte Testinstanz
python3 churchcrm_cve-2026-24854_poc.py
Zur Bestätigung der Ausnutzung:
multibuy_mb) vor und nachherDie Funktion is_success_response() kann angepasst werden, um normale vs. manipulierte Antworten Ihrer Instanz abzugleichen.
Das Problem wurde in ChurchCRM 6.7.2 über den folgenden Commit behoben:
748f5084
Details zum Fix:
(int)-Typumwandlung angewendet auf:
PerIDNum0 erzwungen, wodurch Injection verhindert wirdBenutzer sollten sofort aktualisieren.
Diese Schwachstelle wurde entdeckt und verantwortungsvoll offengelegt von:
Mohammed Idrees Banyamer
Jordanien
Instagram: @banyamer_security
GitHub: https://github.com/mbanyamer
Dieser Proof of Concept wird nur für Bildungs- und defensive Sicherheitszwecke bereitgestellt.
Verwenden Sie diesen Code NICHT gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Testberechtigung haben.
Der Autor übernimmt keine Haftung für Missbrauch oder Schäden, die aus diesem Code resultieren.