아파치 톰캣은 오픈소스 웹 서버로 여러가지 자바스크립트 기반 기술들을 지원하는데 그중 자바스크립트 기술 중 하나인 AJP(아파치 제이서브 프로토콜)에서 CVE-2020-1938이 발견되었다고 한다.
※ AJP : 바이너리 형태의 데이터를 네트워크로 전송하도록 개발된 프로토콜로 웹 서버의 성능을 증가시켜줌
Apache Tomcat 모든 버전 (9.x/8.x/7.x/6.x)
에서 AJP 프로토콜 (PORT : 8009)을 이용해 /webapps/ROOT 디렉터리 하위 파일을 읽을 수 있는 ‘잠재적인(potential)’ 원격코드실행 취약점(Ghostcat, CVE-2020-1938)이 발견되었다. ‘잠재적’이라고 표현하는 이유는 웹 어플리케이션 프로그램 내에서 파일 업로드 및 저장이 허용되어야 하는 전제조건이 필요하기 때문
AJP 프로토콜은 Tomcat 설치 시에 포트가 기본적으로 활성화되기 때문에 아래 그림과 같이 인터넷으로 연결된 장비 정보를 제공해주는 FOFA(FOFA.SO)에 따르면 한국 내에서도 기본포트로 서비스 중인 서버가 290,910건(2020년 3월 12일 기준)으로 취약점의 영향도에 노출되어 있다.
AJP(Apache Jserv Protocol)프로토콜은 Apache Server와 JAVA EE서버 간의 연결을 위한 프로토콜로, 웹서버 뒤에 있는 와스로 부터 웹서버에서 받은 요청을 와스로 전달해주는 프로토콜이다. 아파치와 톰캣을 연동하기 위해서는 AJP를 통해 서로 통신을 한다. 아파치는 이를 사용하여 80포트로 들어오는 요청은 자신이 받고, 이 요청중 서블릿을 필요로 하는 요청은 톰캣에게 전달하여 처리한다.
여러 웹 서버로부터 여러 어플리케이션 서버로의 로드 밸런스를 구현하기 위한 목적으로 사용되게 된다. 세션들은 각각의 어플리케이션 서버 인스턴스 이름을 갖는 라우팅 매커니즘을 사용하여 현재 어플리케이션 서버로 리다이렉트되게 되고 이러한 경우 어플리케이션 서버를 위한 리버스 프록시로 웹 서버가 동작되게 된다.
AJP 프로토콜은 WAS서버인 Tomcat 설치 시 포트(8009)가 자동으로 활성화 된다. 웹서버에서 받은 요청을 WAS로 전달해주는 프로토콜이다.
HTTP Connector가 HTTP프로토콜의 기본포트인 8080으로 클라이언트에 노출되는 반면 AJP는 기본포트로 8009를 사용하여 외부에 노출되지 않은 채 Apache HTTP Server에서 mod_jk 또는mod_proxy_ajp 모듈로 구현되게 된다.
AJP Request가 Apache에서 Tomcat으로 전송될 때 사용자 입력값 검증없이 실행되면서 임의로 파일 읽기나 실행이 가능하게 된다. 앞서 설명한 잠재적인 원격코드 실행 조건인 파일 업로드가 가능한 환경이라면 임의의 파일이 업로드된 후에 AJP취약점을 이용하여 공격코드를 실행할 수 있게 되는 구조라고 볼 수 있다.
CVE-2020-1938 취약점은 앞서 언급했듯, AJP Request 메시지가 Tomcat에 전달될 때 발생한다. AJP Request 메시지를 처리할 때 Tomcat에서는 org.apache.coyote.ajp.AjpProcessor.java를 호출하고 prepareRequest()를 통해 AJP메시지 내용을 추출하여 Request객체의 Attribute속성으로 설정하게 된다.
Request 메시지 헤더에서는 파일 확장자에 따라 *.JSP파일은 JspServlet.java에서 처리하고 그 외의 파일은 DefaultServlet.java에서 처리되게 된다. 임의의 파일이 실행되기 위해서는 DefaultServlet.java을 실행해야 하는 파일도 JspServlet.java을 수행하게 하는 것이 취약점의 핵심이라고 볼 수 있다.
출처 : http://www.igloosec.co.kr/BLOG_Tomcat-AJP%20%EC%B7%A8%EC%95%BD%EC%A0%90%20%EB%B6%84%EC%84%9D%20%EB%B0%8F%20%EB%8C%80%EC%9D%91%EB%B0%A9%EC%95%88%20%0B:%20Ghostcat(CVE-2020-1938)?searchItem=&searchWord=&bbsCateId=1&gotoPage=1
참고 : https://cheershennah.tistory.com/142
'보안 > 취약점정보' 카테고리의 다른 글
Formbook 악성코드 (0) | 2021.11.23 |
---|---|
Dlink 취약점 공격 (0) | 2021.09.12 |
RDP 공격? (0) | 2021.09.11 |