典型安裝後,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
UNLIMITED TABLESPACE 在任意表空間無限建表/插入垃圾資料,撐爆資料檔案,導致實例掛起CREATE PUBLIC SYNONYM 可覆蓋系統物件引導應用執行惡意代碼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 表空間,業務全面中斷。
ALTER USER DBSNMP IDENTIFIED BY ComplexPass#2024;REVOKE UNLIMITED TABLESPACE FROM DBSNMP;REVOKE CREATE PUBLIC SYNONYM FROM DBSNMP;ALTER USER DBSNMP ACCOUNT LOCK;AUDIT CREATE SESSION BY DBSNMP; 記錄所有登入嘗試| 帳號 | 用途 | 預設密碼 | 建議動作 |
|---|---|---|---|
| DBSNMP | 智能代理 | DBSNMP | 修改/鎖定/回收權限 |
| OUTLN | 計劃穩定 | OUTLN | 鎖定 |
| CTXSYS | Text | CTXSYS | 修改/鎖定 |
| MDSYS | Spatial | MDSYS | 修改/鎖定 |
| ORDSYS | InterMedia | ORDSYS | 修改/鎖定 |
「修改 SYS/SYSTEM 密碼」只是安全基線的起點。DBSNMP 擁有系統級權限卻常被遺忘,是內部威脅與外部滲透的絕佳跳板。將「預設帳號清理」納入資料庫上線驗收清單,執行「最小權限、強密碼、帳號鎖定、審計全覆蓋」四步法,才能堵住這個隱形後門。