| خطأ برمجي في PHP 5.2.9 يسمح بتخطي الوضع الآمن بنظام ويندوز |
| الكاتب عبدالمهيمن الآغا |
| الأربعاء, 27 مايو 2009 14:32 |
|
اكتشف خطأ برمجي في مفسّر لغة PHP الخاص بنظام ويندوز في الاصدار 5.2.9 وبعض الاصدارات السابقة يتمكن المهاجم من استغلاله لتنفيذ أوامر على النظام حتى لو كان الوضع الآمن مفعّل من اعدادات ملف php.ini, ويعود السبب لخطأ في طريقة تعامل النظام و مفسّر لغة PHP مع هيكلة الملفات في نظام ويندوز.
![]() جميعنا يعلم أننا في نظام ويندوز نستخدم Backslash \ عوضا عن Slash / في أنظمة Unix-like لكن نظام ويندوز بحد ذاته لا يفرّق بين الاثنين, أي أن المسار: C:\php هو نفسه C:/php هذه ليست ثغرة بحد ذاتها لكن بسبب تعامل النظام مع هيكلة الملفات بهذا الشكل سيتمكن المهاجم من تخطي الوضع الآمن عن طريق اضافة \ متبوعا بالأمر المراد تنفيذه باستخدام الدالة exec مثلا.
لو اطلعنا على الاستغلال الخاص بهذه الثغرة سنلاحظ أن الفكرة بسيطة جدا فهو يتألف من ملف php يحتوي على حقل لادخال الأمر الذي نريد تنفيذه, في البداية سيتم تعريف الأمر المدخل بالسطر 25:
$cmd = $_REQUEST['cmd'];
ثم سيكتب الى ملف cmd.bat في السطر 27:
$batch = fopen ("cmd.bat","w");
fwrite($batch,"$cmd>abysssec.txt"."\r\n"); fwrite($batch,"exit"); بهذه الحالة بفرض أننا أدخلنا الأمر dir هذا يعني أن محتوى الملف cmd.bat أصبح:
dir > abysssec.txt
exit وعندها نستطيع تشغيل ملف cmd.bat باستخدام الدالة exec بهذا الشكل:
exec("\start cmd.bat");
ليتم حفظ الناتج داخل الملف abysssec.txt وعرضه عن طريق الأمر:require("abysssec.txt");
للاطلاع على الثغرة وتحميل الاستغلال: Milw0rm: 8799
التعليقات (4)
![]() أرسلت بواسطة: arab-tools.com في May 30, 2009
السلام عليكم
الغريب في الأمر ، انه بنفس الإصدار تم اكتشاف ثغرة في سيرفرات يونكس أيضاً وأما بالنسبة للدوال ، فتستطيعون استخدام أي دالة متعلقة بتنفيذ الاوامر وذلك مثل passthru والله العالم موفقين أضف تعليق
يجب عليك الاشتراك بالموقع لتتمكن من كتابة التعليقات, الاشتراك مجاني ويستغرق بضع ثوان فقط!
اذا كنت مشترك مسبقا في الموقع فضلاً قم بتسجيل الدخول. |









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