ThinkPHP 취약점
안녕하세요.
보안관제로 근무한지 4개월차 약간 넘었습니다.
이론이랑 실무는 확실히 다르더군요.
이론에서는 ThinkPHP 에 대하여 인지하지 못하였습니다.
실무를 하던 와중 ThinkPHP가 많이 탐지가 되고 있어서 실무적으로 알고 계셔야할 PHP 취약점 입니다.
Think PHP란?
- ThinkPHP는 중국에서 동적 웹 애플리케이션 개발을 위한 오픈 소스 PHP 개발 프레임 워크이다.
- 현재 쇼단 검색으로 4만 개 이상의 활성 배치가 표시되고 있다.
- 전 세계적으로 광범위하게 체택되었으며 아시아권에서 특히 활성화가 많이 이루어졌다.
- CVE-2018-20062 취약점으로서 Think PHP을 사용한 웹프레임워크에서 인증되지 않은 원격코드 실행 취약점입니다.
취약점
* 해당 취약점을 사용하면 원격명령실행을 할 수 있습니다.
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 |