在 oracle 的儲存過程中,有乙個有趣的特點:執行許可權
。執行許可權分為兩種,
definer
和invoker。d
efiner 為函式建立者的許可權,而 invoker 則是當前呼叫函式的使用者。執行許可權在函式建立時就已經被欽定了,預設為 definer。
oracle 這樣做的初衷,實際上是為了使用者互相訪問資源時,避免使用者憑據的問題。當然也可以將函式的許可權定義為 invoker,但需要顯式設定:說白了,如果我們用低許可權使用者去執行dba許可權使用者建立的儲存過程,我們在呼叫時就可以額訪問dba資源,使用dba的許可權
create因為具有這樣的特性,所以當儲存過程函式實現存在缺陷時,安全問題就產生了orreplace
function whoami return
varchar2
authid
current_user
begin
null; end;
。比如下面這裡新建乙個儲存過程
createexecute immediate 用於動態執行 sql 語句。首先使用 dba 使用者建立該過程並賦予所有人執行許可權:orreplace
procedure sasugaoracle(msg in
varchar2)as
stmt
varchar2(255
);begin
stmt :='
begin dbms_output.put_line(
'''|| msg ||
''') end;';
execute
immediate stmt;
end;
grant接著切換到普通使用者,只有 connect 和 resource 許可權,執行儲存過程:execute
on sasugaoracle to
public;
修改一下傳入的引數
,這裡我們在原命令後新增了一條新增資料庫使用者的命令,這裡新增的使用者名為latec0mer
然後我們查詢一下是否存在latec0mer這個使用者,可以看到我們上一條新增的命令是生效的。
類似的,如果 oracle 的系統函式中存在同樣的缺陷,我們便有機會對其加以利用,提公升許可權,甚至執行系統命令。
在 oracle 10g 中, get_domain_index_tables
函式存在注入漏洞,該函式位於
dbms_export_extension
包中,執行許可權隸屬於
sys。
用scott/tiger登陸
oracle
,scott
是oracle
內建使用者,許可權較低,我們就可以利用執行具有高許可權的漏洞函式來達到提公升資料庫使用者許可權的目的。
查詢scott的當前角色
可以看到scott只有
connect
和resource
兩個許可權較低的角色
利用漏洞執行許可權提公升
現在我們再來看看許可權
成功從普通使用者提權到dba使用者。
ps:經測試,oracle10.2.0.4以上版本沒這個安全漏洞
Oracle資料庫提權 dba許可權執行系統命令
在 oracle 的儲存過程中,有乙個有趣的特點 執行許可權。執行許可權分為兩種,definer 和 invoker。definer 為函式建立者的許可權,而 invoker 則是當前呼叫函式的使用者。執行許可權在函式建立時就已經被欽定了,預設為 definer。說白了,如果我們用低許可權使用者去執...
MySQL資料庫提權小結
這裡的前提是獲取了webshell是最為方便的,直接檢視資料庫的配置檔案即可,如 conn config data sql common inc等。上面的方法有個缺點,就是給當前 的資料庫使用者的許可權比較低 不是root許可權,不方便後面的一些操作,那麼就需要這第二種方法。安裝目錄為 data m...
滲透之 資料庫提權
啟用xp cmdshell use master exec sp configure show advanced options 1 reconfigure with override exec sp configure xp cmdshell 1 reconfigure with override...