
يحتوي هذا المستودع على مجموعة أدوات عملية للبحث والتحقق من صحة CVE-2025-4396، وهي ثغرة حقن SQL أعمى قائمة على الوقت غير مصادق عليها تؤثر على إضافة WordPress Relevanssi عبر معلمة `cats`.
يحتوي هذا المستودع على مجموعة أدوات عملية للبحث والتحقق من صحة CVE-2025-4396، وهي ثغرة حقن SQL أعمى قائم على الوقت غير مصادق عليها تؤثر على إضافة Relevanssi في ووردبريس من خلال وسيط cats.
تم بناء المشروع لمشاركات فريق الأرجواني المصرح بها بهدف:
يتضمن المستودع:
إخلاء مسؤولية
يُقدَّم هذا المشروع للأغراض التعليمية والتحقق الدفاعي والاختبارات الأمنية المصرح بها فقط.
لا تستخدمه ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها.
CVE-2025-4396 هي ثغرة حقن SQL تؤثر على وظيفة البحث في إضافة Relevanssi في ووردبريس.
في السيناريو المختبر، يمكن الوصول إلى المشكلة من خلال سير عمل البحث، وبشكل أكثر تحديدًا من خلال وسيط cats. يسمح مسار الشيفرة الضعيفة بإدخال المهاجم بالتأثير على استعلام SQL الذي يولده الإضافة.
نظرًا لأن نقطة النهاية الضعيفة قابلة للوصول دون مصادقة مسبقة، يمكن لمهاجم عن بُعد استغلال الثغرة لإجراء حقن SQL غير مصادق عليه.
يتضمن التأثير العملي:
توجد الثغرة لأن المدخلات التي يتحكم بها المستخدم من وسيط متعلق بالبحث لا تتم معالجتها بأمان قبل تضمينها في استعلام SQL.
عمليًا، هذا يعني أن المهاجم يمكنه حقن تعبيرات SQL في منطق استعلام النهاية الخلفية وإجبار قاعدة البيانات على تقييم شروط إضافية.
تُستغل الثغرة في وضع أعمى، مما يعني أن التطبيق لا يعرض أخطاء SQL أو نتائج قاعدة البيانات الخام مباشرة.
بدلاً من قراءة مخرجات الاستعلام من الصفحة، يطرح المهاجم على قاعدة البيانات سلسلة من الأسئلة بنعم/لا ويلاحظ أحد الآثار الجانبية:
يعتمد الاستغلال على دوال SQL مثل SLEEP() لإنشاء فرق قابل للقياس في وقت استجابة الخادم.
هذا يسمح للمهاجم باستنتاج البيانات دون رؤيتها مباشرة.
على سبيل المثال، يمكن للمهاجم طرح أسئلة مثل:
$؟"من خلال تكرار هذه العملية، يمكن للمهاجم إعادة بناء تجزئة كاملة حرفًا حرفًا.
يقوم النهج القياسي بالتكرار عبر مجموعة أحرف معروفة واختبار كل مرشح واحدًا تلو الآخر.
لكل موضع في التجزئة المستهدفة:
هذه الطريقة بسيطة وموثوقة، ولكنها بطيئة نسبيًا لأنها قد تتطلب العديد من الطلبات لكل حرف.
يستخدم النهج الأسرع البحث الثنائي على قيمة ASCII لكل حرف.
بدلاً من السؤال:
a؟"b؟"c؟"يسأل:
هذا يقسم مساحة البحث إلى نصفين مع كل طلب ويقلل عدد طلبات HTTP بشكل كبير.
يسمح الهجوم للمشغل باستخراج قيمة user_pass من جدول wp_users، عادةً لمعرف مستخدم ووردبريس محدد مثل:
1 للمسؤول الافتراضي،في إصدارات ووردبريس الحديثة، قد تستخدم هذه القيمة خط أنابيب كلمات المرور الجديد لووردبريس 6.8+، والذي يجمع بين:
CVE_2025_4396.pyهذا هو النص البرمجي للاستخراج القياسي.
يقوم بحقن SQL أعمى قائم على الوقت كلاسيكي ويستخرج التجزئة المستهدفة حرفًا حرفًا باستخدام بحث خطي عبر مجموعة أحرف ثابتة.
لكل موضع حرف:
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
الوسائط:
-t, --target : عنوان URL المستهدف الضعيف بما في ذلك الوسيط القابل للحقن
-u, --userid : معرف مستخدم ووردبريس المستهدف
-s, --sleep : حد النوم بالثواني
-v, --verbose : تفعيل تسجيل التصحيح
CVE_2025_4396_Stealth.pyهذه هي نسخة البحث الثنائي.
تقوم بنفس هدف الاستخراج مثل النص البرمجي القياسي، ولكنها تستبدل البحث الخطي حرفًا بحرف ببحث ثنائي على قيم ASCII.
لكل موضع:
python3requestsurllib3pip3 install requests urllib3
python3 CVE_2025_4396_Stealth.py -t "https://target.local/?s=test&cats=" -u 1 -s 3 -v
بمجرد استخراج تجزئة كلمة المرور من ووردبريس، الخطوة التالية هي كسرها دون اتصال.
ملاحظات حول تجزئة ووردبريس 6.8+. في سير العمل المختبر، قد تبدو القيمة المستخرجة كما يلي:
$wp$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.
بالنسبة لـ Hashcat، الجزء القابل للاستخدام من bcrypt هو:
$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.
ومع ذلك، لا يتم تطبيق bcrypt هذا مباشرة على كلمة المرور الخام. يقوم ووردبريس أولاً بتطبيق مرحلة معالجة مسبقة:
هذا يعني أنه لا يمكن إرسال قائمة كلمات عادية مباشرة إلى Hashcat إذا كنت ترغب في إعادة إنتاج منطق ووردبريس 6.8+ بالضبط.
بدلاً من ذلك، يجب تحويل كل كلمة مرور مرشحة أولاً إلى تمثيل ما قبل التجزئة المتوافق مع ووردبريس.
يتضمن المستودع أيضًا نصًا برمجيًا "مساعدًا" يقوم بـ:
$wp$ عند الحاجة،استخراج التجزئة:
$wp$2y$10$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.تحضير بيئة الكسر:
python3hashcat ومتوفر في PATHتشغيل Auto_Crack.py:
python3 Auto_Crack.py -H '\$wp\$2y\$10\$zPA8xGJMvr.kvAAIIYaCreIMnTDpgw/9o8K7.ONBm/KBbNIywQtu.' -w /usr/share/wordlists/rockyou.txt
نحتاج إلى هروب "$" باستخدام "\" -> التوافق مع bash
يمكن استخدام محتوى الكشف التالي من قبل فرق SOC لتحديد محاولات الاستغلال وقياس النضج الدفاعي.