
CVE-2025-68400 - ChurchCRM vulnérable à une injection SQL aveugle basée sur le temps dans ConfirmReportEmail.php
| Champ | Détails |
|---|---|
| ID CVE | CVE-2025-68400 |
| Sévérité | CRITIQUE |
| Avis | Voir l'avis |
| Découvert par | Lukasz Rybak |
Une vulnérabilité critique d'injection SQL existe dans le point de terminaison hérité /Reports/ConfirmReportEmail.php de ChurchCRM 6.3.0. Bien que la fonctionnalité ait été retirée de l'interface utilisateur, le fichier reste déployé et accessible directement via une URL. Il s'agit d'un cas classique de code mort mais accessible. Tout utilisateur authentifié - y compris un utilisateur sans aucune permission assignée - peut exploiter l'injection SQL via le paramètre familyId.
Le problème se situe dans :
src/Reports/ConfirmReportEmail.php
Code vulnérable (lignes 82–83) :
if (InputUtils::legacyFilterInput($_GET['familyId'], 'int')) {
$sSubQuery = ' and fam_id in (' . $_GET['familyId'] . ') ';
}
Pourquoi c'est vulnérable :
legacyFilterInput() est entièrement ignorée.$_GET['familyId'] est concaténée directement dans une requête SQL.Point de terminaison mort mais accessible :
/Reports/ConfirmReportEmail.php?familyId=<value>
Comportement normal :
302 Redirect → /v2/family/<id>&PDFEmailed=
Les charges utiles malveillantes contenant ) ou -- cassent la logique de redirection et exécutent le SQL vulnérable.
Même un utilisateur avec zéro permission peut exploiter la vulnérabilité.
Une charge utile SLEEP(5) retarde de manière fiable la réponse, prouvant l'exécution SQL.
Un utilisateur authentifié visite :
http://localhost:8101/Reports/ConfirmReportEmail.php?familyId=1)%20AND%20(SELECT%201%20FROM%20(SELECT(SLEEP(5)))a)%20--%20-
Résultat observé :
Confirmation avec sqlmap :
Cette CVE a été divulguée de manière responsable conformément aux pratiques de divulgation coordonnée des vulnérabilités. Les informations fournies ici sont à des fins éducatives et défensives uniquement.