
CVE-2025-67875 - ChurchCRM présente une XSS stockée via l'affectation de propriétés de personne, conduisant au détournement de session administrateur.
| Champ | Détails |
|---|
| Identifiant CVE | CVE-2025-67875 |
| Gravité | HIGH |
| Avis | Voir l'avis |
| Découvert par | Lukasz Rybak |
Une vulnérabilité critique d'élévation de privilèges existe dans ChurchCRM version 6.3.0 et antérieures. Un utilisateur authentifié disposant de permissions intermédiaires spécifiques (« Edit Records » et « Manage Properties and Classifications ») peut injecter une charge utile Cross-Site Scripting (XSS) persistante dans le profil d'un administrateur. La charge utile s'exécute lorsque l'administrateur consulte sa propre page de profil, permettant à l'attaquant de détourner la session de l'administrateur, d'effectuer des actions administratives et de réaliser une prise de contrôle totale du compte.
Cette vulnérabilité est une combinaison de deux défauts distincts : une référence directe insecure à un objet (IDOR) qui permet à tout utilisateur de consulter le profil de n'importe quel autre utilisateur, et une vulnérabilité de contrôle d'accès cassé (Broken Access Control) qui permet à un utilisateur disposant de permissions d'édition générales de modifier les propriétés de la fiche de n'importe quel autre utilisateur.
La chaîne d'attaque est la suivante :
IDOR dans PersonView.php : Aucune vérification d'autorisation n'est effectuée au début de PersonView.php. Tout utilisateur authentifié peut consulter la page de profil de n'importe quel autre utilisateur (par exemple, PersonView.php?PersonID=1 pour l'administrateur) simplement en connaissant son ID.
Contrôle d'accès cassé dans PropertyAssign.php : La fonctionnalité « Assign a New Property », accessible depuis la page PersonView.php d'un autre utilisateur, dirige l'utilisateur vers PropertyAssign.php. Ce script vérifie correctement si l'utilisateur dispose de la permission générale isEditRecordsEnabled(), mais il ne parvient pas à effectuer une vérification d'autorisation au niveau de l'objet pour confirmer que l'utilisateur est autorisé à modifier le PersonID spécifique passé dans l'URL. Cela permet à un utilisateur disposant de « Edit Records » de modifier les propriétés de n'importe quelle personne du système, y compris un administrateur.
Vecteur XSS stockée : Un attaquant peut exploiter ces deux défauts pour accéder à la page de profil de l'administrateur et utiliser le formulaire « Assign a New Property » afin d'enregistrer une charge utile XSS malveillante sur la fiche de l'administrateur. Le champ Value des propriétés textuelles n'est pas correctement assaini à l'entrée (seul strip_tags est appliqué, ce qui ne supprime pas les gestionnaires d'événements) et n'est pas encodé à la sortie, ce qui conduit à une XSS stockée.
src/PropertyAssign.php) : Enregistre la valeur de la propriété après avoir uniquement appliqué strip_tags(), ce qui autorise des attributs de gestionnaire d'événements comme onerror.src/PersonView.php) : Affiche la valeur de propriété stockée directement dans le HTML sans htmlspecialchars(), provoquant l'exécution de la charge utile.
// src/PersonView.php, line ~722
<td><?= $r2p_Value ?></td> // Vulnerable: Raw output
Cette preuve de concept montre comment un utilisateur disposant de permissions intermédiaires spécifiques peut injecter une charge utile XSS stockée dans le profil de l'administrateur principal.
Prérequis :
Edit RecordsManage Properties and ClassificationsScénario :

PersonID=1.
http://localhost:8101/PersonView.php?PersonID=1
PersonView.php).
PropertyAssign.php).

PersonView.php?PersonID=1), la charge utile s'exécute immédiatement et une boîte d'alerte apparaît. L'attaquant pourrait utiliser une charge utile plus avancée pour voler le cookie de session de l'administrateur.

Il s'agit d'une vulnérabilité critique d'élévation de privilèges. Elle permet à un utilisateur disposant de permissions spécifiques élevées (mais non administrateur) d'obtenir un contrôle total sur le compte d'un administrateur. En détournant la session de l'administrateur, l'attaquant peut effectuer toute action disponible pour un administrateur, notamment créer de nouveaux comptes administrateur, supprimer des données et éventuellement combiner cette vulnérabilité avec d'autres pour compromettre entièrement le serveur.
Signalé par : Łukasz Rybak
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 le sont à des fins éducatives et défensives uniquement.