Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
cve-2026-32475-elementor-pro-lab — # مختبر Docker A/B + PoC لـ CVE-2026-32475 (رفع ملفات تعسفي غير مصادق عليه في نماذج Elementor Pro -> تنفيذ أوامر عن بُعد عبر عدم تزامن حلقة التحقق/النقل) | Kitploit
أدوات/GitHubGitHub/dinosn/cve-2026-32475-elementor-pro-lab
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubdinosn/cve-2026-32475-elementor-pro-lab

cve-2026-32475-elementor-pro-lab

# مختبر Docker A/B + PoC لـ CVE-2026-32475 (رفع ملفات تعسفي غير مصادق عليه في نماذج Elementor Pro -> تنفيذ أوامر عن بُعد عبر عدم تزامن حلقة التحقق/النقل)

عرض المستودع
2منذ 6س 46دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-32475 — رفع ملف تعسفي غير مصادق عليه في Elementor Pro Forms → تنفيذ أوامر عن بُعد (RCE)

مختبر A/B يعيد إنتاج CVE-2026-32475 (CVSS 9.x، Patchstack؛ حقل رفع الملفات في Elementor Pro Forms، الإصدارات المتأثرة ≤ 4.2.1، تم الإصلاح في 4.2.2 بتاريخ 2026-08-19؛ تم الإبلاغ عنه بواسطة Tin Pham / TF1T). غير مصادق عليه، بدون تفاعل من المستخدم.

للاستخدام المصرح به / التعليمي فقط. يعمل هذا المختبر بالكامل على 127.0.0.1 داخل حاويات Docker مؤقتة. لا توجه الـ PoC نحو أنظمة غير مصرح لك باختبارها صراحةً. يقوم build.sh بجلب كود Elementor Pro من مرآة GPL عامة؛ لا يتم إعادة توزيع أي كود مميز في هذا المستودع.

السبب الجذري — عدم تطابق في حلقة التحقق/النقل

modules/forms/fields/upload.php. حلقتان تتكرران على نفس $_FILES['form_fields'][$id] المعاد تشكيله لكنهما تتعاملان مع الجزء الفارغ (UPLOAD_ERR_NO_FILE) بشكل مختلف:

root@kitploit:~
// validation()  — السطر ~269
foreach ( $_FILES['form_fields'][ $id ] as $index => $file ) {
    if ( ! $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
        return;                         // <-- يتخلى عن كل التحقق المتبقي لهذا الحقل
    }
    ...
    if ( ! $this->is_file_type_valid( $field, $file ) ) {           // قائمة السماح/المنع للامتدادات
        $ajax_handler->add_error( $id, 'This file type is not allowed.' );
    }
}

// process_field() — السطر ~418
foreach ( $_FILES['form_fields'][ $id ] as $index => $file ) {
    if ( UPLOAD_ERR_NO_FILE === $file['error'] ) {
        continue;                       // <-- يتخطى الجزء الفارغ فقط، ويواصل
    }
    $filename  = uniqid() . '.' . pathinfo( $file['name'], PATHINFO_EXTENSION ); // امتداد المهاجم، بدون إعادة فحص
    move_uploaded_file( $file['tmp_name'], trailingslashit( $uploads_dir ) . $filename );
}

أرسل حقل رفع اختياريًا واحدًا مع جزأين — جزء فارغ أولاً، ثم حمولة PHP. validation() يصطدم بالجزء الفارغ وينفذ return قبل فحص .php إطلاقًا؛ process_field() ينفذ continue متجاوزًا الجزء الفارغ وينقل .php إلى wp-content/uploads/elementor/forms/<uniqid()>.php. قائمة الحظر get_blacklist_file_ext() (php,phtml,pht,shtml,…) تعمل فقط داخل validation()، لذا يتم تجاوزها بالكامل.

غير مصادق بالكامل: wp_ajax_nopriv_elementor_pro_forms_send_form (ajax-handler.php:295).

لماذا هو RCE وليس مجرد كتابة ملف

get_ensure_upload_dir() يضع ملف .htaccess في مجلد النماذج يحتوي فقط على Options -Indexes + Header set Content-Disposition attachment. هذا تلميح لتنزيل المتصفح — على Apache + mod_php فإن .php يُنفَّذ من جانب الخادم؛ المهاجم (عبر curl) ببساطة يستلم مخرجات الأوامر مع ترويسة تنزيل. وحدة النماذج لا تحتوي على تنظيف unlink، لذا تبقى الصدفة مستمرة.

الشرط المسبق الوحيد

صفحة منشورة تحتوي على أداة Form من Elementor Pro مع حقل رفع ملفات حيث Required = No (فرع ! $field['required']). يتم قراءة إعدادات الحقل من جانب الخادم من _elementor_data، لذا لا يمكن للمهاجم تبديلها — لكن حقول "المرفقات الاختيارية" شائعة.

