Microsoft Word - Blind Sql Injection.doc

Similar documents
The Basic Of Blind SQL Injection Sur3x5F - PRIDE NateOn : PRIDE in Sur3x5F All rights are reserved

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

제목 레이아웃

문서 템플릿

PowerPoint 프레젠테이션

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

PowerPoint Template

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

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

2006_8_14 (8_17 updated) ms ¿ú(wgareg.exe) ºÐ¼® º¸°í¼�.hwp

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

MIC Check 1pt ( pwnable ) 아마도 문제 제목을 저렇게 낸 이유는 공연 전 마이크 테스트를 하는 것처럼 쉬운 것을 하나 풀면서 몸이라도 푸라고 저렇게 정한 게 아닐까 배점은 1 점짜리, pwnable.kr 의 cmd 와 비슷한 문제

< F33BFF920C0CEC5CDB3DD20C4A7C7D8BBE7B0ED20B5BFC7E220B9D720BAD0BCAEBFF9BAB828C3D6C1BEBABB292E687770>

KARAAUTO_4¿ù.qxd-ÀÌÆå.ps, page Normalize

Microsoft Word - junior.docx

Secure Programming Lecture1 : Introduction

강의 개요

第 1 節 組 織 11 第 1 章 檢 察 의 組 織 人 事 制 度 등 第 1 項 大 檢 察 廳 第 1 節 組 대검찰청은 대법원에 대응하여 수도인 서울에 위치 한다(검찰청법 제2조,제3조,대검찰청의 위치와 각급 검찰청의명칭및위치에관한규정 제2조). 대검찰청에 검찰총장,대

소만사 소개

개발문서 Oracle - Clob

제목을 입력하세요.

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

1 데이터베이스 2 MySQL 설치 3 기초 SQL 4 고급 SQL 유용한함수들 JOIN inseog Kim Dep. of Applied Statistics, Dongguk통계데이터베이스 University jinseog.kim gma

슬라이드 1

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

Windows Server 2012

#WI DNS DDoS 공격악성코드분석

빅데이터분산컴퓨팅-5-수정

Cloud Friendly System Architecture

슬라이드 1

Microsoft PowerPoint - 10Àå.ppt

풍문으로들었소팀보고서 hkpco, hellsonic, lokihardt, gogil 페이지 1 / 16

Lec. 2: MySQL and RMySQL

Secure Programming Lecture1 : Introduction

슬라이드 1

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

SIGIL 완벽입문

ORACLE-SQL

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

´ÙÁß Row °á°ú¸¦ ´ÜÀÏÇàÀ¸·Î Äĸ¶·Î ºÐ¸®ÇØ Ãâ·ÂÇÏ´Â ¹æ¹ý

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

Tcl의 문법

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

DBMS & SQL Server Installation Database Laboratory

TITLE

MySQL-.. 1

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

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

Microsoft PowerPoint 웹 연동 기술.pptx

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

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

Microsoft Word - SQLinjection.doc

로거 자료실

Microsoft Word - poc_script1.doc

AhnLab_template

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

5th-KOR-SANGFOR NGAF(CC)

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

Ç¥Áö-¸ñÂ÷

CH04) 쿼리 (Query) 데이터베이스일반 1- 쿼리 (Query) 1) 쿼리의개념 테이블의데이터에서사용자가원하는조건에의해필드를추출하거나레코드를추출할수있는개체로즉, 여러가지방법으로데이터를보고, 변경하고, 분석할수있음 쿼리를폼, 보고서, 데이터액세스페이지등의레코드원본

Spring Boot/JDBC JdbcTemplate/CRUD 예제

*2008년1월호진짜

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

Microsoft PowerPoint - chap03-변수와데이터형.pptx

Microsoft Word - CrossSiteScripting[XSS].docx


<BBE7B0EDB3EBC6AE5FC7E3BAEAB0D4C0D32E687770>

Observational Determinism for Concurrent Program Security

윈도우시스템프로그래밍

슬라이드 1

untitled

SBR-100S User Manual

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

TGDPX white paper

Windows 8에서 BioStar 1 설치하기

공개 SW 기술지원센터

윈도우시스템프로그래밍

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

PowerPoint Presentation

Microsoft PowerPoint - Oracle Data Access Pattern.ppt

대량문자API연동 (with directsend)

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

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


Relational Model

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

Microsoft PowerPoint - 07-EDU-Apache-9-1.ppt

