본문 바로가기

보안/보안관제

ThinkPHP 원격코드 실행 취약점 (CVE-2018-20062)

ThinkPHP 취약점

 

안녕하세요.

보안관제로 근무한지 4개월차 약간 넘었습니다.

이론이랑 실무는 확실히 다르더군요.

이론에서는 ThinkPHP 에 대하여 인지하지 못하였습니다.

실무를 하던 와중 ThinkPHP가 많이 탐지가 되고 있어서 실무적으로 알고 계셔야할  PHP 취약점 입니다.

 

Think PHP란?

- ThinkPHP는 중국에서 동적 웹 애플리케이션 개발을 위한 오픈 소스 PHP 개발 프레임 워크이다.

- 현재 쇼단 검색으로 4만 개 이상의 활성 배치가 표시되고 있다.

- 전 세계적으로 광범위하게 체택되었으며 아시아권에서 특히 활성화가 많이 이루어졌다.

- CVE-2018-20062 취약점으로서 Think PHP을 사용한 웹프레임워크에서 인증되지 않은 원격코드 실행 취약점입니다.

 

 취약점

s=index/\think\Request/input&filter=phpinfo&data=1

* 해당 취약점을 사용하면 원격명령실행을 할 수 있습니다.

thinkphp /library/think/ App.php를 사용하면 원격 공격자가 s=index/\think\Request/input&filter=phpinfo&data =1 쿼리 문자열에 표시된 것처럼 필터 매개 변수를 조작하여 임의의 PHP 코드를 실행할 수 있습니다.

* Getshell 할 수있는 코드 실행 취약점이 있습니니다.

URL에서 컨트롤러 클래스명의 유효성이 검증되지 않아 강제 라우팅 옵션을 사용하지 않고도 getshell이 실행된다.

https://github.com/nangge/noneCms/issues/21

 

There is a code execution vulnerability that can getshell · Issue #21 · nangge/noneCms

thinkphp/library/think/App.php public function routeCheck() { $path = $this->request->path(); $depr = $this->config('app.pathinfo_depr'); public function path() { if (is_null($this...

github.com

* 위 GitHub 참조하면 더욱 자세한 설명으로 인하여 이해하기 수월합니다.

TMS 탐지 공격 코드

1. /thinkphp/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array & vars[0]=system&vars[1][] =ls% 20-l

2. /thinkphp/public/index.php?s=/index/\think\request/cache&key=ls%20-l | system

3. /thinkphp/html/publick/index.php

4. TP/index.php

* 위 사항으로 TMS에서 많이 탐지되고 있다.

대응 방안

- PHP 업데이트로 인하여 취약점을 예방할 수 있다.

컨트롤러 이름을 확인하는 정규식을 추가하여 패치되었다.

정규식이 추가된 이유는 ThinkPHP가 요청된 모듈, 컨트롤러 및 쿼리 매개 변수 내에서 실행할 함수를 수신하고 구분 기호로 '/'문자를 사용하여 분할하기 때문입니다.

 - ThinkPHP 버전 5.0.23 또는 5.1.31로 업데이트를 하는 것은 권장.

 - 최근 해당 공격이 많이 WAF를 통해 많이 탐지되고 있으며, 국내는 ThinkPHP를 사용하시는 분은 많이 없지만 국내에도 많은 기관에서 ThinkPHP를 이용한 공격이 탐지되고 있기에 주의하실 필요가 있습니다.

 

 


참고

https://lopicit.tistory.com/358 [로픽의 IT블로그]

https://devcentral.f5.com/s/articles/thinkphp-5x-remote-code-execution-vulnerability-32902

https://nvd.nist.gov/vuln/detail/CVE-2018-20062

https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-20062

'보안 > 보안관제' 카테고리의 다른 글

제로보드 취약점  (0) 2020.02.23
FCKeditor 취약점 조사 및 탐지 패턴  (2) 2020.01.30
IDS/IPS 이해  (0) 2020.01.26
IDS/IPS의 차이점  (2) 2020.01.26
방화벽 보안  (4) 2020.01.25