خطر Unrestricted File Upload وفتح الأبواب أمام السيطرة الكاملة على النظام

Vulnerabilities
استكشف كيف يمكن لثغرة Unrestricted File Upload تحول الأمان الرقمي إلى كابوس، محاولة فهم التهديدات المحتملة وكيفية تحسين طرق الحماية للحد من المخاطر وضمان سلامة بنية الأمان الرقمي.
Abdelrahman Nasr
Nov. 29, 2023, 3 p.m.
Abdelrahman
خطر Unrestricted File Upload وفتح الأبواب أمام السيطرة الكاملة على النظام

ما هي ثغرة Unrestricted File Upload؟

تحدث عندما يسمح خادم الويب للمستخدمين برفع ملفات إلى النظام دون التحقق الكافي من بعض المعلومات التي تتعلق بالملف الذي تم رفعه مثلا:

  • الاسم - Name
  • النوع - Type
  • المحتوى - Content
  • الحجم - Size

إذا حدث أي فشل في فرض القيود على هذه المعلومات، يمكن استغلال وظيفة رفع الملفات لرفع ملفات قد تشكل خطراً أو تهديداً للخادم.

قد تشمل هذه الملفات Shell Scripts حيث تمكن المهاجم من تنفيذ أكواد برمجية عن بُعد مما يعني أن المهاجم قد تمكن من الوصول لثغرة RCE من خلال ثغرة Unrestricted File Upload ذلك ما يجعل الخادم بالكامل تحت سيطرته.

رفع الملف (Shell Script) بحد ذاته قد يكون كافيًا لتسبب الضرر، ولكن في بعض الحالات قد يتطلب إرسال طلب HTTP للخادم حتى يتم الهجوم بشكل صحيح.

ما هو تأثير ثغرة Unrestricted File Upload؟

يوجد عاملين رئيسين تعتمد فيهم ثغرة Unrestricted File Upload حتى تعمل بشكل صحيح هما:

  • عدم قدرة تطبيق الويب على إجراء تحقق سليم من بعض المعلومات التي قمنا بذكرها بالأعلى التي تتعلق بالملف.
  • فشل القيود التي يتم فرضها على الملف بمجرد نجاح عملية رفع الملف على الخادم.

تحميل الملفات دون قيود له تأثيرات عدة حيث قد تشمل الاستيلاء الكامل على النظام، وتتوقف هذه التأثيرات على كيفية التعامل مع الملف الذي تم رفعه على الخادم، فيما يلي قائمة بالهجمات التي يمكن تنفيذها من قبل المهاجم:

السيناريو الأسوأ – Shell Script

إذا فشل التحقق السليم من نوع ومحتوى الملف وكانت إعدادات الخادم تسمح بتنفيذ أنواع معينة من الملفات مثل (py– php– sh)، مما قد يمكن المهاجم من رفع ملف يتضمن شيفرة برمجية قادرة على تشغيل الأوامر عن بعد أي تمكنه من الوصول لثغرة RCE، وهذا يعنى أنه أصبح لديه كامل السيطرة على الخادم.

الاحتيال وتنفيذ أكواد خبيثة في جانب العميل

قد يستطيع المهاجم رفع ملف HTML يحتوي على محتوى احتيالي أو قد يحتوي على بعض أكواد JS خبيثة ليقوم تطبيق الويب بعرض الملف في مسار الرفع الخاص بالملف بشكل HTML عادي، وهذا ما قد يشكل في انعدام ثقة المستخدمين فيما بعد.

تغيير محتوي الملفات الحساسة

فشل التحقق من اسم الملف قد يمكن المهاجم من إجراء تغييرات على بعض الملفات الحساسة من خلال رفع الملف بنفس الاسم، في حالة تعرض الخادم أيضًا لهجمات من نوع تجاوز المسار (Path Traversal) يمكن للمهاجم رفع الملفات إلى مسارات أخرى.

هجوم حجب الخدمة 

اذا لم يكن هناك حد للحجم تم تحديده من قبل الخادم لرفع ملف عليه، فعدم التحقق من حجم الملف يمكن أن يشكل خطرًا، حيث قد يؤدي ذلك إلى هجوم حجب الخدمة (DoS Attack)، حيث يعتمد هذا السيناريو على قيام المهاجم بمحاولة ملء المساحة المتاحة على الخادم بشكل كامل، مما يعرض الخادم للتوقف ويؤثر على قدرته على استقبال الطلبات أو توفير الخدمة بشكل فعّال.

طرق الحماية من ثغرة Unrestricted File Upload

السماح بقيام المستخدمين برفع الملفات أمر شائع على تطبيقات الويب ولا يجب أن يكون خطيرًا، إذا ما قام المطور باتخاذ الاحتياطات والإجراءات الصحيحة لقبول رفع الملف.

وتُعتبر الطريقة الأكثر فعالية لحماية تطبيقات الويب من ثغرة Unrestricted File Upload هي تنفيذ جميع الخطوات التالية:

  • التحقق من امتداد الملف قبل رفعه ويفضل استخدام قائمة بيضاء (White List) بدلاً من قائمة سوداء (Black List)
  • تأكد من أن اسم الملف لا يحتوي على أي Path traversal مثل ../
  • لا تقبل برفع الملف بنفس الاسم ولكن قم بإعادة تسميته تجنباً لإمكانية استبدال الملف لملف آخر.
  • لا تقم بتحميل الملفات إلى نظام تخزين الملفات الدائم للخادم.
  • بدلاً من محاولة استخدام آليات تحقق يدوية من طرف المطور، قد يكون الحل الأمثل هو استخدام Framework جاهزة للقيام بعملية التحقق بشكل أكثر دقة.

الخاتمة 

ندرك أهمية فهم ثغرة Unrestricted File Upload وكيف يمكن أن تكون نقطة ضعف في أمان تطبيقات الويب، وتبين لنا أن عدم التحقق الصحيح من الملفات عند الرفع قد يفتح الأبواب أمام هجمات خطيرة، كالاستيلاء الكامل على النظام.

وفي سياق حماية التطبيقات الويب، تعد ثغرات تحميل الملفات تحديًا كبيرًا، ولكن يمكن تفادي معظم المشاكل من خلال اتباع طرق الحماية التي قمنا بطرحها في الأعلى.

المصادر 

OWASP
Portswigger
Invicti


Unrestricted File Upload RCE Shell Web Phishing XSS HTML Py Php Sh White List Abdelrahman Nasr