The Pocket Guide to TCP/IP Sockets: C Version

슬라이드 1

2007 상반기 실적회의 - DRM Extension

06/09-101È£ä263»Áö

04/07-08(È£ä263»Áö

0. 들어가기 전

PowerPoint 프레젠테이션

5장 SQL 언어 Part II

arcplan Enterprise 6 Charting Facelifts

Python으로 쿠키런 운영하기_ver최종.key

<4D F736F F F696E74202D20C0A5BDA9C5BDC1F6BDC3BDBAC5DB28BDA9C5A9B8B029BCD2B0B3C0DAB7E15F76312E32315FB5F0C4DCC7C3B7AFBDBA2E707074>

쉽게 풀어쓴 C 프로그래밊

Transcription:

Blind Sql Injection MySQL 5.0 본문서는배포는누구나마음대로수정및배포하실수있습니다. 테스트환경 : MySQL 5.3, PHP 5.2 - 방립동 -

개요. MySQL 이 3.0 버전에서 4.0 버전으로업그레이되되면서 UNION 절을사용할수있게되었습니다. 따라서 UNION을이용한공격방법이소개되었죠. 또한블라인드인젝션기법을이용한공격방법이문서나, 툴을통해서소개가되었으나 MS-SQL이나 ORACLE에비해근본적으로한계가있었습니다. 서브쿼리 나 JOIN 이지원이되지않았기때문이죠. 그러나 5.0 버전이나오면서서브쿼리나 JOIN을지원하게되었고따라서보다다양한공격이가능해졌습니다. 5.0 버전이나온지는이미꽤오래되었습니다. 이미연구하고진행했어야할사항이었음에도불구하고그동안나름바쁜척, IFRAME, SCRIPT, EMBED, OBJECT 등을이용한악성코드배포의탐지와방어에더관심을가지다보니뒤로미루고있었는데깜짝놀랄만한일이있었습니다. IPS 로그에 MYSQL을공격하는로그가있었던것이죠. 그것도서브쿼리를이용한기법으로이미중국에서 5.0 버전을대상으로인젝션을시도하고있었습니다. 이문서를제작배포하는목적은 MYSQL 역시인젝션공격의중심에있으며 MYSQL을이용하여홈페이지를제작하는분들에게좀더관심과주의를당부하기위해서입니다. 중국발해킹시도는날이갈수록점점늘어나고지능화되고있다는것을느낍니다. 특히최근에는악성코드, DDOS등이가장큰이슈인데 SQL-Injection 또한점점그시도횟수가늘어나고있음을느낄수있네요

세부기법 MYSQL의메타테이블중에서대상이되는것은 INFORMATION_SCHEMA 테이블입니다. INFORMATION_SCHEMA 의하위테이블에는아래정보가있습니다. SCHEMATA TABLES //DB의테이블정보를담고있습니다. COLUMNS //DB의컬럼정보를담고있습니다. CHARACTER_SETS COLLATIONS COLLATION_CHARACTER_SET_APPLICABILITY ROUTINES STATISTICS VIEWS USER_PRIVILEGES SCHEMA_PRIVILEGES TABLE_PRIVILEGES COLUMN_PRIVILEGES TABLE_CONSTRAINTS KEY_COLUMN_USAGE TRIGGERS DB에존재하는객체에대해저장하고있습니다. 단자신이사용하고있는 DB의스키마만을알수가있습니다. 여담으로 MYSQL을공부하면서느끼는것이 ORACLE을비슷하게따라간다는생각입니다. 물론 MS-SQL 과유사한점도있지만사용자에대한권한의부여는 ORACLE에더비슷한거같네요.. DB에존재하는테이블에는어떠한것이있는지조회하려면 TABLES 를이용하면됩니다. INFORMATION_SCHEMA.TABLES 라는테이블을입니다.

Select * from information_schema.tables 라는쿼리를통해서 information_schema.tables 에어떠한데이터가있는지확인해봅니다. 이중에서 TABLE_NAME 을통해테이블이름을알수있으며 TABLE_TYPE을 BASE TABLE로제한을하면사용자가생성한테이블만을가져올수있습니다.

블라인드기법은한자씩끊어서가져와야하기때문에 Limit 연산자를이용하여첫번째 ROW를가져옵니다. Limt 조건을 1,1 로주게되면두번째테이블을 2,1 로하면세번째테이블명만가져올수있습니다. address가리턴이되었습니다. 이제 address를 substr 연산자를이용하여자릅니다. Substr((select table_name from information_schema.tables where table_type= base table limit 0,1),1,1) 위처럼자르면 address중에서 a 만리턴이됩니다. 2,1 3,1 을통해서두번째세번째글자를가져오면됩니다. 한가지팁으로 where 절에서 table_type= base table 구문이들어가게되는데싱글쿼터를예외처리하는경우가많습니다. 특히 php의경우는매직쿼터옵션이자동으로설정되어있죠. 따라서 concat 연산자를사용하면싱클쿼터를사용하지않고도가능합니다. 예 ) table_type=concat(char(98), char(99)) 따라서문자형인아닌숫자형에서인젝션이된다면 magic_quotes_gpc 옵션만으로는방어가되지않습니다.

