ضيف المهاجر
12 - 09 - 2005, 11:52
ثغره من نوع Path Disclosure ومستواها متوسط وعن طريقها يستطيع المخترق معرفة دليل الموقع موجود بأي مكان على الخادم
الثغره موجوده في ملف class_core.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 وابحث عن السطر التالي :
unset($GLOBALS["$varname"]);
2- إستبدله بالأتي:
if( !in_array($varname, $this->superglobal_lookup ))
unset($GLOBALS["$varname"]);
3- إحفظ الملف وقم برفعه.
تحياتي لكم
الموضوع منقول لأخي العندليب ...
تحياتي
الثغره موجوده في ملف class_core.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 وابحث عن السطر التالي :
unset($GLOBALS["$varname"]);
2- إستبدله بالأتي:
if( !in_array($varname, $this->superglobal_lookup ))
unset($GLOBALS["$varname"]);
3- إحفظ الملف وقم برفعه.
تحياتي لكم
الموضوع منقول لأخي العندليب ...
تحياتي