
CVE-2025-68400 - ChurchCRM vulnerable to time-based blind SQL Injection in ConfirmReportEmail.php
| Поле | Подробности |
|---|---|
| Идентификатор CVE | CVE-2025-68400 |
| Критичность | КРИТИЧЕСКАЯ |
| Уведомление | Посмотреть уведомление |
| Обнаружено | Lukasz Rybak |
Критическая уязвимость SQL-инъекции существует в устаревшей конечной точке /Reports/ConfirmReportEmail.php в ChurchCRM 6.3.0. Хотя функция была удалена из пользовательского интерфейса, файл остается развернутым и доступным напрямую по URL. Это классический случай мертвого, но доступного кода. Любой аутентифицированный пользователь, в том числе с нулевыми правами, может эксплуатировать SQL-инъекцию через параметр familyId.
Проблема находится в:
src/Reports/ConfirmReportEmail.php
Уязвимый код (строки 82–83):
if (InputUtils::legacyFilterInput($_GET['familyId'], 'int')) {
$sSubQuery = ' and fam_id in (' . $_GET['familyId'] . ') ';
}
Почему это уязвимо:
legacyFilterInput() полностью игнорируется.$_GET['familyId'] напрямую конкатенируется в SQL-запрос.Мертвая, но доступная конечная точка:
/Reports/ConfirmReportEmail.php?familyId=<value>
Нормальное поведение:
302 Redirect → /v2/family/<id>&PDFEmailed=
Вредоносные полезные нагрузки, содержащие ) или --, нарушают логику перенаправления и выполняют уязвимый SQL.
Даже пользователь с нулевыми правами может эксплуатировать уязвимость.
Полезная нагрузка SLEEP(5) надежно задерживает ответ, что подтверждает выполнение SQL.
Аутентифицированный пользователь посещает:
http://localhost:8101/Reports/ConfirmReportEmail.php?familyId=1)%20AND%20(SELECT%201%20FROM%20(SELECT(SLEEP(5)))a)%20--%20-
Наблюдаемый результат:
Подтверждение через sqlmap:
Этот CVE был ответственно раскрыт в соответствии с практикой координированного раскрытия уязвимостей. Предоставленная информация предназначена только для образовательных и защитных целей.