
CVE-2025-67875 - ChurchCRM tem XSS armazenado via Atribuição de Propriedade de Pessoa levando ao Sequestro de Sessão de Administrador
| Campo | Detalhes |
|---|
| ID CVE | CVE-2025-67875 |
| Severidade | ALTA |
| Aviso | Ver Aviso |
| Descoberto por | Lukasz Rybak |
Existe uma vulnerabilidade crítica de escalonamento de privilégios no ChurchCRM versão 6.3.0 e anteriores. Um usuário autenticado com permissões específicas de nível intermediário ("Editar Registros" e "Gerenciar Propriedades e Classificações") pode injetar um payload persistente de Cross-Site Scripting (XSS) no perfil de um administrador. O payload é executado quando o administrador visualiza sua própria página de perfil, permitindo que o atacante sequestre a sessão do administrador, execute ações administrativas e obtenha a tomada total da conta.
Esta vulnerabilidade é uma combinação de duas falhas separadas: uma Referência Direta a Objeto Insegura (IDOR) que permite que qualquer usuário visualize o perfil de qualquer outro usuário, e uma vulnerabilidade de Controle de Acesso Quebrado que permite que um usuário com permissões gerais de edição modifique as propriedades do registro de qualquer outro usuário.
A cadeia de ataque é a seguinte:
IDOR em PersonView.php: Não há verificação de autorização no início de PersonView.php. Qualquer usuário autenticado pode visualizar a página de perfil de qualquer outro usuário (por exemplo, PersonView.php?PersonID=1 para o admin) simplesmente sabendo o seu ID.
Controle de Acesso Quebrado em PropertyAssign.php: A funcionalidade "Atribuir uma Nova Propriedade", acessível a partir da página PersonView.php de outro usuário, direciona o usuário para PropertyAssign.php. Este script verifica corretamente se o usuário tem a permissão geral isEditRecordsEnabled(), mas falha ao realizar uma verificação de autorização em nível de objeto para confirmar se o usuário tem permissão para editar o PersonID específico passado na URL. Isso permite que um usuário com "Editar Registros" modifique propriedades de qualquer pessoa no sistema, incluindo um administrador.
Vetor de XSS Armazenado: Um atacante pode aproveitar essas duas falhas para navegar até a página de perfil do administrador e usar o formulário "Atribuir uma Nova Propriedade" para salvar um payload malicioso de XSS no registro do administrador. O campo Value para propriedades baseadas em texto não é devidamente sanitizado na entrada (apenas strip_tags é aplicado, o que não remove manipuladores de eventos) e não é codificado na saída, levando a XSS Armazenado.
src/PropertyAssign.php): Salva o valor da propriedade após aplicar apenas strip_tags(), o que permite atributos de manipuladores de eventos como onerror.src/PersonView.php): Renderiza o valor da propriedade armazenado diretamente no HTML sem htmlspecialchars(), fazendo com que o payload seja executado.
// src/PersonView.php, linha ~722
<td><?= $r2p_Value ?></td> // Vulnerável: Saída bruta
Esta Prova de Conceito demonstra como um usuário com permissões específicas de nível intermediário pode injetar um payload de XSS Armazenado no perfil do administrador principal.
Pré-requisitos:
Edit RecordsManage Properties and ClassificationsCenário:

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

PersonView.php?PersonID=1), o payload será executado imediatamente e uma caixa de alerta aparecerá. O atacante poderia usar um payload mais avançado para roubar o cookie de sessão do administrador.

Esta é uma vulnerabilidade crítica de escalonamento de privilégios. Ela permite que um usuário com permissões específicas, elevadas (mas não de administrador), obtenha controle total sobre a conta de um administrador. Ao sequestrar a sessão do admin, o atacante pode executar qualquer ação disponível para um administrador, incluindo criar novas contas de admin, excluir dados e potencialmente combinar isso com outras vulnerabilidades para alcançar o comprometimento total do servidor.
Reportado por: Łukasz Rybak
Este CVE foi divulgado de forma responsável, seguindo práticas coordenadas de divulgação de vulnerabilidades. As informações fornecidas aqui são apenas para fins educacionais e defensivos.