
PoC لـ CVE-2025-30921
إضافة ووردبريس
اسم المكون Newsletters
الإصدار الضعيف <= 4.9.9.7
معرف المكون newsletters-lite
رابط المكون https://wordpress.org/plugins/newsletters-lite/
فئة الثغرة A3: حقن
نوع الثغرة SQL حقن
مدير
عند عرض مخطط إحصائيات النظرة العامة في لوحة تحكم الإضافة (/wp-admin/admin.php?page=newsletters) لإضافة Newsletters الإصدار 4.9.9.7 أو أقل، تحدث ثغرة حقن SQL بسبب عدم كفاية التحقق من الإدخال ومعالجة التهرب من معلمات URL.
من خلال هذه الثغرة، يمكن للمهاجم الحاصل على صلاحيات المدير استغلالها لاستخراج معلومات قاعدة البيانات من الموقع المستهدف.
قم بإعداد موقع ووردبريس مثبت عليه إضافة Newsletters الإصدار 4.9.9.7 أو أقل.
انتقل إلى قائمة لوحة تحكم إضافة Newsletters (/wp-admin/admin.php?page=newsletters).

باستخدام أدوات المطور في المتصفح، ابحث عن action=wpmlwelcomestats&security= في علامة تبويب 'Elements' وتحقق من قيمة security. على سبيل المثال، إذا ظهرت نتيجة البحث كما هو موضح أدناه، دوّن القيمة 22b1ac0de6.
// ...
jQuery.getJSON(newsletters_ajaxurl + 'action=wpmlwelcomestats&security=22b1ac0de6', ajaxdata, function(json) {
// ...

أدخل قيمة security التي دوّنتها في قسم <SECURITY VALUE> من مسار URL أدناه وأرسل طلبًا إلى ذلك URL
http://localhost:8080/wp-admin/admin-ajax.php?action=wpmlwelcomestats&security=<SECURITY VALUE>&type=years&chart=bar&from=2024-12-31&to=2024-12-31&history_id=FOO%27+UNION+SELECT+(CONCAT((DATABASE()),%22-%22,(@@VERSION))),NULL+LIMIT+1,2+%23
عند طلب URL الذي تحدث فيه ثغرة حقن SQL في PoC أعلاه، يتم استدعاء الدالة ajax_welcomestats داخل الملف /wp-content/plugins/newsletters-lite/wp-mailinglist-plugin.php.
في هذه المرحلة، يتم استخدام معامل الطلب history_id مباشرة كشرط في سلسلة استعلام SQL وتهيئته كمتغير $history_condition. ثم يتم تمرير هذا المتغير إلى استعلام قاعدة البيانات دون أي معالجة تهرب.

لذلك، نظرًا لعدم وجود تحقق أو معالجة تهرب للقيم المدخلة في معامل URL history_id، تحدث ثغرة حقن SQL. (لاحظ أن معاملي URL from و to معرضان أيضًا لهجمات حقن SQL بسبب عدم كفاية التحقق من الإدخال ومعالجة التهرب.)
من بين معلمات URL، يحتوي
history_idعلى حمولة حقن SQL، مما يسمح بالاستعلام عن اسم قاعدة البيانات (DATABASE()) والإصدار (@@VERSION). على سبيل المثال، عندما تكون قيمةsecurityهي22b1ac0de6، قم بالوصول إلى URL التالي.
http://localhost:8080/wp-admin/admin-ajax.php?action=wpmlwelcomestats&security=22b1ac0de6&type=years&chart=bar&from=2024-12-31&to=2024-12-31&history_id=FOO%27+UNION+SELECT+(CONCAT((DATABASE()),%22-%22,(@@VERSION))),NULL+LIMIT+1,2+%23
عند فحص استجابة طلب URL، يمكنك تأكيد أن اسم قاعدة البيانات ومعلومات الإصدار قد تم كشفها بسبب ثغرة حقن SQL عبر المعامل history_id.
