
Proof-of-concept, демонстрирующий аутентифицированную числовую SQL-инъекцию в ChurchCRM до версии 6.7.2, позволяющую манипулировать логикой для обхода условий WHERE и воздействия на несколько записей. Включает инструкции по использованию, сведения об исправлении и рекомендации по смягчению последствий.
Автор: Mohammed Idrees Banyamer
Страна: Иордания
Псевдоним: @banyamer_security
GitHub: https://github.com/mbanyamer
Этот репозиторий содержит Proof of Concept (PoC), демонстрирующий аутентифицированную числовую SQL-инъекцию в ChurchCRM версиях до 6.7.2.
Уязвимость позволяет манипулировать логикой 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
Этот Proof of Concept предоставлен только для образовательных целей и целей защитной безопасности.
НЕ используйте этот код против систем, которыми вы не владеете или на тестирование которых у вас нет явного разрешения.
Автор не несёт ответственности за неправомерное использование или ущерб, возникший в результате использования этого кода.