ثغرة في ووردبريس 2.8.3
اكتشفت ثغرة في سكريبت التدوين ووردبريس و WordPress-MU أصابت الاصدار 2.8.3 وجميع الاصدارات التي قبله, تمكّن هذه الثغرة المهاجم من تغيير كلمة مرور مدير المدونة دون علمه عن طريق استغلال خطأ في دالة تغيير كلمة المرور reset_password الموجودة في ملف wp-login.php.
الثغرة لا تمكّن المهاجم من معرفة كلمة المرور بعد تغييرها ولا تمكّنه من الوصول المباشر للوحة التحكم أيضا وكل ما يستطيع القيام به هو تغيير كلمة مرور مدير المدونة أو أي عضو يختاره (في حال كانت المدونة متعددة المستخدمين) دون علمه عن طريق تخطي تأكيد التغيير الذي يصل الى الايميل بسبب الخطأ في الدالة reset_password.
عندما يريد أحد المستخدمين تغيير كلمة المرور الخاصة به يتوجّه للرابط:
/wp-login.php?action=lostpasswordفيطلب منه سكريبت ووردبريس ادخال اسم المستخدم أو الايميل المسجّل ثم يقوم بارسال ايميل تأكيدي يحتوي على رابط تغيير كلمة المرور يشبه هذا:
/wp-login.php?action=rp&key=JR9PSKe5UDeqRCFkOXEsعندما يقوم المستخدم بالضغط على الرابط يتم تغيير كلمة المرور الخاصة به بشكل أوتوماتيكي وارسالها على ايميله حيث يمكنه تغييرها مرة أخرى بعد الدخول للوحة التحكم.
اذا اطلعنا على الكود المصدري لملف wp-login.php سنرى في السطر 188 فلترة مدخلات المستخدم بشكل صحيح (بهذه الحالة هو المتغير key) عن طريق استخدام regex:
$key = preg_replace(‘/[^a-z0-9]/i’, ”, $key);ثم يتم التأكد من قيمة المتغير key اذا كان فارغ أم لا بالسطر 190:
if ( empty( $key ) )بعد ذلك اكمال عملية تغيير كلمة المرور. من ينظر للكود السابق قد لا يجد أي شيء يمكن استغلاله لكن الخطأ الذي وقع به المبرمج هنا أنه لم يتأكد من نوع المتغير key وهنا تمكّن المهاجم من استغلال ذلك عن طريق تحدد key على أنه مصفوفة Array وليس String.
/wp-login.php?action=rp&key[]=
حتى تاريخ كتابة هذا الخبر لم يتم اطلاق الاصدار 2.8.4 بعد لكن تم اصلاح الملف wp-login.php في WordPress Trac وأتوقع اطلاق الاصدار 2.8.4 قريبا. كحل مؤقت يمكن ترقيع الثغرة باستبدال السطر 190 الموجود في الملف wp-login.php:
if ( empty( $key ) )بالسطر التالي:
if ( empty( $key ) || is_array( $key ) )
لمزيد من المعلومات: SecurityReason – WordPress Trac
السلام عليكم .
كل ما ادهشني في الامر ان فريق كبير من صفوة web developpement يقعون في خطئ برمجي كهذا .. وهدا يأكد ان كلما كبر مشروع ما كلما زادت نسبة وجود اخطاء امنية وبرمجية به .
اضن ان في 15 يوم لي غبتها حافلة بالاحدات 😀
اخي عبد المهيمن هل يمكنك شرح استغلال الثغرة اكثر ، الترقيع قادم بسرعة !!
طيب خلى بالك بقه يا عبد المهيمن من المدونه بتاعتك يا برنس 😛
t4H3r #: انا لما قلت مشروع كبير اقصد قيمة مبرمجيه وكبر خصائصه .. مش ممكن تقارن الاشياء هده مع سكربت لا يتعدى اربع صفحات وإدارة محتوى صغيرة ومبرمجين مبتدئين او تجده مبرمج وااحد على رأس المشروع .
اما من ناحية الهكر فكن متأكد انهم مبيتركوش شئ في حالة يعني كان كبير او صغير به خطئ ما راح يظهر الخطئ … الفرق هو في السكربتات الكبيرة بسرعة يكتشف العيب لكترة العيون عليها هدا هو الفرق .. لاكن كلما كبر الشئ كلما صعبت السيطرة عليه .
قريبا سوف ترى ايضا تغرات في مشاريع في تطور مستمر كmetasploit ومتلها من المشاريع الاخرى
أخى dGeeky
لا اعتقد ان كلما كبر مشروع ما كلما زادت نسبة وجود أخطاء به
أولاً لا يوجد شئ خالى من الأخطاء
لكنى أعتقد إن الهاكرز لا يهتمون إلا بالبرامج أو المشروعات الكبيرة لان عدد مستخدميها أكبر وشهرتها أكبر من البرامج أو المشروعات الصغيرة
فما الفائدة أن يخترق أحد الهاكرز مثلاً موقع لا يعلم به احد أو نظام تشغيل لا يستخدمه إلا عشرة مستخدمين
هذا رأيى
بارك الله فيك يا اخي علي الشرح الوافي