مقال : قراءة ملفات السيرفر عن طريق الثغرات
السلام عليكم
في العديد من الحالات تحتاج لقراءة ملف معين من السيرفر كملف config او اي ملف اخر لاثبات الثغرة او التاكد منها او حتى الحصول على معلومات اضافية سنشرح اليوم كيف يمكن قراءة ملفات معينة واستغلال الثغرات لقراءة الملفات بالاضافة الى كيفية اصلاح وتجنب مثل هذه الثغرات وكيفية ايجادها في حالة بحث white box pentest .
اولاً : أستخدام PHP commands injection
في ثغرات php commands injection لديك الكثير من الخيارات لكن لنفرض انك تريد قراءة ملف معين في السيرفر سوف اقوم بشرح مثال بسيط مستعمل دالة eval في php .
لنفرض انه هناك مكان لتجريب كود php وغير امن فقط يخفي اخطاء الصفحة . وبه الكود الاتي :
الصفحة تستعمل test لاخذ الكود ونقله لدالة eval التي تقوم بتنفيذ الstring كامر من اوامر php .
مثلاً لو استعملنا
سوف نحصل على التالي :
لقد عمل الكود وظهر رقم 1 الان لنحاول قراءة ملف موجود في بارتشن C:/X اولاً مسار السيرفر يكون كالاتي c/xampp/htdocs/isecur1ty هذا هو الافتراضي من خل معرفة السيرفر لكن ممكن ان يكون مختلف في كل الاحوال سوف نستعمل ../ للرجوع الى الملف السابق سوف نبحث عن ملف اسمه test.txt يحتوي على رقم سري للسيرفر لا نعرف اين مساره سوف نقوم بالبحث في التدريج من الملف الحالي ورجوعاً .
انا صعنت الملف في c مباشرة لكن سافرض اني لا اعرف مساره .
ساستعمل امر echo لاظهار النتائج وساستعمل دالة file_get_contents لاخذ محتوى الملف لكن يجب ان يكون السمار صحيح لذلك سنجرب الان :
http://127.0.0.1/isecur1ty/index.php?test=echo file_get_contents(‘test.txt’)x
لم يظهر شيء اذن المسار غير صحيح لنقوم بارجاعه ملجد الى الوراء باستخدام (../) ونرى النتائج
http://127.0.0.1/isecur1ty/index.php?test=echo file_get_contents(‘../test.txt’)x
لم يظهر شيء ايضاً نستخدم الرجوع ايضاً
http://127.0.0.1/isecur1ty/index.php?test=echo file_get_contents(‘../../test.txt’)x
لاشيء ظهر
http://127.0.0.1/isecur1ty/index.php?test=echo file_get_contents(‘../../../test.txt’)x
!! لقد ظهر محتوى ملف test.txt
وبهذا حصلنا على الملف المراد عن طريق ثغرات php command injection
ثانياً : ثغرات path traversal
لقد شرحنا سابقاً هذا الهجوم يمكنك الاطلاع عليه من هنا منعاً للتكرار .
ثالثاً : ثغرات local file include
في ثغرات LFI احد الدوال تكون تستعمل متغير يمكن التحكم به وهذه الدوال هي (include,include_once,require,require_once) لناخذ المثال التالي
في المثال التالي سوف نقوم باستغلال دالة include
http://127.0.0.1/isecur1ty/index.php?filename=/include/textfile.txt
سوف نقوم الان بنفس طريقة تخمين المسار بوضع ../ الى ان يظهر لدينا الملف
السمار الصحيح هو
http://127.0.0.1/isecur1ty/index.php?filename=../../../test.txt
هذه الطريقة التي يحصل بها اكثر المخترقين على ملفات الconfig او ملفات مهمة وفي بعض الاحيان يسرقون النصوص المصدرية للملفات حتى يبحو على ثغرات او معلومات مهمة اخرى او حسابات او تعليقات برمجية او حتى معرفة البرمجيات المستخدمة والمكاتب هناك طرق اخرى سوف نشرحها في وقت لاحق .
لاي استفسار يمكنك التواصل معي عبر حسابي في تويتر هنا
تحياتي وتحيات فريق isecur1ty
السلام كيف يمكن إستغلال المسارات المفتوحة في المجلادات دات صلاحيات 777 في إختبار الإختراق وشكرا
LFI
can be used to injection PHP code to get RCE without using any external Server
https://highon.coffee/blog/lfi-cheat-sheet/
يعطيط العافيه اخ عبدالله حسام
هناك ايضا طرق اخرى مثل ثغرات سكيول انجكشن عن طريق load_file
يستطيع قرائة الملفات لو كان الماجيك غير مفعل
————
ايضا هناك طريقة اخرى عن طريق دالة creat function وهي صناعة كود حقن php او دالة وظيفتها قرائة المسارات
والطرق كثيره لاتعد
الف شكر لك مره اخرى
وايضا دالة fopen+fwrite
لو كانت داخل get