
منصة استغلال واختبار لـ CVE-2025-2945
هذا هو بحثي حول CVE-2025-2945. يحتوي هذا المستودع على منصة اختبار مع postgress وpgadmin المعرّض للثغرة، والاستغلال.
روابط مفيدة:
في الواجهة الخلفية لـ pgAdmin، المكتوبة بلغة Python، يوجد نقطتا نهاية تفتقران إلى التنظيف السليم. النقطتان هما:
/sqleditor/query_tool/download - وسيط query_commited/cloud/deploy - وسيط high_availabilityلنلقِ نظرة على كود sqleditor:
for key, value in data.items():
if key == 'query':
sql = value
if key == 'query_commited':
query_commited = (
eval(value) if isinstance(value, str) else value
)
ما نراه هنا هو أن قيمة query_commited تُمرَّر مباشرةً إلى دالة eval(). يمكنك الاطلاع على وثائق eval.
أيضًا، انظر إلى كود pgacloud:
def _create_google_postgresql_instance(self, args):
credentials = self._get_credentials(self._scopes)
service = discovery.build('sqladmin', 'v1beta4',
credentials=credentials)
high_availability = \
'REGIONAL' if eval(args.high_availability) else 'ZONAL'
نفس المشكلة هنا.
لا يزال الوصول إلى نقاط النهاية هذه يتطلب بيانات اعتماد صالحة والوصول إلى pgadmin. لكن أي مهاجم قادر على الوصول إليه، يمكنه أيضًا تمرير أي قيمة إلى eval. وهو ما يعادل تنفيذ أي سطر برمجي واحد بلغة Python.
الاستغلال بسيط ومباشر إلى حد كبير. انظر إلى exploit/src/main.py. لا تنسَ تحديث ملف الإعدادات (config) للحصول على قشرة عكسية (reverse shell).
لإعداد المنصة، قم بتشغيل هذا:
cd stand
docker compose up -d
وهذا كل شيء. أصبح pgAdmin الآن متاحًا على http://localhost:8080. بيانات الاعتماد الافتراضية هي:
[email protected]
admin
لا تتردد في تعديل ملف .env و stand/init-db/01-init.sql.
من إنتاج I3r1h0n.