
Docker 기반 랩: PHPUnit의 eval-stdin.php가 웹 루트 아래에 설치되었을 때 발생하는 원격 코드 실행 취약점인 CVE-2017-9841을 재현하기 위한
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 Body로 http://your-ip:8080/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php에 직접 전송합니다:
