2007-12-30, 01:54 AM
قد تكرم الأخ Xlissa بإعلامنا عن عدة ثغرات امنية بالنسخة الأخير لـ MyBB وهى MyBB 1.2.10
الثغرة تمكن الهكر من رفع ملفات شل من خلال الصور الرمزية او المرفقات بكل من الصيغ
.bmp او .zip او .rar
وبدورى قمت بإخبار فريق الدعم فى المنتدى الأم لـ MyBB
وقاموا بطرح سد للثغرة. لكنه فى نظرى غير كاف..
واليكم الحل الذى استخدم فى منتدانا هنا.
داخل ملف inc/functions_upload.php
ابحث عن
اضف بعدها التالى
ابحث عن
اضف بعدها
ابحث عن
استبدلها بالتالى
داخل ملف attachment.php
ابحث عن
اضف بعده..
ملحوظة: بالنسبة لمشكلة المرفقات.. بما انه لا يوجد فى وثائق الـ php دالة للتحقق من انشاء شكل مصغر لصور الـ bmp فقد عجزت عن ايجاد طريقة للتحقق من صلاحية هذا الأمتداد, لنتأكد اذا كان الملف صورة ام شئ اخر.. ولذلك الكود اعلاه سيرفض المرفقات التى لها هذا الأمتداد.
الثغرة تمكن الهكر من رفع ملفات شل من خلال الصور الرمزية او المرفقات بكل من الصيغ
.bmp او .zip او .rar
وبدورى قمت بإخبار فريق الدعم فى المنتدى الأم لـ MyBB
وقاموا بطرح سد للثغرة. لكنه فى نظرى غير كاف..
واليكم الحل الذى استخدم فى منتدانا هنا.
داخل ملف inc/functions_upload.php
ابحث عن
PHP كود :
$img_dimensions = @getimagesize($mybb->settings['avataruploadpath']."/".$filename);
if(!is_array($img_dimensions))
{
PHP كود :
@unlink($mybb->settings['avataruploadpath']."/".$filename);
ابحث عن
PHP كود :
if($img_dimensions[2] != $img_type || $img_type == 0)
{
اضف بعدها
PHP كود :
@unlink($mybb->settings['avataruploadpath']."/".$filename);
ابحث عن
PHP كود :
if($ext == "gif" || $ext == "png" || $ext == "jpg" || $ext == "jpeg" || $ext == "jpe")
PHP كود :
if($ext == "gif" || $ext == "png" || $ext == "jpg" || $ext == "jpeg" || $ext == "jpe" || $ext =="bmp")
ابحث عن
PHP كود :
if($ext == "txt" || $ext == "htm" || $ext == "html" || $ext == "pdf")
{
header("Content-disposition: attachment; filename={$attachment['filename']}");
}
اضف بعده..
PHP كود :
elseif($ext == "zip" || $ext == "rar")
{
header("Content-disposition: attachment; filename={$attachment['filename']}");
}
ملحوظة: بالنسبة لمشكلة المرفقات.. بما انه لا يوجد فى وثائق الـ php دالة للتحقق من انشاء شكل مصغر لصور الـ bmp فقد عجزت عن ايجاد طريقة للتحقق من صلاحية هذا الأمتداد, لنتأكد اذا كان الملف صورة ام شئ اخر.. ولذلك الكود اعلاه سيرفض المرفقات التى لها هذا الأمتداد.