
CVE-2024-4577 هي ثغرة أمنية تؤثر على خوادم PHP في الإصدارات التالية:
هذه الثغرة هي خلل في تنفيذ التعليمات البرمجية عن بُعد (RCE) يحدث عند استخدام PHP CGI (واجهة البوابة المشتركة) على خوادم Windows. تنشأ المشكلة من إساءة تفسير Windows لبعض الأحرف بسبب استخدام تعيين الأحرف "Best Fit" في بعض إعدادات اللغة. في هذه الحالة، تفسّر وحدة PHP CGI الأحرف الخبيثة على أنها خيارات PHP، مما يسمح للمهاجمين بتنفيذ أوامر خبيثة على الخادم.
ناقل الهجوم الأولي:
لاستغلال الثغرة، ألحق السلسلة التالية بعنوان URL الخاص بالموقع المستهدف:
?%ADd+allow_url_include%3d1+%ADd+auto_prepend_file%3dphp://input
استخدم Burp Suite لاعتراض هذا الطلب وإرساله إلى Repeater.
تغيير طريقة الطلب: حوّل الطلب المعترض إلى طريقة POST ونفّذ كود PHP بسيط، على سبيل المثال:
<?php phpinfo();
إذا كانت الثغرة موجودة، فسيعرض الناتج معلومات متعلقة بإصدار PHP.
يمكن تطبيق طرق مختلفة اعتمادًا على أهداف المهاجم. كانت طريقتي المفضلة هي إعداد تنفيذ في دليل بدء تشغيل Windows باستخدام Burp Suite. قمت بتحويل سكربت reverseshell.ps1 إلى ملف تنفيذي (exe) ووضعته هناك.
وبالمثل، قمت برفع ملف ransomware.ps1 إلى النظام ونجحت في إخراج المستندات، تاركًا خلفي فقط نسخها المشفرة.
قبل بدء الهجوم، من الضروري تفعيل سجلات 4688. عند تحليل سجلات الأمان 4688 على جهاز Windows الخاص بي، وجدت أن الهجوم جاء من Apache ضمن XAMPP. عندما فحصت ملفات Access.log، واجهت طلبًا غير طبيعي أعاد رمز حالة 200، مما دفعني للبحث عن هذا العنوان في متصفحي. حددت الثغرة واتخذت الاحتياطات، مثل تحديث إصدار PHP أو تعطيل ميزة PHP CGI.
نظرًا لأن برنامج الفدية الذي أنشأته لم يكن محجّبًا (obfuscated)، فإن الكود الخاص بي ظاهر في سجلات PowerShell. وهذا يوضح كيف قمت بتشفير البيانات. لاستعادة بياناتي، أقوم بتشغيل ملف encoded.ps1.
تسلط هذه المحاكاة الضوء على المخاطر المحتملة المرتبطة بـ CVE-2024-4577 وتؤكد على أهمية تأمين تثبيتات PHP. إن الحفاظ على تحديث PHP ومنع سوء تكوين إعدادات CGI يمكن أن يحد بشكل فعال من هذه الثغرات.