01-08-2011, 05:57 PM
السلام عليكم ورحمة الله وبركاته :
ثغرة SQL Injection في منتديات MyBB 1.4.6
انتشر بتاريخ 23/6/2009 استغلال لثغرة SQL Injection اكتشفت في جميع الاصدارات قبل 1.4.6 من منتديات MyBB المفتوحة المصدر. تم برمجة الاستغلال بطريقة تمكن المهاجم من زرع ملف php shell في السيرفر بكل سهولة ليصبح بالنهاية قادر على تنفيذ أوامر على السيرفر.
الاستغلال يبدء SQL Injection وينتهي Remote Code Execution! شخصيا أجدها طريقة جميلة لتطوير استغلال ثغرات SQL Injection ومن النادر أن أجد استغلالات برمجت بهذه الطريقة
بالنسبة لسبب الثغرة فيعود لخطأ برمجي في الملف: inc/datahandlers/user.php عند تمرير المتغير birthdayprivacy وعدم التأكد من مدخلات المستخدم بطريقة صحيحة
لو اطلعنا على الملف user.php في الاصدار 1.4.6 سنلاحظ بالسطر 1111 تمرير المتغير birthdayprivacy دون التأكد من مدخلات المستخدم بأي شكل كان:
أما في الاصدار 1.4.7 سنرى بنفس السطر الترقيع وهو استخدام الدالة escape_string لكي لا يتمكن المهاجم من حقن استعلام SQL آخر عند تمرير المتغير السابق للاستعلام الأصلي.
لذا وجب التحذير
ادارة سكيورتي العرب
ثغرة SQL Injection في منتديات MyBB 1.4.6
انتشر بتاريخ 23/6/2009 استغلال لثغرة SQL Injection اكتشفت في جميع الاصدارات قبل 1.4.6 من منتديات MyBB المفتوحة المصدر. تم برمجة الاستغلال بطريقة تمكن المهاجم من زرع ملف php shell في السيرفر بكل سهولة ليصبح بالنهاية قادر على تنفيذ أوامر على السيرفر.
الاستغلال يبدء SQL Injection وينتهي Remote Code Execution! شخصيا أجدها طريقة جميلة لتطوير استغلال ثغرات SQL Injection ومن النادر أن أجد استغلالات برمجت بهذه الطريقة
بالنسبة لسبب الثغرة فيعود لخطأ برمجي في الملف: inc/datahandlers/user.php عند تمرير المتغير birthdayprivacy وعدم التأكد من مدخلات المستخدم بطريقة صحيحة
لو اطلعنا على الملف user.php في الاصدار 1.4.6 سنلاحظ بالسطر 1111 تمرير المتغير birthdayprivacy دون التأكد من مدخلات المستخدم بأي شكل كان:
كود :
$this->user_update_data['birthdayprivacy'] = $user['birthdayprivacy'];
أما في الاصدار 1.4.7 سنرى بنفس السطر الترقيع وهو استخدام الدالة escape_string لكي لا يتمكن المهاجم من حقن استعلام SQL آخر عند تمرير المتغير السابق للاستعلام الأصلي.
كود :
$this->user_update_data['birthdayprivacy'] = $db->escape_string($user['birthdayprivacy']);
لذا وجب التحذير
ادارة سكيورتي العرب