
CVE-2025-67875 - ChurchCRM tiene XSS almacenado a través de Person Property Assignment que lleva al secuestro de sesión de administrador
| Campo | Detalles |
|---|
| ID CVE | CVE-2025-67875 |
| Gravedad | ALTA |
| Aviso | Ver Aviso |
| Descubierto por | Lukasz Rybak |
Existe una vulnerabilidad crítica de escalada de privilegios en ChurchCRM versión 6.3.0 y anteriores. Un usuario autenticado con permisos específicos de nivel medio ("Edit Records" y "Manage Properties and Classifications") puede inyectar un payload persistente de Cross-Site Scripting (XSS) en el perfil de un administrador. El payload se ejecuta cuando el administrador ve su propia página de perfil, lo que permite al atacante secuestrar la sesión del administrador, realizar acciones administrativas y lograr una toma de control total de la cuenta.
Esta vulnerabilidad es una combinación de dos fallos separados: una Referencia Directa Insegura a Objetos (IDOR) que permite a cualquier usuario ver el perfil de cualquier otro usuario, y una vulnerabilidad de Control de Acceso Roto que permite a un usuario con permisos generales de edición modificar las propiedades de registro de cualquier otro usuario.
La cadena de ataque es la siguiente:
IDOR en PersonView.php: No hay verificación de autorización al inicio de PersonView.php. Cualquier usuario autenticado puede ver la página de perfil de cualquier otro usuario (por ejemplo, PersonView.php?PersonID=1 para el administrador) simplemente conociendo su ID.
Control de Acceso Roto en PropertyAssign.php: La funcionalidad "Assign a New Property", accesible desde la página PersonView.php de otro usuario, dirige al usuario a PropertyAssign.php. Este script verifica correctamente si el usuario tiene el permiso general isEditRecordsEnabled(), pero no realiza una verificación de autorización a nivel de objeto para comprobar si el usuario tiene permitido editar el PersonID específico pasado en la URL. Esto permite que un usuario con "Edit Records" modifique propiedades de cualquier persona en el sistema, incluido un administrador.
Vector XSS Almacenado: Un atacante puede aprovechar estos dos fallos para navegar a la página de perfil del administrador y usar el formulario "Assign a New Property" para guardar un payload XSS malicioso en el registro del administrador. El campo Value para propiedades basadas en texto no está correctamente saneado en la entrada (solo se aplica strip_tags, que no elimina los manejadores de eventos) y no está codificado en la salida, lo que lleva a XSS Almacenado.
src/PropertyAssign.php): Guarda el valor de la propiedad después de solo aplicar strip_tags(), lo que permite atributos de manejadores de eventos como onerror.src/PersonView.php): Renderiza el valor de la propiedad almacenado directamente en el HTML sin htmlspecialchars(), provocando la ejecución del payload.
// src/PersonView.php, line ~722
<td><?= $r2p_Value ?></td> // Vulnerable: Salida sin procesar
Esta Prueba de Concepto demuestra cómo un usuario con permisos específicos de nivel medio puede inyectar un payload XSS Almacenado en el perfil del administrador principal.
Prerrequisitos:
Edit RecordsManage Properties and ClassificationsEscenario:

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

PersonView.php?PersonID=1), el payload se ejecutará inmediatamente y aparecerá un cuadro de alerta. El atacante podría usar un payload más avanzado para robar la cookie de sesión del administrador.

Esta es una vulnerabilidad crítica de escalada de privilegios. Permite a un usuario con permisos específicos elevados (pero no de administrador) obtener control total sobre la cuenta de un administrador. Al secuestrar la sesión del administrador, el atacante puede realizar cualquier acción disponible para un administrador, incluyendo crear nuevas cuentas de administrador, eliminar datos y potencialmente encadenar esto con otras vulnerabilidades para lograr un compromiso total del servidor.
Reportado por: Łukasz Rybak
Este CVE fue divulgado de manera responsable siguiendo prácticas coordinadas de divulgación de vulnerabilidades. La información proporcionada aquí es solo con fines educativos y defensivos.