[PHPUnit eval-stdin.php RCE 취약점 공격]
해당 공격은 PHPUnit eval-stdin.php RCE 취약점을 이용하여 원격 코드를 실행시킬 수 있는 공격입니다.
공격자가 PHPUnit에 있는 원격 코드 실행 취약점을 악용하여 임의의 PHP 코드를 실행합니다.
해당 취약점은 eval-stdin.php 페이지를 요청할 때 적절한 인증이 존재하지 않아 발생합니다.
Util/PHP/eval-stdin.php를 사용하면 공격에서 입증된 것처럼 원격 공격자가 "<?php" 하위 문자열로 시작하는 HTTP POST 데이터를 통해 임의의 PHP 코드를 실행할 수 있습니다.
해당 취약점은 /vendor 폴더가 노출된 사이트 즉 /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php URI에 대한 외부 접근이 가능한 사이트에서 존재합니다.
PHPUnit란
- PHPUnit은 PHP 프로그래밍 언어를 위한 유닛 테스트 프레임워크입니다. SUnit과 함께 기원한 유닛 테스트 프레임워크를 위한 XUnit 아키텍처의 인스턴스이며, JUnit과 함께 대중화되었습니다. PHPUnit은 Sebastian Bergmann 이 개발하였으며, 개발 자체는 깃허브에서 호스팅 되고 있습니다.
Vendor 폴더란
- 패키지가 저장되는 폴더이며 composer를 통해 설치되는 패키지들을 저장합니다.
Composer란
- PHP의 의존성 관리 도구
위험요소
- 대상 웹사이트의 민감한 콘텐츠(파일, 데이터베이스 자격 증명, 데이터베이스 콘텐츠 등)에 접근
- 파일 내용 변경
- 스팸 보내기
- 멀웨어 설치
[Payload]
실제 PHPUnit eval-stdin.php RCE 취약점 공격이 발생한 패킷을 확인해보면 POST 방식으로 /vendor/phpunit/phpunit/src/Util/PHP/eval-stdin.php 을 요청하며, Body 부분에는 <?php 이후에 php 코드를 삽입하여 명령어를 실행시키는 방식으로 공격을 시도합니다.
공격 영향
삽입된 코드는
<?php print str_rot13('V pna erzbgryl rkrphgr CUC pbqr ba lbhe freire');
- str_rot13() 함수 : 문자열에 ROT13 인코딩 수행
rot13로 인코딩 된 문자열을 디코딩 한 결과 "I can remotely execute PHP code on your server" 라는 문자를 확인할 수 있습니다. 따라서 해당 패킷은 해당 취약점이 존재하는지 스캔하는 스캔성 공격으로 판단됩니다.
추가적으로 die 함수를 사용하여 에러 없이 메시지 출력 후 종료를 시도하는 경우가 많습니다.
해결방안
- 벤더사가 제공하는 최신의 펌웨어를 설치한다.
- 보안 솔루션 장비를 도입하여 시그니처 기반으로 해당 취약점 공격을 방어한다.
참고 자료
https://github.com/vulhub/vulhub/blob/master/phpunit/CVE-2017-9841/README.md
GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose
Pre-Built Vulnerable Environments Based on Docker-Compose - GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose
github.com
'보안 > 침해사고 분석' 카테고리의 다른 글
Directory Traversal Attack (CVE 2021-42013, CVE 2021-41773) (0) | 2022.05.27 |
---|---|
Log4j 취약점 (0) | 2022.05.26 |