
نموذج PoC بسيط لثغرة تنفيذ الأكواد عن بُعد (RCE) في CraftCMS المُصنَّفة بـ CVE-2025-32432 ومكتوب بلغة Go
يحتوي هذا المستودع على استغلال احترافي لإثبات المفهوم (PoC) مكتوب بلغة Go، مصمم لإظهار سلسلة ثغرات حرجة في نظام Craft CMS. يستغل هذا الاستغلال ثغرة تسميم السجلات التي تؤدي إلى تضمين الملفات المحلية (LFI)، ويحقق في النهاية تنفيذ الأوامر عن بُعد (RCE) عبر قشرة عكسية (reverse shell).
يتبع الاستغلال سلسلة تنفيذ متعددة المراحل:
تبدأ الأداة بإرسال طلب GET غير مصادق عليه إلى الهدف. من خلال التلاعب بمعامل a وتوفير CraftSessionId مخصص عبر الكوكيز، يمكن للمهاجم إجبار التطبيق على كتابة حمولة PHP في ملف سجل الجلسة الموجود في /var/lib/php/sessions/sess_[sessionId].
للتفاعل مع نقطة النهاية generate-transform، تستخرج الأداة تلقائيًا كوكيز X-CSRF-Token وCRAFT_CSRF_TOKEN الضرورية من الواجهة الإدارية، مما يضمن قبول الخادم لطلب POST اللاحق.
تستغل الأداة نقطة النهاية generate-transform عن طريق تمرير حمولة JSON مصممة خصيصًا. من خلال إساءة استخدام فئة \yii\rbac\PhpManager عبر حقن سلوك (behavior injection)، تُحدث الأداة تضمينًا محليًا للملفات (LFI) لسجل الجلسة المسموم سابقًا. وبمجرد تنفيذ كود PHP في السجل، تستدعي الأداة قشرة عكسية مبنية على Python.
على عكس البرامج النصية التقليدية، تنفذ هذه الأداة مستمع TCP متزامنًا باستخدام Go routines. وهذا يسمح للأداة بالتقاط اتصال القشرة العكسية تلقائيًا على منفذ محدد، مما يوفر تجربة سلسة «بنقرة واحدة» من تسليم الاستغلال إلى الوصول إلى القشرة.
go run main.go
اتبع التعليمات الظاهرة على الشاشة لتوفير عنوان URL للهدف، ومنفذ المستمع، وعنوان IP الخاص بك.
هذه الأداة مخصصة للأغراض التعليمية ولأغراض الاختبار المصرح به فقط.