استعادة اسم الملف (عن بُعد بالكامل، بدون وصول لنظام الملفات)

الاسم المخزن = uniqid() = %08x%05x = (ثانية يونكس)(ميكروثانية). الثانية تُكشف بدقة عبر ترويسة استجابة Date في HTTP؛ فقط الميكروثانية (0–999999) غير معروفة → هجوم تخمين GET عبر الإنترنت محدود بـ ≤10⁶. poc.py --recover يثبّت الميكروثانية على وقت وصول الاستجابة (في نفس الموقع / متزامن مع NTP ⇒ ثوانٍ–دقائق؛ هنا: ~26 ألف طلب) ويحوّل الكتابة إلى تنفيذ أوامر عن بُعد.

هيكل المختبر

الخدمةالمنفذElementor Pro
wp-vulnhttp://127.0.0.1:89753.6.4 — ثغرة أمنية (شجرة أصلية؛ عدم تطابق validation() مطابق تمامًا لـ ≤4.2.1)
wp-patchedhttp://127.0.0.1:89763.6.4 مع إصلاح مكافئ لـ 4.2.2 (return → continue، بمحاذاة الحلقتين)

التقنية: wordpress:php7.4-apache (mod_php) + MariaDB 10.6 + Elementor (مجاني) 3.6.8 + Elementor Pro 3.6.4. كل نسخة تحتوي على مسؤول (admin/labpass) وصفحة منشورة "CVE-2026-32475 Lab" (post_id=5، form_id=frm00001، حقل الرفع field_cv، Required=No).

ملاحظة الإصدار. لا يوجد كود مصدر نظيف لـ 4.2.1/4.2.2 قابل لإعادة التوزيع علنًا، لذا يعمل المختبر على شجرة 3.6.4 الأصلية، التي يكون عدم تطابق validation()/process_field() فيها مطابقًا بايتًا ببايت للكود الذي يصفه CVE-2026-32475 (الثغرة قديمة؛ 4.2.2 قام بمحاذاة الحلقتين). بناء A/B "المصحح" يطبق هذه المحاذاة بالضبط.

البناء والتشغيل

يتطلب Docker + Docker Compose واتصال شبكة خارجي (لسحب الصور، Elementor المجاني، ومرآة كود Elementor Pro). build.sh يستنسخ شجرة Elementor Pro الأصلية تلقائيًا.

root@kitploit:~
git clone https://github.com/dinosn/cve-2026-32475-elementor-pro-lab
cd cve-2026-32475-elementor-pro-lab
bash build.sh          # استنساخ الإضافة + compose up + تثبيت WP/Elementor + إنشاء صفحة النموذج (كلا النسختين)
bash verify.sh         # إثبات A/B: الثغرة تكتب وتنفذ صدفة؛ المصحح يرفض. ينظف.

الاستغلال

root@kitploit:~
# RCE غير مصادق عن بُعد بالكامل (يستخرج post_id/form_id/field_id تلقائيًا من الصفحة):
python3 poc.py -t http://127.0.0.1:8975 --page-id 5 --recover -c "id; uname -a"

# فقط لإثبات تجاوز قائمة الحظر (اترك الصدفة للفحص):
python3 poc.py -t http://127.0.0.1:8975 --post-id 5 --form-id frm00001 --field-id field_cv

الملفات

  • docker-compose.yml — 2× (WordPress + MariaDB)، الثغرة:8975 / المصحح:8976
  • elementor-pro-vuln/ — Elementor Pro 3.6.4 الأصلي (به ثغرة)؛ مُنشأ بواسطة build.sh، مستثنى من git
  • elementor-pro-patched/ — نفس الشجرة، validation() return→continue؛ مُنشأ بواسطة patch_pro.sh، مستثنى من git
  • evidence/verify_transcript.txt — سجل محفوظ لتشغيل verify.sh ناجح
  • install_wp.sh — تثبيت wp-cli لـ WP + Elementor المجاني + تفعيل Pro + إنشاء صفحة النموذج + إصلاح صلاحيات uploads
  • setup_page.php — يبني صفحة نموذج Elementor مع حقل رفع اختياري
  • patch_pro.sh — يشتق الشجرة المصححة + يطبع الفرق المكوّن من سطر واحد
  • poc.py — رفع عدم تطابق غير مصادق + استعادة اسم ملف uniqid() + RCE
  • verify.sh — إثبات A/B مع مصدر تحقق مستقل لنظام الملفات (يثبت التنفيذ، وليس الكتابة فقط)
  • build.sh — بناء لمرة واحدة

التنظيف / الإزالة

root@kitploit:~
cd /root/cve-2026-32475-lab && docker compose down -v
تنزيل الأداة