اكتشف خطأ برمجي في مفسّر لغة PHP الخاص بنظام ويندوز في الاصدار 5.2.9 وبعض الاصدارات السابقة يتمكن المهاجم من استغلاله لتنفيذ أوامر على النظام حتى لو كان الوضع الآمن مفعّل من اعدادات ملف php.ini, ويعود السبب لخطأ في طريقة تعامل النظام و مفسّر لغة PHP مع هيكلة الملفات في نظام ويندوز.

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”.”rn”);
fwrite($batch,”exit”);
بهذه الحالة بفرض أننا أدخلنا الأمر dir هذا يعني أن محتوى الملف cmd.bat أصبح:
dir > abysssec.txt
exit
وعندها نستطيع تشغيل ملف cmd.bat باستخدام الدالة exec بهذا الشكل:
exec(“start cmd.bat”);

ليتم حفظ الناتج داخل الملف abysssec.txt وعرضه عن طريق الأمر:

require(“abysssec.txt”);
للاطلاع على الثغرة وتحميل الاستغلال: Milw0rm: 8799
Share on FacebookShare on Google+Tweet about this on TwitterShare on LinkedIn