
phpunit-shell | CVE_2017-9841
CVE-2017-9841을 악용하는 간단한 python3 스크립트입니다.
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 아트도 비활성화됩니다.
이 스크립트는 대상 시스템이나 취약한 애플리케이션을 실행하는 사용자/서비스의 제한 사항에 대해 가정할 수 없습니다. 즉, 완전한 셸이 아니므로 디렉터리 변경을 수행할 수 없으며 긴 명령어가 실행되지 않을 수도 있습니다.
더 간단하고 빠른 반쪽 셸 🐢에 가깝습니다. 추가 익스플로잇(궁극적으로 완전한 셸, 권한 상승 등)으로 가는 관문 역할을 하도록 설계되었습니다. 👍
또한 스크립트는 요청에 30초 타임아웃을 사용합니다. 이 값은 스크립트를 편집하여 변경하거나 완전히 끌 수 있습니다.
기본적으로 PHP 코드 'shell_exec'가 사용되지만 사용자가 원하는 경우 변경할 수 있습니다(예: 'system' 대신 사용).
이 스크립트는 주로 CVE-2017-9841을 악용하고 추가 익스플로잇을 가속화하는 간단한 python3 스크립트를 만드는 연습이었습니다.
https://skerritt.blog/a11y/ - 접근성 구현.