
User Registration & Membership <= 5.1.5 - Mancanza di autorizzazione non autenticata per il bypass dell'approvazione dell'amministratore tramite il parametro 'action'
Exploit proof-of-concept per CVE-2026-6145, una vulnerabilità di autorizzazione mancante nel plugin User Registration & Membership per WordPress (≤ 5.1.5) che consente agli attaccanti non autenticati di aggirare il requisito di approvazione amministrativa durante la creazione di nuovi account.
| CVE ID | CVE-2026-6145 |
| CNA | Wordfence |
| Vulnerabilità | Autorizzazione mancante — Bypass dell'approvazione amministrativa |
| CWE | CWE-862 (Autorizzazione mancante) |
| CVSS 3.1 | 5.3 Media (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) |
| Versioni interessate | User Registration & Membership per WordPress — tutte le versioni ≤ 5.1.5 |
| Versione corretta | Versione > 5.1.5 |
| Ricercatore | Anthony Cihan — Responsabile della sicurezza offensiva, Obviam |
| Segnalazione | Wordfence Responsible Disclosure Program |
| Pubblicazione | 2026-05-14 |
Il metodo is_admin_creation_process() in includes/class-ur-user-approval.php è l'unico controllo che determina se una nuova registrazione debba essere considerata una creazione avviata dall'amministratore. Quando questo metodo restituisce true, si verificano due effetti collaterali:
set_user_status() imposta lo stato del nuovo utente su APPROVATO, saltando la coda di approvazione pendente.send_request_notification_to_admin() sopprime l'email di notifica all'amministratore per la nuova registrazione.Il metodo stesso, nella versione 5.1.5, non contiene alcuna verifica di autenticazione, autorizzazione o nonce:
// includes/class-ur-user-approval.php:459-461
protected function is_admin_creation_process() {
return ( isset( $_REQUEST['action'] ) && 'createuser' == $_REQUEST['action'] );
}
Poiché $_REQUEST unisce $_GET, $_POST e $_COOKIE, un attaccante non autenticato può soddisfare questo controllo aggiungendo ?action=createuser all'URL dell'invio di un modulo di registrazione. Il plugin approva quindi automaticamente l'account e non avvisa mai l'amministratore.
Sebbene CVE-2026-6145 riguardi specificamente l'autorizzazione mancante in is_admin_creation_process(), lo sfruttamento completo senza autenticazione contro un modulo di registrazione irrobustito richiede il concatenamento con due problemi ausiliari nella stessa versione del plugin, entrambi gestiti automaticamente dal PoC incluso:
| Passo | Problema | Scopo |
|---|---|---|
| 1 | Generazione del nonce senza autenticazione tramite l'endpoint wp_ajax_nopriv di user_registration_get_recent_nonce (controllo basato solo sul Referer) | Ottenere un ur_frontend_form_nonce valido senza una sessione autenticata |
| 2 | Bypass del controllo del nonce AJAX quando ur_fallback_submit non è vuoto nel gestore del modulo | Inviare la registrazione tramite il percorso di fallback senza un referer AJAX valido |
| 3 | CVE-2026-6145 — action=createuser in $_REQUEST fa sì che is_admin_creation_process() restituisca true | Approvare automaticamente il nuovo account e sopprimere la notifica all'amministratore |
Il risultato: un account utente completamente approvato, creato senza l'interazione o la notifica dell'amministratore, su un sito che richiede esplicitamente l'approvazione amministrativa per le nuove registrazioni.
requestsdata-form-id)git clone https://github.com/<your-username>/CVE-2026-6145.git
cd CVE-2026-6145
pip install requests
python3 poc_admin_approval_bypass.py <target_url> <form_id>
Esempio:
python3 poc_admin_approval_bypass.py http://wp.example.lab 7
======================================================================
User Registration v5.1.4 - Admin Approval Bypass PoC
CVE: 2026-6145 | CWE-862
Affects: User Registration & Membership <= 5.1.5
======================================================================
[*] Target: http://wp.example.lab
[*] Form ID: 7
[*] STEP 1: Obtaining nonce via unauthenticated AJAX endpoint
[+] SUCCESS: Got valid nonce for form 7: a1b2c3d4e5
[*] STEP 2: Registering user with admin approval bypass
Username: poc_bypass_1747249200
Email: [email protected]
[+] Registration request processed (HTTP 200)
[*] STEP 3: Verifying user was created
[+] CONFIRMED: User 'poc_bypass_1747249200' exists in the database
======================================================================
RESULTS
======================================================================
Unauthenticated Nonce Generation: CONFIRMED
AJAX Nonce Bypass: CONFIRMED
Admin Approval Bypass (CVE-...): CONFIRMED
[!] User was created with AUTO-APPROVED status
[!] Admin was NOT notified of this registration
======================================================================
Dopo aver eseguito il PoC, accedi a wp-admin e controlla Utenti → Tutti gli utenti:
Sui siti WordPress che utilizzano l'approvazione amministrativa come barriera principale contro la creazione di account indesiderati — comune per i siti in abbonamento, le community chiuse, i portali interni, le piattaforme B2B e qualsiasi sito che richieda la verifica dell'identità prima dell'accesso — questa vulnerabilità neutralizza silenziosamente tale controllo. Le conseguenze specifiche includono: