
استغلال Python لـ CVE-2026-109618: يستغل فساد الكومة (heap corruption) في PHP session.upload_progress للكتابة فوق zend_call_function وتحقيق تنفيذ أوامر عن بُعد.
██████╗ ██╗ ██╗██████╗ ██████╗ ███████╗██╗ ██╗███████╗██╗ ██╗ ██╔══██╗ ██║ ██║██╔══██╗╚════██╗██╔════╝██║ ██║██╔════╝██║ ██║ ██████╔╝ ███████║██████╔╝ █████╔╝███████╗███████║█████╗ ██║ ██║ ██╔═══╝ ██╔══██║██╔═══╝ ██╔═══╝ ╚════██║██╔══██║██╔══╝ ██║ ██║ ██║ ██║ ██║██║ ███████╗███████║██║ ██║███████╗███████╗███████╗ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝╚══════╝╚══════╝╚══════╝
استغلال تنفيذ الشيفرة عن بُعد عبر تقدّم رفع جلسة PHP (CVE-2026-109618)
CVE-2026-109618 هي ثغرة أمنية حرجة تتعلق بإفساد الذاكرة وخطأ منطقي في محرك PHP مرتبطة بتتبّع تقدّم رفع الملفات عبر الجلسات (session.upload_progress).
يكمن الخلل في طريقة تخزين المؤشر الخارجي post_bytes_processed مؤقتًا خلال المرحلة الأولى من الطلب (FILE_START) وفشله في التحديث بشكل صحيح في أحداث الرفع اللاحقة. ومن خلال الجمع بين حالة تسابق (race condition)، والتحرير المدمّر لأشجار Hash (HashTable.pDestructor = zval_ptr_dtor)، ورشّ كومة (heap spray) مُتحكَّم فيه باستخدام بنى حشو (t[] جداول طبيعية معبّأة)، يصبح من الممكن الكتابة فوق مؤشرات دوال المحرك الداخلية (مثل zend_call_function) لإعادة توجيه مسار التنفيذ إلى system() بأوامر عشوائية.
تتطلب الأداة مكتبة rich لعرض واجهة الطرفية واللافتات واللوحات التفاعلية.
git clone [https://github.com/Ghxstsec/php2shell-poc.git](https://github.com/Ghxstsec/php2shell-poc.git)
cd php2shell-poc
تثبيت التبعيات المطلوبة
pip install -r requirements.txt
(أو ببساطة: pip install rich)
🚀 الاستخدام والأمثلة
شغّل السكربت مع المعاملات المناسبة للنظام المستهدف:
python3 php2shell.py -u "[https://target-domain.com/path/index.php](https://target-domain.com/path/index.php)" -c "uname -a; id"
خيارات سطر الأوامر المعامل الوصف القيمة الافتراضية -u, --url عنوان URL الكامل لنقطة نهاية PHP المصابة مطلوب -c, --command الأمر المراد تنفيذه على نظام التشغيل uname -a; id; echo JACKALPOC --sid معرّف جلسة مخصص (PHPSESSID) a1b2c3d4e5f6a7b8c9d0e1f2a3 --stall مدة التعليق بالثواني 1.35 --dtor عنوان الذاكرة المسرّب لـ zval_ptr_dtor (ست عشري/عدد صحيح) 0 --call عنوان ذاكرة صريح لـ zend_call_function يُحسب عبر الإزاحة --dry وضع المحاكاة: يولّد الحمولة الثنائية ويحفظها على القرص False 🛠️ التفاصيل التقنية
رشّ الكومة (Heap Spraying): يستخدم كتلة من 149 عنصرًا (جدول طبيعي معبّأ بحاويات بسعة 320 بايت) لضمان إعادة استخدام كتلة الذاكرة المحرَّرة.
دعم SAPI: مصمم للبيئات التي تُقيَّم ضمن معماريات CGI/FastCGI وخوادم الواجهة الأمامية المتوافقة (مثل LiteSpeed LSAPI / Apache / Nginx).
التشغيل التجريبي (Dry Run): يتيح تفريغ التدفق البايتي الدقيق للحمولة متعددة الأجزاء المولّدة للتحليل الجنائي أو التنقيح باستخدام العلامة --dry.
🛠️ التفاصيل التقنية
الإصدارات المتأثرة: PHP 5.4 حتى PHP 8.x (تصحيحات أصدرها مشرفو PHP للإصدارات 8.2 و8.3 و8.4 و8.5).
رشّ الكومة (Heap Spraying): يستخدم كتلة من 149 عنصرًا (جدول طبيعي معبّأ بحاويات بسعة 320 بايت) لضمان إعادة استخدام كتلة الذاكرة المحرَّرة.
دعم SAPI: مصمم للبيئات التي تُقيَّم ضمن معماريات CGI/FastCGI وخوادم الواجهة الأمامية المتوافقة (مثل LiteSpeed LSAPI / Apache / Nginx).
التشغيل التجريبي (Dry Run): يتيح تفريغ التدفق البايتي الدقيق للحمولة متعددة الأجزاء المولّدة للتحليل الجنائي أو التنقيح باستخدام العلامة --dry.
📦 ملف requirements.txt
rich>=13.0.0
urllib3>=1.26.0
⚠️ إشعار قانوني (إخلاء المسؤولية)
تم إنشاء هذا البرنامج حصريًا لأغراض تعليمية، وأغراض البحث الأمني، واستخدام التدقيق المصرّح به (اختبار الاختراق). لا يتحمل المؤلف (Ghxstsec) أي مسؤولية عن سوء الاستخدام أو الأضرار الناجمة عن الاستخدام غير السليم لهذا السكربت على أنظمة غير مصرّح بها.