
CVE-2023-3460


Subscriber، وإذا ألقينا نظرة على جدول wp_usermeta في mysql، فسنرى أن قيمة wp_capabilities معينة إلى مصفوفة مسلسلة ومن هناك يتم تحديد دورنا والذي في هذه الحالة هو Subscriber.
wp_capabilities؟ حسنًا، يمكننا تمرير wp_capabilities كمعامل في طلب POST أثناء التسجيل مثل هذا:
is_metakey_banned وهذه الدالة تعمل عن طريق فحص بعض القيم مثل "cap_key" و"wp_capabilities" و"wp_user_level" و"user_activation_key" إلى آخره... ما يهمنا هو wp_capabilities لكن إذا كانت موجودة في نص الطلب فسوف تصل إلى break هناك لمنعنا من تغيير دورنا.
à, è, ì, ò, ù, À, È, Ì, Ò, Ù افتراضيًا. إذًا، ماذا سيحدث إذا استخدمنا هذه الأحرف في نص الطلب بشيء مثل wp_càpabilities=administrator؟ حسنًا، لن يتم الوصول إلى نقطة الإيقاف في السطر 182 في class-user.php ويمكننا تجاوز دالة is_metakey_banned.


a:1:{s:13:"administrator";b:1;} حسنًا، دعنا نجربها ونمررها مباشرة إلى المعامل الخاص بنا.
wp_capabilities لكن هذا ليس ما توقعناه.
wp_capabilities الخاصة بالمدير، نرى أنها مصفوفة مسلسلة وهذا ما نريده. لذا wordpress لديه أسلوب التسلسل الخاص به، ويمكننا استخدام ذلك لتمرير قيمتنا كمصفوفة ثم يقوم wordpress بالباقي نيابةً عنا. هكذا تبدو حمولتنا wp_càpabilities[administrator]=1.
wp_capabilities قد تغيرت إلى a:1:{s:13:"administrator";s:1:"1";}، وبذلك يمكننا الآن تسجيل الدخول كمدير.

Super AdminAdministratorEditorAuthorContributorContributorPages