
phpunit-shell | CVE_2017-9841
نص برمجي بسيط بلغة python3 لاستغلال CVE-2017-9841.
نص برمجي بسيط يستغل ثغرة تنفيذ تعليمات برمجية عن بُعد (RCE) موجودة في
PHPUnit قبل الإصدار 4.8.28 وفي الإصدارات 5.x قبل الإصدار 5.6.3. يُرسل طلب POST إلى
الهدف مع أوامر نظام مُدخَلة من المستخدم.
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9841.
pip3 install requests bs4
بعد تحديد هدف يعمل بـ phpunit:
chmod +x phpunit-shell
./phpunit-shell -h
أو
python3 phpunit-shell -h
يعرض خيار -h أو --help كيفية تشغيل النص البرمجي مع بعض الأمثلة.
يوجد وسيطان موضعيان وعدد قليل من الوسائط الاختيارية.
usage: phpunit-shell.py [-h] [-a] [-n] address
phpunit-shell.py exploits an RCE vulnerability in
applications running PHPUnit before 4.8.28 and 5.x before 5.6.3.
positional arguments:
address ip/hostname, port, sub-directories to the vulnerable eval-stdin.php file.
optional arguments:
-h, --help show this help message and exit
-a, --accessible turns off features which may negatively affect screen readers
-n, --no-colour removes colour output
example:
phpunit-shell.py 10.10.10.10/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php
يقوم phpunit-shell افتراضيًا بالطباعة بالألوان مع بعض التنسيقات الإضافية على مخرجات الطرفية، إلا أن هذا ليس مفيدًا دائمًا لمن يستخدمون قارئات الشاشة. يؤدي استخدام وسيطة --accessible إلى تعطيل طباعة التنسيقات المزخرفة والألوان على الطرفية.
كما سيعطّل فن ASCII أيضًا.
لا يمكن للنص البرمجي وضع افتراضات حول النظام المستهدف أو القيود المفروضة على المستخدم/الخدمة التي تشغّل التطبيق الضعيف. أي أن هذا ليس غلافًا كاملًا (full-shell)، لذا لا يمكن تغيير الأدلة وقد لا تكون الأوامر الأطول ممكنة.
إنه أقرب إلى نصف غلاف (half-shell) بسيط وسريع 🐢 صُمم ليكون بوابة لاستغلال أعمق - وفي النهاية الوصول إلى غلاف كامل (full-shell)، ورفع الامتيازات (privesc)، إلخ... 👍
يستخدم النص البرمجي أيضًا مهلة زمنية (timeout) تبلغ 30 ثانية للطلبات، ويمكن تغيير هذه المهلة أو إيقاف تشغيلها تمامًا من خلال تعديل النص البرمجي.
يتم استخدام كود PHP 'shell_exec' افتراضيًا، ويمكن أيضًا تغيير ذلك إذا رغب المستخدم، مثلًا باستخدام 'system' بدلًا منه.
كان النص البرمجي بشكل أساسي تمرينًا على إنشاء نص برمجي بسيط بلغة Python لاستغلال CVE-2017-9841 وتسريع عمليات الاستغلال اللاحقة.
https://skerritt.blog/a11y/ - تنفيذ إمكانية الوصول.