컬럼이나데이터정보를가져오는것도동일합니다. 컬럼은 information_schema.columns 테이블을이용합니다. 아래그림은간단한예입니다. 역시 limit 연산자를이용하면순서대로하나씩끊어올수가있습니다. 아래는툴로만들어서실행해본결과입니다. MS-SQL 이나 ORACLE 에서처럼 TABLE, COLUMN, DATA정보를획득하는것이가능했습니다.

대응방법 대응방법은서버사이드스크립트안에서예외처리를하는것이가장좋은방법입니다. 쉽게말해직접 JSP나 PHP 코드를수정하는것이죠. 싱글쿼터나세미콜론, 콤마, 중괄호정도만예외처리를해주어도대부분의인젝션공격은막을수있습니다. IPS 나웹방화벽이있지만개인적인생각으로는한계가많습니다. 가장큰이유로 IPS나웹방화벽은성능상의이유로패턴매칭을텍스트서치가아닌바이너리서치를한다는점입니다. 쉽게말해대소문자처리를하지못하는데예를들어패턴에 SELECT 를넣으면 SELECT 는잡아내지만 select 는잡아내지못한다는점입니다. 직접특수문자가아닌일반영문자까지 URL 인코딩한경우에는더더욱탐지율이떨어지게됩니다. DB는대소문자를구분하지않습니다. 또한웹서버는자동으로 URL 디코딩을합니다. 따라서아래의문자열들은모두 DB에서동일하게인식됩니다. 공격자 웹서버 DB SELECT SELECT SelecT SelecT select select %53%45%4C%45%43%54 SELECT select %53%65%6C%65%63%54 SelecT %73%65%6C%65%63%74 select S%45LECT SELECT s%45lect select IPS나웹방화벽은패킷이웹서버에도착하기전에먼저검사를합니다. 일반적으로바이너리패턴매칭을한다면 SELECT 문자열만으로도대소문자. URL인코딩문자등을조합한패턴은수만가지가나올수가있습니다.

따라서 SELECT 만으로도수만가지의패턴이필요합니다. 또웹의특성인파라메터 (GET, POST, COOKIE) 만을탐지하고검출해주어야하나실제로는그렇지못한경우가많습니다. GET, POST, COOKIE 등의파라메터부분만을스마트하게검출해주어야하는데그렇지못하고헤더전체나 BODY 전부분만을검출한다면오탐의비율이그만큼늘어날수밖에없죠 결국기본으로제공되는탐지정책보다사이트현실에맞는보다세밀한탐지정책을필요로하게되는것이죠. 그래서가장쉬운방법이개발소스안에서전송되는파라메터에대해싱글쿼터나세미콜론, 콤마, 중괄호정도를예외처리해주는것이간편합니다. 아니면 DB를개발할때 SP를사용하거나바인딩쿼리를사용하면 DB성능도좋아지고인젝션공격에도자유로울수있습니다. 아래는 PHP 에서간단한예외처리예입니다. $parameter = str_replace(,, $parameter) $parameter = str_replace(,,, $parameter) $parameter = str_replace( (,, $parameter) $parameter = str_replace( ),, $parameter) $parameter = str_replace( ;,, $parameter) 간단히함수로만들어서사용하면편하겠죠. 2005년 4월에키사에서홈페이지개발보안세미나 1회를개최하면서개발보안가이드를배포하였는데제가개인적으로생각하는최고의보안세미나였으며가이드역시가장좋은가이드가아닌가합니다. 홈페이지를개발하는개발자에게는필독서가아닌가합니다. 이상여기서마칩니다. 문의사항 -> bangrip@gmail.com