大量生產庫未修改SYS/SYSTEM默認口令,且監聽端口1521暴露公網/內網。攻擊鏈:端口掃描 → 服務枚舉 → 弱口令嘗試 → 數據竊取。
SuperScan/Nmap:掃描1521開放主機tnscmd.pl(Perl):Oracle TNS協議交互,枚舉SERVICE_NAME、版本、實例名SQL*Plus:嘗試默認憑證登錄tnscmd.pl運行環境# Nmap掃描示例
nmap -p 1521 --open -oG oracle_hosts.txt 10.0.0.0/16
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,為下一步連接提供關鍵參數。
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
SYS/SYSTEM:完全控制權,讀取/修改/刪除任意數據,創建後門用戶,關閉審計。DBSNMP:監控代理權限,可查詢性能視圖,配合DBMS_SCHEDULER執行OS命令(某版本)。-- 修改核心賬號密碼
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;
-- ... 其他
LISTENER.ORA 中 ADDRESS=(PROTOCOL=TCP)(HOST=10.0.1.100)(PORT=1521)1521VALID_NODE_CHECKING_REGISTRATION_LISTENER=ON 限制註冊來源# listener.ora
PASSWORDS_LISTENER = -- 設置監聽器管理密碼
ADMIN_RESTRICTIONS_LISTENER = ON -- 禁止遠程修改監聽配置
CRS_NOTIFICATION_LISTENER = ON
orapw權限640,屬主oracle:dbaREMOTE_LOGIN_PASSWORDFILE=EXCLUSIVESYS密碼並同步口令文件-- 審計登錄失敗
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小時
-- 內部自查腳本
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最大的「設計缺陷」兼「運維債務」。安裝即修改、網絡隔離、監聽加固、審計監控、定期自查五位一體,將攻擊面壓縮至最小。安全無絕對,但可將成本推高到攻擊者放棄。