
CVE-2026-32475 يتعامل حقل رفع الملفات في Elementor Pro Forms مع التحقق من الصحة ومعالجة الملفات في حلقتين منفصلتين مع معالجة مختلفة لإدخالات الرفع الفارغة (UPLOAD_ERR_NO_FILE). يمكن لمهاجم غير مصادق إرسال multipart
يتعامل حقل رفع الملفات في نماذج Elementor Pro مع التحقق من صحة الملفات ومعالجتها في حلقتين منفصلتين، مع معالجة مختلفة لإدخالات الرفع الفارغة (UPLOAD_ERR_NO_FILE). يمكن لمهاجم غير مُصادَق عليه إرسال طلب multipart يتضمن جزء ملف أول فارغ يليه حمولة PHP لنفس الحقل، مما يؤدي إلى عودة validation() مبكرًا بينما لا تزال process_field() تنقل ملف PHP إلى دليل عام: wp-content/uploads/elementor/forms/.php
يستخرج تلقائيًا post_id وform_id وfield_id من الصفحة المستهدفة:
python poc.py -t http://localhost/wp --page-url "http://localhost/wp/?page_id=16" -c "whoami"
أو:
python poc.py -t http://localhost/wp --page-id 16 -c "whoami"
ابدأ جلسة تفاعلية:
python poc.py -t http://localhost/wp --page-id 16 -i
جوهر الثغرة هو تجاوز آلية رفع الملفات نفسها. لا يختلف هذا الجزء سواء أجريت الاختبار في مختبر محلي أو على خادم حقيقي: الجزء الأول الفارغ من الملف + حمولة PHP في حقل الرفع يتجاوز التحقق من الامتداد، ومع ذلك لا يزال الملف يُعالَج بواسطة process_field(). لقد أظهرنا أن الملف تتم كتابته بنجاح، وهذا هو بالضبط ما تم وصفه.
بخصوص مسار Laragon المثبّت في الكود:
كان ذلك فقط لتسهيل التحقق المحلي.
على الهدف الحقيقي، نمط الدليل معروف وثابت:
/wp-content/uploads/elementor/forms/
ما ليس ثابتًا هو اسم الملف النهائي.
لا يحتفظ Elementor بالاسم الأصلي للملف. في process_field()، يتم توليد اسم الملف المخزَّن على النحو التالي:
لذلك، إذا قمت برفع shell.php، فقد يصبح اسم الملف شيئًا مثل:
66f3a1c2e9b47.php
داخل:
/wp-content/uploads/elementor/forms/
تستند uniqid() إلى الوقت وليست قيمة عشوائية قوية؛ فهي تعتمد تقريبًا على الطابع الزمني + ميكروثانية. لذلك، يصبح استرجاع الملف عن بُعد مشكلة اكتشاف اسم ملف بدلاً من مشكلة رفع.
على سبيل المثال، يمكنك استخدام نافذة زمنية بناءً على ترويسة Date في الخادم وتوقيت الطلبات، والبحث ضمن نطاق ضيق حول وقت الرفع، أو استرجاع عنوان URL الدقيق إذا كان النموذج يرسل بريدًا إلكترونيًا يحتوي على [all-fields].
أبقيت إثبات المفهوم (PoC) مركزًا على إثبات القضية الأساسية نفسها، وهي رفع الملفات دون مصادقة، بشكل واضح ومباشر. إن الشرح الكامل للاسترجاع عن بُعد لقيمة uniqid() سيجعل العرض التوضيحي أطول بكثير من اللازم للتحقق من الثغرة نفسها.