السلام عليكم

في العديد من الحالات تحتاج لقراءة ملف معين من السيرفر كملف config او اي ملف اخر لاثبات الثغرة او التاكد منها او حتى الحصول على معلومات اضافية سنشرح اليوم كيف يمكن قراءة ملفات معينة واستغلال الثغرات لقراءة الملفات بالاضافة الى كيفية اصلاح وتجنب مثل هذه الثغرات وكيفية ايجادها في حالة بحث white box pentest  .

 

اولاً : أستخدام PHP commands injection


في ثغرات php commands injection لديك الكثير من الخيارات لكن لنفرض انك تريد قراءة ملف معين في السيرفر سوف اقوم بشرح مثال بسيط مستعمل دالة eval في php .

لنفرض انه هناك مكان لتجريب كود php وغير امن فقط يخفي اخطاء الصفحة . وبه الكود الاتي :

7-10-2016 2-59-35 PM

الصفحة تستعمل test لاخذ الكود ونقله لدالة eval التي تقوم بتنفيذ الstring كامر من اوامر php .

مثلاً لو استعملنا

 

http://127.0.0.1/isecur1ty/index.php?test=echo%201;x

سوف نحصل على التالي :

7-10-2016 3-01-09 PM

لقد عمل الكود وظهر رقم 1 الان لنحاول قراءة ملف موجود في بارتشن C:/ اولاً مسار السيرفر يكون كالاتي 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

7-10-2016 3-15-37 PM

لم يظهر شيء اذن المسار غير صحيح لنقوم بارجاعه ملجد الى الوراء باستخدام (../) ونرى النتائج

http://127.0.0.1/isecur1ty/index.php?test=echo file_get_contents(‘../test.txt’)x

7-10-2016 3-20-17 PM

لم يظهر شيء ايضاً نستخدم الرجوع ايضاً

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

7-10-2016 3-24-54 PM

وبهذا حصلنا على الملف المراد عن طريق ثغرات php command injection

ثانياً : ثغرات path traversal 


لقد شرحنا سابقاً هذا الهجوم يمكنك الاطلاع عليه من هنا منعاً للتكرار .

ثالثاً : ثغرات local file include 


في ثغرات LFI احد الدوال تكون تستعمل متغير يمكن التحكم به وهذه الدوال هي (include,include_once,require,require_once) لناخذ المثال التالي

في المثال التالي سوف نقوم باستغلال دالة include

 

7-10-2016 3-49-18 PM

 

 

http://127.0.0.1/isecur1ty/index.php?filename=/include/textfile.txt

7-10-2016 3-50-13 PM

سوف نقوم الان بنفس طريقة تخمين المسار بوضع ../ الى ان يظهر لدينا الملف

السمار الصحيح هو

http://127.0.0.1/isecur1ty/index.php?filename=../../../test.txt

7-10-2016 3-51-25 PM

هذه الطريقة التي يحصل بها اكثر المخترقين على ملفات الconfig او ملفات مهمة وفي بعض الاحيان يسرقون النصوص المصدرية للملفات حتى يبحو على ثغرات او معلومات مهمة اخرى او حسابات او تعليقات برمجية او حتى معرفة البرمجيات المستخدمة والمكاتب هناك طرق اخرى سوف نشرحها في وقت لاحق .

لاي استفسار يمكنك التواصل معي عبر حسابي في تويتر هنا

تحياتي وتحيات فريق isecur1ty