상세 컨텐츠

본문 제목

Ghostcat : Tomcat-Ajp 프로토콜 취약점 (cve-2020-1938) 주의!

국내외 보안동향

by 알약(Alyac) 2020. 2. 26. 14:24

본문

Apache Tomcat 서버에 존재하는 파일에 취약점이 포함되어 있어, 공격자가 해당 취약점을 악용하여 Tomcat의 webapp목록 하위에 있는 모든 임의의 파일을 읽어들일수 있습니다. 또한 취약한 서버가 파일 업로드를 허용하는 경우, 공격자는 이를 악용하여 파일 형식 내 악성 jsp코드를 업로드 하고, 해당 취약점을 유발하여 원격코드실행이 가능합니다. 



취약점 원리 


Tomcat은 기본적으로 conf/server.xml에 2개의 Connector가 설정되어 있습니다. 한 개는 외부로 HTTP 프로토콜을 전송하는 8080 포트이고, 또 다른 한 개는 AJP 프로토콜의 8009 포트입니다. 이 두 포트는 디폴트로 외부망 ip를 수신합니다. 


Tomcat이 ajp request를 받았을 경우, org.apache.coyote.ajp.AjpProcessor를 호출하여 ajp 메세지를 처리하는데, prepareRequest는 ajp내의 내용을 추출하여 request객체의 Attribute 속성으로 설정합니다. 


그렇기 때문에 이러한 특성을 통해 request 객체의 다음 3개 Attribute 속성을 제어할 수 있습니다. 


 javax.servlet.include.request_uri

 javax.servlet.include.path_info

 javax.servlet.include.servlet_path




영향받는 버전


Tomcat 7.0.99 및 이전 버전

Tomcat 8.5.50 및 이전 버전

Tomcat 9.0.30 및 이전 버전



POC


1) PoC1

2) PoC2

3) PoC3

4) PoC4

5) PoC5



패치방법


1) ajp 설정 중 secretRequired와 secret 속성을 통해 인증제한 설정


2) 공식 홈페이지에서 최신 버전으로 업데이트


apache 홈페이지

https://tomcat.apache.org/download-70.cgi

https://tomcat.apache.org/download-80.cgi

https://tomcat.apache.org/download-90.cgi


Github홈페이지

https://github.com/apache/tomcat/releases


3) AJP 프로토콜 포트를 차단한다. (임시조치)

conf/server.xml설정 파일 내 <Connector port=”8009″ protocol=”AJP/1.3″redirectPort=”8443″ />주석처리






참고 : 

https://www.tenable.com/blog/cve-2020-1938-ghostcat-apache-tomcat-ajp-file-readinclusion-vulnerability-cnvd-2020-10487

https://www.cnvd.org.cn/webinfo/show/5415

관련글 더보기

댓글 영역