2010-10-03, 07:26 PM
السلام عليكم ورحمة الله وبركاته
بحثت في النت ووجدت التالي ولكني لم أفهم منه شيء
اتمنى أن تفيدكم تجدوا حلا للمشكلة
المصدربحثت في النت ووجدت التالي ولكني لم أفهم منه شيء
إقتباس :انتشر بتاريخ اليوم 7-7-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']);
الغريب في الموضوع اكتشاف ثغرة بسبب خطأ بهذه البساطة (المفروض أول شيء يتعلمه مبرمج php
عند التعامل مع مدخلات المستخدم هو التأكد منها فكيف اذا كان التعامل مع مدخلات مستخدم سيتم
تمريرها لقواعد بيانات!!) في سكريبت منتديات يمكننا القول أنه حقق شهرة لا بأس بها وزاد من ذلك
"تفنن" المكتشف ببرمجة استغلال يزيد حجمه عن 400 سطر!
اتمنى أن تفيدكم تجدوا حلا للمشكلة
http://www.v4-team.com/cc/showthread.php?t=14911