
مختبر قائم على Docker لإعادة إنتاج CVE-2017-9841، وهي ثغرة تنفيذ التعليمات البرمجية عن بُعد في ملف eval-stdin.php الخاص بـ PHPUnit عند تثبيته ضمن جذر الويب.
Composer هي أداة إدارة حزم PHP. عند استخدام Composer لتثبيت حزمة، سيتم إنشاء مجلد vendor في الدليل الحالي ووضع جميع الملفات فيه. عادةً ما يجب وضع هذا المجلد خارج دليل الويب لمنع المستخدمين من الوصول المباشر إليه.
phpunit هي أداة اختبار وحدة في PHP. في الإصدارات من 4.8.19 إلى 4.8.27 ومن 5.0.10 إلى 5.6.2، يحتوي الملف vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php على الكود التالي:
eval('?>'.file_get_contents('php://input'));
إذا تم الوصول إلى هذا الملف مباشرة من قبل المستخدم، فسيؤدي ذلك إلى ثغرة تنفيذ كود عن بعد.
رابط مرجعي: http://phpunit.vulnbusters.com
قم بتنفيذ الأوامر التالية لبدء بيئة PHP، حيث يتم تثبيت phpunit ضمن دليل الويب.
docker-compose build
docker-compose up -d
سيتم تشغيل بيئة الويب على http://your-ip:8080.
قم بإرسال كود PHP مباشرة كجسم POST إلى http://your-ip:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php:
