ThinkPHP 원격 코드 실행 취약점 (CVE-2018-20062)
ThinkPHP 취약점을 이용한 원격 코드 실행 시도를 말한다.
cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20062
해당 취약점은 2018년 12월 10일 발표되었으며, HTTP 요청의 매개 변수에 대한 적절한 검증 부재로 인해 Framework가 강제로 경로 지정을 하지 못하는 취약점이 존재한다.
해당 취약점을 이용하면, 조작된 HTTP Request를 통해 서버 권한으로 원격 코드를 수행할 수 있다.
ThinkPHP 란?
중국기업에서 개발한 Apache2 기반의 PHP Framework를 말한다.
중국 40,000개 이상의 서버가 Think PHP를 통해 서버를 구동하고 있으며, 해당 Framework의 경우 중국이 개발하여 아시아권에서 많이 사용하고 있다.
POC
위 POC 코드가 실행되는 근본적인 이유는 '\'문자가 필터링되지 않기 때문이다.
필터링 부재로 인해 '\think\app' 은 Class로, 'invokefunction'은 Method으로 동작하게 된다. (추가적으로, '\think\request' 를 통해 input method를 이용한 공격도 가능하다. 아래 예시 참고)
위의 과정을 거쳐 [command] 부분에 입력하는 명령어의 결과가 페이지에 출력된다.
[SonicWall Threat Research Lab에서 공개한 실제 탐지된 공격 시도 중 일부]
대응 방안
해당 취약점의 경우 2018 12월 보안업데이트를 통해서 해결되었다. (정규표현식에서 '\' 필터링을 통해서 해결)
ThinkPHP 버전 5.0.23 또는 5.1.31로 업데이트를 하는 것을 권장하고 있다.
# 참고