
ثغرة البرمجة النصية عبر المواقع المخزنة (XSS) بعد المصادقة في إضافة قائمة جهات الاتصال
إخلاء مسؤولية: تم إنشاء هذا المستودع لأغراض تعليمية والإفصاح الأخلاقي فقط. تم الإبلاغ عن الثغرة بشكل مسؤول إلى البائع وتم إصلاحها. لا تستخدم هذه المعلومات لاستغلال الأنظمة دون إذن مناسب.
تم اكتشاف ثغرة تخزين سكربت عبر المواقع (Stored XSS) في إضافة Contact List - Online Staff Directory & Address Book لـ WordPress (الإصدارات <= 3.0.17). تسمح هذه الثغرة للمستخدمين المصادق عليهم بصلاحيات مؤلف (Author) أو أعلى بحقن JavaScript خبيثة في بطاقات جهات الاتصال عبر حقل مخصص مخفي.
عند عرض بطاقة جهة الاتصال في الدليل العام، يتم تنفيذ الحمولة المُحقونة في متصفح أي زائر. إذا قام مسؤول (Administrator) بعرض الصفحة، يمكن تصعيد هذا العيب إلى استيلاء كامل على الحساب (ATO) واختراق الموقع.
<= 3.0.17تنبع الثغرة من تعقيم غير صحيح ومعالجة غير آمنة لمخرجات الحقل المخصص _cl_map_iframe، والذي يُقصد به تضمين خرائط iframe.
1. تخزين البيانات غير الآمن:
في includes/class-contact-list-custom-fields.php (داخل saveCustomFields())، تقوم الإضافة بمعالجة مدخلات _cl_map_iframe باستخدام تعبير نمطي لاستخراج كتلة ``
6. أعد توجيه الطلب. يخزّن الخادم iframe الخبيث.
7. التشغيل: قم بزيارة صفحة الدليل العام حيث يتم تضمين [contact_list]. سيظهر صندوق التنبيه فورًا، مما يؤكد تنفيذ الكود.
POST /wp-admin/post.php HTTP/1.1
Host: TARGET
Content-Type: application/x-www-form-urlencoded
Cookie: [Author_Session_Cookies]
post_title=Hacked+Contact&post_type=contact&action=editpost&_cl_map_iframe=
لإصلاح هذه الثغرة، يجب على مطوّري الإضافة:
wp_kses() مع مصفوفة صارمة من وسوم HTML والخصائص المسموح بها عند حفظ _cl_map_iframe. امنع الخصائص مثل onload وonerror أو عناوين javascript:.