Oracle hacking 작성자 : 임동현 (ddongsbrk@naver.com) 작성일 2008 년 10 월 11 일 ~ 2008 년 10 월 19 일 신규작성 작성내용
Skill List 1. Oracle For Pentest 1. Find TNS Listener (Default 1521 port) (with nmap or amap) 2. Get the TNS Listener version. (with tnscmd10g.pl) 3. Get The SID (with tnscmd10g.pl) 추가 1: SID Brute force (with ora-getsid.exe or sidguess.exe) 4. Default Account & Password check (Up to Oracle 9i R2) 추가 2: SYS 계정에대한 Brute Force (with orabrute) 추가 3: Password Cracking(with orabf) 5. Hacking the TNS Listener using bt 3 Final (Up to Oracle 8-9i Rel.2) 6. Privilege Escalation SQL Injection in dbms_export_extension (Oracle 8i 10.2.0.2) / 2006.4.20 SQL Injection vulnerability in CTXSYS.DRILOAD (Up to 9i R2) / 2005.4.25 7. Security Lastest Patch TNS Listener에패스워드를설정 주기적인계정점검 ( 디폴트계정및취약한패스워드사용 )(with checkpwd) 1. Find TNS Listener (Default 1521 port) (with nmap or amap) Figure 1: amap Tool 을이용한 1521 port Scanning Pentest Testing Result : using 1521 port 1521 포트를사용하지않거나, 방화벽등에의해탐지를할수없는경우도있을 것이다. 2. Get the TNS Listener version. (with tnscmd10g.pl) Result : Oracle 9.2.0.1 Figure 2: TNS Listener 버전확인 3. Get The SID (with tnscmd10g.pl)
Figure 3: status 옵션수행결과 Result : orcl Result OS : Windows Oracle Installed Home : c:\oracle\ora92 LOG File : c:\oracle\ora92\network\listener.log Using Port : 1521(TNS) Exproc Installed : Yes SID : orcl SID 정보는 Listener 에패스워드가설정되지않은 Oracle 9i R2 (9.2.0.6 버전제 외 ) 이하버전까지는취득이가능하나 Oracle 10g 이후 (local OS Authentication) 부 터는불가능하다. 이러한경우 SID 정보를 Brute Force 를시도해볼수있다. 추가 1: SID Brute force (with ora-getsid.exe or sidguess.exe) Figure : ora-getsid tool 을통한 sid brute force Figure : sidguess tool 을통한 sid brute force 4. Default Account & Password check (with OAK ) Oracle 9i에서 Default Account & Password dbsnmp/dbsnmp (nearly DBA) -> taget scott/tiger (normal user with some create privileges) -> target system/manager or change_on_install (DBA) sys/change_on_install (DBA)
Figure : 디폴트계정사용점검 Oracle 9i 경우이외다른계정은기본적으로모두잠금설정된다. 또한 Oracle 10g 이후버전에서는디폴트패스워드가없어졌다. 디폴트계정은있지만해당계정을 사용하기위해서는반드시패스워드를재설정하도록되어있다. 추가2: SYS 계정에대한 Brute Force (with orabrute ) SYS 계정은설치시패스워드를설정하도록되어있기때문에이를취득하기위해서 Brute Force 방법을사용해볼수있다. 이방법이외 DBA로권한상승을할수있는다른취약점도많기때문에알려진취약점이없는경우에나시도해볼만하다. 추가 3: Password Cracking(with orabf) Web에서 DB 접근계정권한이 DBA인경우 SQL Injection이취약점이있다면이를통해계정및패스워드 hash 값을취득할수있고, 이를 Cracking 하여최종적으로패스워드값을획득할수있다. 일반적으로 WEB에서 DB 접근계정권한이 DBA인경우는거의없다. Figrue : Sql Injection 을통한 Password Hash 취득
Figure : SYS 계정에대한 Password Cracking 결과 Figure : Target Oracle 에원격접근. Final Result OS and Web Server : MS 2000 / IIS 5.0 DBMS version : Oracle 9.2.0.1 SID : orcl Host IP & Listener port : 121.178.x.x:1521 Default Accout & Password : YES SYS Password Cracking : YES This Server is Hacked!! 5. Hacking the TNS Listener using bt 3 Final (Up to Oracle 8-9i Rel.2) 이공격은 Oracle 9i R2 이하버전에서가능한공격이며, 또한해당버전이라할지라도 listener가패스워드설정되어있다면정보를취득할수없기때문에공격이힘들다. Step 1 : TFTPD Starts TFTPD 는실행파일을 DB Server 에업로드할수있다.
Step 2 : Get the Oracle log file path(with tnscmd10.pl) 로그파일경로를확인해보면설치시디폴트경로를사용하고있음을알수있다. Step 3 과정에서진행하는로그파일변경을위해서는 oracle 이설치된홈디렉토리 를파악해야한다. 현재대상호스트의홈디렉토리는 c:\oracle\ora92 이다. Step 3: Change the logfile path to $ORACLE_HOME/sqlplus/admin/glogin.sql Step 4: 변경된 log file 에 SQL 명령삽입여기에선 DBA 권한을가진계정 (hacker/hacker) 을생성하는 SQL 명령을삽입하였다. 로그파일로변경한 Glogin.sql 파일은 DBA 사용자가 DB에접속할때호출된다. 이러한특성을역이용하여 glogin.sql 에원하는 SQL 명령을삽입하여실행시킬수있다.(DBA 계정으로로컬에서접속해야함 ) 또한 TFTPD를통해 nc, vncserver 등의백도어를업로드하는것도가능하다. Step 5: Change logfile to old logfile (c:\oracle\ora92\network\log\listener.log) DBA 사용자가 SQL*PLUS 에접속하면 glogin.sql 이호출이되면서삽입된명령이 실행이될것이다. Step 6. hacker/hacker login
This Server is hacked!!! 6. Privilege Escalation SQL Injection in dbms_export_extension (Oracle 8i 10.2.0.2) / 2006.4.20 SQL Injection vulnerability in CTXSYS.DRILOAD (Up to 9i R2) / 2005.4.25 Oracle 9i에서일반계정으로원격접근이가능한경우 driload 라는패키지에 validate_stmt 함수의버그를이용하여 DBA 권한을추가할수있다. Query : select * from user_role_privs Figure : 현재사용자 (scott) 의 DB 권한확인 Exploit : exec ctxsys.driload.validate_stmt('grant dba to scott') Figure : Exploit code 실행시에러메시지 Figure : DBA 권한취득 이외에도최신버전이아닌경우다양한취약점들이공개되어있다. Oracle Exploit http://www.red-database-security.com/exploits/oracle_exploits.html Oracle Lastest Vulnerability http://www.red-database-security.com/advisory/published_alerts.html Security Lastest Patch
TNS Listener 에패스워드를설정. 주기적인계정점검 ( 디폴트계정및취약한패스워드사용 ) using tool : checkpwd (DBA 권한계정으로는사용불가 ) Figure : chekpwd 를통한디폴트계정및패스워드사용확인 기타