
CVE-2025-67875 - ChurchCRM presenta una XSS memorizzata tramite l'assegnazione delle proprietà della persona, che porta al dirottamento della sessione dell'amministratore.
| Campo | Dettagli |
|---|
| ID CVE | CVE-2025-67875 |
| Gravità | ALTA |
| Advisory | Visualizza Advisory |
| Scoperto da | Lukasz Rybak |
Esiste una vulnerabilità critica di escalation dei privilegi in ChurchCRM versione 6.3.0 e precedenti. Un utente autenticato con specifici permessi di livello intermedio ("Edit Records" e "Manage Properties and Classifications") può iniettare un payload di Cross-Site Scripting (XSS) persistente nel profilo di un amministratore. Il payload viene eseguito quando l'amministratore visualizza la propria pagina di profilo, consentendo all'attaccante di dirottare la sessione dell'amministratore, eseguire azioni amministrative e ottenere la piena compromissione dell'account.
Questa vulnerabilità è la combinazione di due difetti distinti: un Insecure Direct Object Reference (IDOR) che consente a qualsiasi utente di visualizzare il profilo di qualsiasi altro utente e una vulnerabilità di Broken Access Control che consente a un utente con permessi di modifica generali di modificare le proprietà della scheda di qualsiasi altro utente.
La catena di attacco è la seguente:
IDOR in PersonView.php: All'inizio di PersonView.php non è presente alcun controllo di autorizzazione. Qualsiasi utente autenticato può visualizzare la pagina di profilo di qualsiasi altro utente (ad es., PersonView.php?PersonID=1 per l'amministratore) semplicemente conoscendone l'ID.
Broken Access Control in PropertyAssign.php: La funzionalità "Assign a New Property", accessibile dalla pagina PersonView.php di un altro utente, indirizza l'utente a PropertyAssign.php. Questo script controlla correttamente se l'utente dispone del permesso generale isEditRecordsEnabled(), ma non esegue un controllo di autorizzazione a livello di oggetto per verificare se all'utente è consentito modificare il PersonID specifico passato nell'URL. Ciò consente a un utente con "Edit Records" di modificare le proprietà di qualsiasi persona nel sistema, incluso un amministratore.
Vettore XSS persistente: Un attaccante può sfruttare questi due difetti per navigare fino alla pagina di profilo dell'amministratore e utilizzare il modulo "Assign a New Property" per salvare un payload XSS malevolo sulla scheda dell'amministratore. Il campo Value per le proprietà testuali non viene adeguatamente sanitizzato in input (viene applicato solo strip_tags, che non rimuove i gestori di eventi) e non viene codificato in output, portando a una XSS persistente.
src/PropertyAssign.php): Salva il valore della proprietà dopo aver applicato solo strip_tags(), che consente attributi di gestori di eventi come onerror.src/PersonView.php): Renderizza il valore della proprietà salvata direttamente nell'HTML senza htmlspecialchars(), causando l'esecuzione del payload.
// src/PersonView.php, line ~722
<td><?= $r2p_Value ?></td> // Vulnerable: Raw output
Questa prova di concetto dimostra come un utente con specifici permessi di livello intermedio possa iniettare un payload XSS persistente nel profilo dell'amministratore principale.
Prerequisiti:
Edit RecordsManage Properties and ClassificationsScenario:

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

PersonView.php?PersonID=1), il payload verrà eseguito immediatamente e apparirà una finestra di avviso. L'attaccante potrebbe utilizzare un payload più avanzato per rubare il cookie di sessione dell'amministratore.

Si tratta di una vulnerabilità critica di escalation dei privilegi. Consente a un utente con permessi specifici ed elevati (ma non da amministratore) di ottenere il pieno controllo dell'account di un amministratore. Dirottando la sessione dell'amministratore, l'attaccante può eseguire qualsiasi azione disponibile per un amministratore, inclusa la creazione di nuovi account amministrativi, l'eliminazione di dati e, potenzialmente, il concatenamento di questa vulnerabilità con altre per ottenere la compromissione totale del server.
Segnalata da: Łukasz Rybak
Questa CVE è stata divulgata in modo responsabile seguendo le pratiche di divulgazione coordinata delle vulnerabilità. Le informazioni qui fornite hanno esclusivamente scopo educativo e difensivo.