
Disclosure for CVE-2025-9886 and CVE-2025-9952
Divulgação para CVE-2025-9886 e CVE-2025-9952.
Este repositório divulga uma vulnerabilidade descoberta no Trinity Audio <= 5.20.1, plugin WordPress desenvolvido por sergiotrinity.
| CVE ID | Tipo | Componente | Impacto |
|---|---|---|---|
| CVE-2025-9886 | Cross-Site Request Forgery | admin/inc/post-management.php | Ativar/desativar em massa o Trinity Audio em posts sob a sessão da vítima |
| CVE-2025-9952 | Reflected Cross-Site Scripting | admin/inc/post-management.php | Execução arbitrária de scripts |
Componente Afetado: Manipulador da página de Gestão de Posts (admin/inc/post-management.php)
Vetor de Ataque: POST de origem cruzada para wp-admin/admin.php?page=trinity_audio_post_management
Gatilho: Um administrador autenticado visita uma página controlada pelo atacante que envia automaticamente um formulário manipulado
Impacto: O atacante força alterações de estado em massa (ativar/desativar Trinity Audio em todos os posts ou num intervalo de datas) com os privilégios do administrador, prejudicando a integridade e potencialmente a disponibilidade
Componente Afetado: Manipulador da página de Gestão de Posts (admin/inc/post-management.php)
Vetor de Ataque: POST de origem cruzada para wp-admin/admin.php?page=trinity_audio_post_management com post-management-action=activate-all-posts-range, range-before-after=after, e uma data válida seguida de HTML.
Gatilho: Um administrador autenticado visita uma página controlada pelo atacante que envia automaticamente o formulário manipulado. Deve existir pelo menos um post publicado após a data fornecida.
Impacto: JavaScript arbitrário é executado na origem do administrador, permitindo roubo de sessão, manipulação de configurações ou encadeamento de CSRF.
Ao combinar estas duas vulnerabilidades, um atacante pode executar scripts arbitrários direcionando utilizadores para um site contendo o seguinte formulário.
<form method="POST" action="https://victim.example.com/wp-admin/admin.php?page=trinity_audio_post_management">
<input type="hidden" name="action" value="1">
<input type="hidden" name="post-management-action" value="activate-all-posts-range">
<input type="hidden" name="range-before-after" value="after">
<input type="hidden" name="range-date" value="2025-09-03<img src=x onerror=alert(document.domain)>">
</form>
<script>document.forms[0].submit();</script>
CSRF (CVE-2025-9886): O endpoint que altera estados aceita requisições de origem cruzada sem defesas CSRF. Não há verificação de nonce (check_admin_referer/wp_verify_nonce) nem validação de Origin/Referer. Como os cookies são enviados automaticamente, um atacante pode fazer com que ações sejam executadas sob a sessão de um utilizador autenticado.
Reflected XSS (CVE-2025-9952): O manipulador de Gestão de Posts (admin/inc/post-management.php) insere o valor POST range-date no aviso de sucesso sem codificação de saída (sem esc_html()/wp_kses()), permitindo injeção de HTML/JS.
À primeira vista, apenas CSRF e Self-XSS, mas combinando-os, ao bem-suceder o CSRF, é possível executar JavaScript arbitrário. Foi divertido criar um PoC tão interessante como este.
Nome: MooseLove
Função: Pesquisador de segurança independente / caçador de bugs
Contacto: Disponível mediante solicitação
Este aviso é fornecido para conscientização pública de segurança. Livre para compartilhar com atribuição.