1. ThinkPHP란?
- 중국기업 탑씽크에서 개발한 아파치2 기반 PHP 프레임워크
- PHP 기본 함수호 구현된 행위들을 객체화해 PHP 개발과정의 유연성과 개발 기간의 단축 등 기능 제공
- 대부분 중국에서 사용중이며 아시아권에서 다수 사용중
2. CVE-2018-20062
- 입력 값에 대한 적절한 검증이 없어 공격자가 임의의 명령을 실행할 수 있는 취약점
3. 취약점 분석
1) 영향 받는 버전
- ThinkPHP 5.0.23 하위 버전
- ThinkPHP 5.1.31 하위 버전
2) POC 분석
- POC 구문이 실행되는 이유는 '\' 문자가 필터링되지 않기 때문이며, 크게 3부분으로 나뉠 수 있다.
- 먼저, '\'가 필터링 되지않아 \think\app은 Class로, invokefunction은 함수로 분석이되고,
call_user_func_array 하위 부분은 함수에 전달하는 인자값이 된다.
- 즉, 만약 공격자가 call_user_func_array&vars[0]=shell_ecex&vars[1][]=ls 명령을 전송할 경우
[캡쳐 4]에 따라 invokefunction('shell_exec','ls')가 수행되어 결과값이 공격자에게 전송되는 것이다.
- 해당 취약점을 이용해 공격자는 wget 명령으로 임의의 주소에서 파일을 다운로드 받게하는 등 다양한 공격이 가능하다.
4. 대응 방안
- 최신 버전 업데이트 적용 (2018 12월 보안업데이트 적용_정규표현식에서 '\' 필터링을 통해서 해결)
- 보안 장비에 해당 패턴을 등록하여 탐지 및 차단
'취약점 > RCE' 카테고리의 다른 글
iControl REST unauthenticated RCE(CVE-2021-22986) (1) | 2022.09.25 |
---|---|
vBulletin Pre-Auth RCE(CVE-2019-16759) (0) | 2022.09.20 |
Bash Shell Shock(CVE-2014-6271) (2) | 2022.09.13 |
bWAPP PHP Code Injection (0) | 2022.07.29 |
PHPUnit 원격코드 실행 취약점 (CVE-2017-9841) (0) | 2022.07.29 |