السلام عليكم ورحمة الله وبركاته
بدأت منذ أسبوع فتح ملفات نسخة vBulletin 3.5.0 العجيبه والتي تسعى مجموعة jelsoft أن تجعلها نسخ ثابته في الأشهر القادمه ووصلت بتطويرها حتى الان الى إصداره أسمتها Candidate 3 وهذا يعني أن النسخه ثبتت بعد إصدارات البيتا التي طرحتها منذ فتره وعلى مايبدوا أنها ستطلق النسخه الرسميه الثابته على بداية العام الجديد 2006م وأرى أن بعض الأخوان هنا بسوالف تسرع بتركيب هذه النسخه والتي لا يعلم أحد عنها سوى خاصية الـ plugins و الـ ajax .
قمت بالبحث عن الثغرات في هذه النسخه وهذا أول الخير بإذن الله
ثغره من نوع Path Disclosure ومستواها متوسط وعن طريقها يستطيع المخترق معرفة دليل الموقع موجود بأي مكان على الخادم
الثغره موجوده في ملف class_core.php وبالتحديد في سطر رقم 1365
كود PHP:
foreach ($this->superglobal_lookup AS $arrayname)
{
$registry->superglobal_size["$arrayname"] = sizeof($GLOBALS["$arrayname"]);
foreach (array_keys($GLOBALS["$arrayname"]) AS $varname)
{
unset($GLOBALS["$varname"]); <<------ تقوم بإزالة المتغيرات من المصفوفه العامه وهنا الخطأ حيث يجب ان تتأكد من المتغير قبل إزالته وكما تلاحظون لا يوجد شرط للتحقق
}
}
الترقيع:
1- افتح ملف class_core.php وابحث عن السطر التالي :
كود PHP:
unset($GLOBALS["$varname"]);
2- إستبدله بالأتي:
كود PHP:
if( !in_array($varname, $this->superglobal_lookup ))
unset($GLOBALS["$varname"]);
3- إحفظ الملف وقم برفعه.
تحياتي لكم