Oracle

Oracle 數據庫安全問題:任何人都可以使用 SQL*PLUS 登錄,使用任何使用者名和任何錯誤的密碼

  • January 10, 2017

我在 CentOS 6.4 上使用 Oracle DB 11g-R2,不幸的是,有一個可怕的問題嚇壞了我。

任何人都可以使用 SQL*PLUS 登錄,使用任何使用者名和任何錯誤的密碼。

考慮有人使用SYS AS SYSDBA錯誤的密碼登錄,並獲取他想要的所有數據庫和表。不是很糟糕嗎?

我知道你可能會說,當有人身體進入時,他們可以繞過其餘的,是的。但是任何知道這個問題的人都不需要親自進入,他們只需要 IP 地址和您的數據庫名稱即可遠端登錄或使用腳本通過 SQL*PLUS 執行他們需要的操作。

幸運的是,任何人使用錯誤的密碼登錄 3 次,下次將被鎖定。但是有什麼好處呢?作為一名攻擊者,我只需要一次進入某人的數據庫就可以獲得我需要的所有東西。

有誰知道我該如何解決這個問題以及為什麼會這樣?

OSDBA 組(通常為 dba)

首次在系統上安裝 Oracle 數據庫軟體時必須創建此組。SYSDBA該組標識具有數據庫管理權限(特權)的作業系統使用者帳戶。

這是預期的行為,因為您正在從屬於DBAOS 組的 OS 使用者記錄 Oracle 數據庫。

[oracle@localhost Desktop]$ sqlplus sys/abc as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Nov 15 11:23:20 2016

Copyright (c) 1982, 2011, Oracle.  All rights reserved.


Connected to:
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options


[oracle@localhost Desktop]$ groups
oinstall dba

[oracle@localhost Desktop]$ su joe

[joe@localhost oracle]$ sqlplus sys/abc as sysdba

SQL*Plus: Release 11.2.0.3.0 Production on Tue Nov 15 11:26:56 2016

Copyright (c) 1982, 2011, Oracle.  All rights reserved.

ERROR:
ORA-01031: insufficient privileges

Joe讓我們看看屬於哪個作業系統使用者組。

[joe@localhost oracle]$ groups
joe

在這裡,OS UserJoe不屬於DBAOS 使用者組,他不能用錯誤的密碼登錄數據庫。

但是任何知道這個問題的人都不需要親自進入,他們只需要 IP 地址和數據庫的名稱就可以遠端登錄或使用腳本來做他們需要的事情sqlplus

不,這是不正確的,這可以通過remote_os_authent初始化參數來控制:

SQL> show parameter remote_os_authent

NAME                     TYPE    VALUE
------------------------------------ ----------- ------------------------------
remote_os_authent            boolean     FALSE

設置這個參數FALSE可以防止這種情況。

我應該如何解鎖在三次錯誤嘗試後被鎖定的使用者?

您可以將alter user username account unlock命令用作SYSDBA.

引用自:https://dba.stackexchange.com/questions/155264