
CVE-2025-68400 - ChurchCRM vulnerable a inyección SQL ciega basada en tiempo en ConfirmReportEmail.php
| Campo | Detalles |
|---|---|
| ID de CVE | CVE-2025-68400 |
| Gravedad | CRÍTICA |
| Aviso | Ver aviso |
| Descubierto por | Lukasz Rybak |
Existe una vulnerabilidad crítica de inyección SQL en el endpoint heredado /Reports/ConfirmReportEmail.php en ChurchCRM 6.3.0. Aunque la funcionalidad se eliminó de la interfaz de usuario, el archivo permanece desplegado y accesible directamente mediante URL. Este es un caso clásico de código muerto pero accesible. Cualquier usuario autenticado, incluso uno sin permisos asignados, puede explotar la inyección SQL a través del parámetro familyId.
El problema se encuentra en:
src/Reports/ConfirmReportEmail.php
Código vulnerable (líneas 82–83):
if (InputUtils::legacyFilterInput($_GET['familyId'], 'int')) {
$sSubQuery = ' and fam_id in (' . $_GET['familyId'] . ') ';
}
Por qué esto es vulnerable:
legacyFilterInput() se ignora por completo.$_GET['familyId'] se concatena directamente en una consulta SQL.Endpoint muerto pero accesible:
/Reports/ConfirmReportEmail.php?familyId=<valor>
Comportamiento normal:
302 Redirect → /v2/family/<id>&PDFEmailed=
Las cargas maliciosas que contienen ) o -- rompen la lógica de redirección y ejecutan el SQL vulnerable.
Incluso un usuario con cero permisos puede explotar la vulnerabilidad.
Una carga SLEEP(5) retrasa de forma fiable la respuesta, demostrando la ejecución de SQL.
El usuario autenticado visita:
http://localhost:8101/Reports/ConfirmReportEmail.php?familyId=1)%20AND%20(SELECT%201%20FROM%20(SELECT(SLEEP(5)))a)%20--%20-
Resultado observado:
Confirmación con sqlmap:
Este CVE fue divulgado de forma responsable siguiendo las prácticas coordinadas de divulgación de vulnerabilidades. La información aquí proporcionada es solo para fines educativos y defensivos.