Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Similar documents
TCP/IP Model

슬라이드 1

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r


chapter1,2.doc

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

PowerPoint Template

슬라이드 1

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Research & Technique WordPress RCE 취약점 (CVE /CVE &CVE ) 취약점개요 WordPress는현재가장많이사용되고있는오픈소스콘텐츠관리시스템 (CMS, Content Management S

취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환

슬라이드 1

취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환

*2008년1월호진짜

PowerPoint 프레젠테이션

Microsoft PowerPoint 웹 연동 기술.pptx

본 강의에 들어가기 전

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

Microsoft PowerPoint 자동설치시스템검증-V05-Baul.pptx

PowerPoint Presentation

기술문서 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라.

MVVM 패턴의 이해

Microsoft Word - Solaris 9에_Tomcat _설치.doc

커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서

PowerPoint 프레젠테이션

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC

untitled

3장

Observational Determinism for Concurrent Program Security

서블릿의라이프사이클 뇌를자극하는 JSP & Servlet

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

SW

1 SW

< FBFF9B0A320BEC7BCBAC4DAB5E520C0BAB4D0BBE7C0CCC6AE20C5BDC1F620B5BFC7E220BAB8B0EDBCAD283131BFF E302028C8A8C6E4C0CCC1F620BEF7B

Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3

< 목차 > 1. 악성코드은닉동향요약 1 2. 홈페이지은닉형악성코드통계 2 - 유포지탐지 국가별현황 2 - 대량경유지가탐지된유포지 TOP 악성코드유형별비율 4 - 악성코드취약점유형별비율 4 - 악성코드수집및분석결과 5 - 경유지탐지 업종별비율 9 3. 악성코

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

Microsoft PowerPoint - aj-lecture1.ppt [호환 모드]

PowerPoint 프레젠테이션

리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

목 차 1. 개 요 배경 요약 정보 대상시스템 원리 공격 기법 및 기본 개념 Heap Spray Font 공 격..

슬라이드 1

예제 1.1 ( 관계연산자 ) >> A=1:9, B=9-A A = B = >> tf = A>4 % 4 보다큰 A 의원소들을찾을경우 tf = >> tf = (A==B) % A

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft Word - src.doc

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

2장 변수와 프로시저 작성하기

Windows Server 2012

untitled

뇌를 자극하는 JSP & Servlet 슬라이드

1부

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

PowerPoint 프레젠테이션

Interstage5 SOAP서비스 설정 가이드

뇌를 자극하는 JSP & Servlet 슬라이드

17장 클래스와 메소드

Microsoft PowerPoint - [Practice #1] APM InstalI.ppt

어댑터뷰

PowerPoint Template

14-Servlet

슬라이드 1

UI TASK & KEY EVENT

로거 자료실

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

Spring

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

B.3 JDBC 설치 JDBC Java DataBase Connectivity 는자바에서 DBMS의종류에상관없이일관된방법으로 SQL을수행할수있도록해주는자바 API Application Program Interface 다. 이책에서는톰캣과 SQL Server 간의연결을위

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - e pptx

untitled

MySQL-.. 1

PowerPoint Presentation

API 매뉴얼


XSS Attack - Real-World XSS Attacks, Chaining XSS and Other Attacks, Payloads for XSS Attacks

Samsung SDS Enterprise Cloud Networking CDN Load Balancer WAN

Multi-pass Sieve를 이용한 한국어 상호참조해결 반-자동 태깅 도구

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

BEA_WebLogic.hwp

제11장 프로세스와 쓰레드

ActFax 4.31 Local Privilege Escalation Exploit

PowerPoint 프레젠테이션

mytalk

Microsoft PowerPoint UNIX Shell.ppt

<4D F736F F D20C0DAB9D9C0A5BDBAC5B8C6AE2E646F63>

PowerPoint 프레젠테이션

Spring Boot

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

Secure Programming Lecture1 : Introduction

untitled

슬라이드 1

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Transcription:

Research & Technique Apache Tomcat RCE 취약점 (CVE-2019-0232) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE-2019-0232 취약점은 Windows 시스템의 Apache Tomcat 서버에서 enablecmdlinearguments 옵션이 True로설정된 CGI 서블릿을사용할시전달받는인자들을적절하게처리하지못해발생하며, 공격자가임의의명령을원격으로실행할수있다. Tomcat 7.x 및 8.x 서버에서 CGI 서블릿을사용할때에는 enablecmdlinearguments 옵션이 True로기본설정되어취약점에노출될수있으므로주의가필요하다. 영항받는소프트웨어버전 S/W 구분 Apache Tomcat 취약버전 9.0.18 이전버전 8.5.40 이전버전 7.0.94 이전버전 EQST insight 14

테스트환경구성정보 역할구분 공격자 정보 Windows 10 64bit 희생자 Windows 7 32bit / Apache Tomcat 8.5.39 취약점테스트 Step 1. 취약점테스트환경구축 취약한버전의 Apache Tomcat(8.5.39) 을다운로드하여희생자 PC 에설치한다. 이전버전의 Tomcat 을다운로드할수있는사이트는다음과같다. https://archive.apache.org/dist/tomcat/tomcat-8/ 설치한 Apache Tomcat 에서 CGI 서블릿을사용하기위해 conf/web.xml 파일에서 CGI 서블릿설정을다음과같이 수정한다.... <servlet> <servlet-name>cgi</servlet-name> <servlet-class>org.apache.catalina.servlets.cgiservlet</servlet-class> <init-param> <param-name>cgipathprefix</param-name> <param-value>web-inf/cgi-bin</param-value> </init-param> <init-param> <param-name>enablecmdlinearguments</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>executable</param-name> <param-value></param-value> </init-param> <load-on-startup>5</load-on-startup> </servlet>... <servlet-mapping> <servlet-name>cgi</servlet-name> <url-pattern>/cgi-bin/*</url-pattern> </servlet-mapping>... EQST insight 15

그후 conf/context.xml 파일을수정하여관리자서블릿과같은컨테이너서블릿을사용할수있도록 privileged 속 성을추가한다. <?xml version= 1.0 encoding= UTF-8?> <Context privileged= true > <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> </Context> webapps/root/web-inf 폴더에 cgi-bin 폴더를생성하고, 그안에 poc.bat 를작성한다. @echo off echo Content-Type: text/plain echo. set foo=%~1 %foo% Bin 폴더내의 startup.bat 파일을실행시켜 Apache Tomcat 서버를시작한다. Step 2. POC 테스트 공격자는희생자의 Apache Tomcat 서버에접근하여 poc.bat 요청시삽입한 dir 명령이실행된것을확인할수있 다. [POC 테스트성공화면 ] EQST insight 16

취약점상세분석 Step 1. 취약점동작원리 CVE-2019-0232 취약점은 Windows 에서 Java App이외부프로그램을실행할경우 Command Line 인자들을 Windows에전달할때발생하는버그로인해발생한다. 먼저, Linux에서 Java App에서외부프로그램을실행할때인자들을문자열배열로전달한다. [ 외부프로그램실행코드 ] Java App 이외부프로그램을실행할때전달된문자열배열대로출력되는것을확인할수있다. [Linux 에서외부프로그램실행 ] 반면, Windows에서는 Command Line 인자들을단일 Command Line 문자열로전달한후, Command Line 문자열을구문분석하여실행한다. 동일한예제로 Java App에서외부프로그램을실행하면 ProcessImpl() 함수에서실행되어야할파일은.bat이나.cmd 확장자가존재할경우에는 cmd.exe가실행된다. 따라서, CreateProcess() 함수에서 cmd.exe의첫번째매개변수로실행할파일의이름이전달되어실행되기때문에 C:\Windows\system32\ cmd.exe / c arg.bat arg & dir Command Line이실행된다. EQST insight 17

[Windows 에서외부프로그램실행 ] [Command Line 확인 ] Step 2. 취약한소스코드분석 CGI 서블릿에서 enablecmdlinearguments 가 true 로설정되어있을경우사용자가입력한값을그대로 Command Line 의인자로저장한다. 이부분에서사용자의입력에대한적절한처리를하지않아취약점이발생한다. EQST insight 18

[ 입력값에대한검증이존재하지않음 ] CGI 요청시 doget() 함수에서데이터를전달받아 command, 환경변수, 작업폴더, 파라미터를포함한 CGIRunner 객체를생성하여실행한다. [CGI 실행코드 ] 이후 run() 함수내에서 command 를실행하기위해 exec() 함수를호출하여 process 를생성한다. 실행할파일명과 인자들은 exec() 함수내부의 ProcessImpl() 함수에전달되어단일 Command Line 으로만들어진다. 생성된 Command Line 은 Windows 프로세스생성함수인 CreateProcess() 함수를통해실행된다. EQST insight 19

[Command Line 생성 ] Step 3. 패치된소스코드분석 Apache Tomcat 버전 7.x 및 8.x 에서기본으로 true 로되어있던 enablecmdlinearguments 를패치된 Tomcat 에서 는 false 로변경하여 CGI 서블릿으로 Command Line 인자를전달하지않도록하였다. [Apache Tomcat 7.x 및 8.x 버전의기본설정변경 ] 또한, Windows 시스템에서실행할경우새롭게추가된정규표현식매칭으로입력값을검사하는코드가추가되었 다. EQST insight 20

[ 정규표현식패턴검사추가 ] CGI 서블릿에서인자를전달해야할때, enablecmdlinearguments 값이 true 로설정되어야한다. 이때입력값에 대한유효성을검사하는코드가추가되었다. 정규표현식매칭에서?, & 등의특수문자는허용되지않기때문에 false 를반환한다. EQST insight 21

[ 사용자입력값을정규표현식매치를이용하여검사 ] 허용되지않은문자가입력값에포함되었을시, valid 변수에반환된 false 값이들어가면서 CGI 를실행하지않고 404 에러를반환하게된다. EQST insight 22

[CGI 명령유효성검사 ] [ 유효하지않은경우 404 에러반환 ] EQST insight 23

공격시나리오 Apache Tomcat CVE-2019-0232 취약점을이용하여취약한대상의정보를탈취하는시나리오는다음과같다. 웹페이지 Tomcat 웹서버 WWW 데이터베이스 1 대상탐색 2 CVE CVE-2019-0232 서버주요정보탈취 획득한정보활용 CVE 3 중요정보탈취 5 4 TOP SECRET 공격자 [ 공격시나리오 ] 1 공격자는운영중인페이지가 Windows 환경에서취약한버전의 Tomcat으로 CGI 서블릿을사용하는것을확인함 2 공격자는 CGI 요청시악의적인명령을전달하여 RCE을시도함 3 공격을통해웹서버내의주요정보 ( 시스템설정파일, 소스코드 ) 들을획득함 4 공격자는획득한정보를통해서버에대한공격을재수행함 5 재공격에성공하여공격자가중요정보를탈취함 EQST insight 24

대응방안 취약점이패치된 Apache Tomcat 버전으로업데이트한다. - Apache Tomcat 9.0.18 이상 - Apache Tomcat 8.5.40 이상 - Apache Tomcat 7.0.93 이상 [Apache Tomcat 취약점패치 ] EQST insight 25