CVE-2025-2945_PoC
pgAdmin إثبات المفهوم
⚠️ إخلاء مسؤولية
يحتوي هذا المستودع على استغلال إثبات المفهوم لـ CVE-2025-2945، وهو ثغرة حرجة لتنفيذ الأوامر عن بُعد في إصدارات pgAdmin 4 قبل 9.2. استخدم هذا الكود فقط في البيئات التي تملكها أو لديك إذن صريح لاختبارها. المؤلف غير مسؤول عن أي إساءة استخدام أو ضرر ناتج عن هذا البرنامج.
جدول المحتويات
- نظرة عامة
- تفاصيل الثغرة (CVE-2025-2945)
- المتطلبات الأساسية
- الإعداد والتثبيت
- الاستخدام
- سير عمل الاستغلال
- الاكتشاف والتخفيف
- الترخيص
نظرة عامة
يوفر هذا المستودع سكربت بايثون مستقلًا — pgadmin_rce.py — يحاكي وظيفة وحدة Metasploit لـ CVE-2025-2945. عند تشغيله ضد مثيل pgAdmin 4 الضعيف (الإصدارات 8.10–9.1)، فإنه سيقوم بـ:
- المصادقة على pgAdmin 4 باستخدام بيانات اعتماد صالحة.
- تهيئة جلسة أداة الاستعلام (محرر SQL).
- اكتشاف معرّف اتصال خادم صالح (مجموعة الخادم ومعرّف الخادم).
- إرسال حمولة خبيثة عبر معامل
query_commited لتفعيل eval() على الخادم.
- ملاحظة استجابة HTTP 500 (تشير إلى أن الحمولة نُفِّذت على الجزء الخلفي).
نظرًا لأن نقاط النهاية الضعيفة تعتمد على دالة eval() المدمجة في بايثون دون تعقيم لإدخال المستخدم، يمكن للمستخدم المصادق إجبار pgAdmin على تشغيل كود بايثون تعسفي على الجهاز المضيف، مما يؤدي إلى تنفيذ أوامر عن بُعد كامل.
تفاصيل الثغرة (CVE-2025-2945)
- البرنامج المتأثر:
- إصدارات pgAdmin 4 من 8.10 حتى 9.1 (شاملة)
- تم الإصلاح في:
- إصدار pgAdmin 4 9.2 (صدر في 4 أبريل 2025)
- درجة CVSS v3.1: 9.9 (حرجة)
- الأثر:
- يمكن لمهاجم مصادق إرسال معامل
query_commited (أو high_availability في وحدة النشر السحابي) مُصمم خصيصًا إلى استدعاء eval() على الخادم، مما يؤدي إلى تنفيذ كود تعسفي تحت حساب خدمة pgAdmin.
- المراجع:
المتطلبات الأساسية
-
Python 3.7+
-
حزم بايثون (ثبّتها عبر pip):
pip install requests faker
الاستخدام
شغّل السكربت مع الوسائط المطلوبة:
python3 pgadmin_rce.py -t <target_url> -u <username> -p <password>
استبدل <target_url> بعنوان URL الأساسي لمثيل pgAdmin (مثل http://localhost:5050)، و<username>/<password> ببيانات اعتمادك الصالحة.
سوف يقوم السكربت بـ:
- تسجيل الدخول إلى pgAdmin واستخراج ملف تعريف ارتباط للجلسة.
- استرجاع رمز CSRF.
- إنشاء جلسة أداة استعلام جديدة.
- اكتشاف معرّف اتصال الخادم.
- إرسال الحمولة الخبيثة.
- طباعة حالة استجابة HTTP لطلب الحمولة (
500 = تم الاستغلال).
سير عمل الاستغلال
يصف التسلسل التالي كيفية إرسال الاستغلال للحمولة الخبيثة:
- تسجيل الدخول – استخدم بيانات الاعتماد المقدمة للمصادقة على pgAdmin.
- استرجاع رمز CSRF – يتطلب كل طلب إلى pgAdmin رمز CSRF. يلتقط السكربت الرمز من استجابة تسجيل الدخول.
- إنشاء جلسة أداة الاستعلام – تتم تهيئة أداة الاستعلام عبر طلب HTTP يعيد معرّف الجلسة.
- اكتشاف اتصال الخادم – يجلب السكربت مجموعات الخوادم ومعرّفاتها لتحديد اتصال صالح.
- إرسال الحمولة الخبيثة – توضع الحمولة في معامل
query_commited وتُرسل إلى نقطة النهاية الضعيفة.
- ملاحظة الاستجابة – تشير استجابة
500 إلى أن الحمولة وصلت إلى استدعاء eval() ونُفِّذت.
الاكتشاف والتخفيف
- الاكتشاف
- راقب السجلات بحثًا عن أخطاء HTTP 500 الواردة من نقطة نهاية أداة الاستعلام مع حمولات غير عادية في معاملات
query_commited.
- ابحث عن جلسات مصادقة تُنشئ العديد من جلسات أداة الاستعلام خلال فترة قصيرة.
- التخفيف
- قم بالترقية إلى إصدار pgAdmin 4 9.2 أو أحدث فورًا.
- قيّد الوصول إلى واجهة pgAdmin على الشبكات الموثوقة.
- فرض مصادقة قوية وراقب حسابات المستخدمين بحثًا عن نشاط مشبوه.
- إذا تعذّر الترقية، عطّل أو قيّد الوصول إلى وحدتي أداة الاستعلام والنشر السحابي حتى يتم تطبيق التصحيح.
الترخيص
هذا المشروع مرخّص بموجب رخصة MIT – راجع ملف LICENSE للحصول على التفاصيل.