
phpunit-shell | CVE_2017-9841
простой скрипт на python3 для эксплуатации CVE-2017-9841.
Простой скрипт, эксплуатирующий уязвимость удаленного выполнения кода, найденную в
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-арт.
Скрипт не может делать предположений о целевой системе или ограничениях пользователя/службы, на которой запущено уязвимое приложение. То есть это не полноценный shell, поэтому смена каталогов невозможна, а длинные команды могут не сработать.
Это скорее простой и быстрый полу-shell 🐢, предназначенный как шлюз для дальнейшей эксплуатации — и последующего получения полного shell, повышения привилегий и т.д. 👍
Скрипт также использует тайм-аут в 30 секунд для запросов; его можно изменить или полностью отключить, отредактировав скрипт.
По умолчанию используется PHP-функция 'shell_exec', но её можно изменить при желании, например, на 'system'.
Скрипт был в основном упражнением по созданию простого скрипта на Python для эксплуатации CVE-2017-9841 и ускорения дальнейшей эксплуатации.
https://skerritt.blog/a11y/ — реализация доступности.