1. ThinkPHP란?

- 중국기업 탑씽크에서 개발한 아파치2 기반 PHP 프레임워크

- PHP 기본 함수호 구현된 행위들을 객체화해 PHP 개발과정의 유연성과 개발 기간의 단축 등 기능 제공

- 대부분 중국에서 사용중이며 아시아권에서 다수 사용중

[캡쳐 1] 쇼단에서 ThinkPHP 검색 화면

2. CVE-2018-20062

[캡쳐 2] https://nvd.nist.gov/vuln/detail/CVE-2018-20062

- 입력 값에 대한 적절한 검증이 없어 공격자가 임의의 명령을 실행할 수 있는 취약점

3. 취약점 분석

1) 영향 받는 버전

- ThinkPHP 5.0.23 하위 버전

- ThinkPHP 5.1.31 하위 버전

 

2) POC 분석

[캡쳐 3] POC 분석

- POC 구문이 실행되는 이유는 '\' 문자가 필터링되지 않기 때문이며, 크게 3부분으로 나뉠 수 있다.

- 먼저, '\'가 필터링 되지않아 \think\app은 Class로, invokefunction은 함수로 분석이되고,
   call_user_func_array 하위 부분은 함수에 전달하는 인자값이 된다.

[캡쳐 4] https://amuno-note.tistory.com/6

- 즉, 만약 공격자가 call_user_func_array&vars[0]=shell_ecex&vars[1][]=ls 명령을 전송할 경우 

  [캡쳐 4]에 따라 invokefunction('shell_exec','ls')가 수행되어 결과값이 공격자에게 전송되는 것이다.

- 해당 취약점을 이용해 공격자는 wget 명령으로 임의의 주소에서 파일을 다운로드 받게하는 등 다양한 공격이 가능하다.

 

4.  대응 방안

- 최신 버전 업데이트 적용 (2018 12월 보안업데이트 적용_정규표현식에서 '\' 필터링을 통해서 해결)

- 보안 장비에 해당 패턴을 등록하여 탐지 및 차단

 

+ Recent posts