Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
odat — 一款用于Oracle数据库的渗透测试工具,能够发现有效SID、暴力破解凭据、将权限提升至DBA、执行系统命令以及利用已知CVE漏洞。 | Kitploit
工具/GitHubGitHub/quentinhardy/odat
权限提升漏洞扫描器密码攻击漏洞利用渗透测试命令与控制数据库安全
GitHubquentinhardy/odat

odat

一款用于Oracle数据库的渗透测试工具,能够发现有效SID、暴力破解凭据、将权限提升至DBA、执行系统命令以及利用已知CVE漏洞。

查看仓库
1.8k3494个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
Quentin HARDY
[email protected]
[email protected]

ODAT

ODAT(Oracle数据库攻击工具)是一个开源__渗透测试__工具,用于__远程__测试Oracle数据库的安全性。

ODAT的使用示例:

  • 你有一个远程监听的Oracle数据库,想要找到有效的__SID__和__凭据__以连接到数据库
  • 你有一个有效的Oracle数据库账户,想要__提升权限__成为DBA或SYSDBA
  • 你有一个Oracle账户,想要__执行系统命令__(例如__反向shell__)以在托管数据库的操作系统上进一步推进

已在Oracle Database 10g、11g、12c、__18c__和__19c__上测试。

__ODAT Linux独立版__下载地址:https://github.com/quentinhardy/odat/releases/。注意建议使用开发版本(git clone),master-python3分支(Python 3版本)。

更新日志

  • 版本__5.1.1__(27/04/2022):
    • 当出现"ORA-12519 - TNS:no appropriate service handler found"错误时打印警告信息。此错误可能由数据库服务器(监听器)在连接过多时触发(例如爆破凭据时)。此时应使用__--sleep__选项(例如*--sleep 0.2*)。
  • 版本__5.1__(12/03/2021):
    • 在_all_模块中新增选项:--nmap-file,用于从nmap XML输出文件加载所有Oracle数据库
    • 在_all_模块中新增选项:-l,用于从文本文件加载所有目标(每行一个ip:port或ip)
    • 在_all_模块中,现在会在启动ODAT测试前对每个目标进行TCP连接测试。__--timeout-tcp-check__可用于管理超时值。
    • 在_all_模块中,现在会对每个目标进行测试,检查TNS监听器是否配置正确。此测试在TCP连接测试之后进行。
    • 新增全局选项:--client-driver。允许设置数据库连接的客户端名称(V$SESSION_CONNECT_INFO__中的__client_driver)。 对最终用户不知晓cx_Oracle被使用的应用很有用。现在默认值为'sql*plus'。
    • ODAT现在支持__sqlnet.ora__文件。默认文件位于__conf/__。现在TCP和OUTBOUND(TNS)连接的超时时间默认为60秒。
  • 版本__5.0__(08/02/2021):
    • 重要新模块:Service Name Guesser,用于搜索有效的Service Name。独立模块名为__snguesser__,同时也集成在all模块中。默认情况下,all模块在搜索SID之后现在也会搜索所有有效的Service Name。SID可能与Service Name相同。当找到Service Name但未找到SID时,Service Name可作为SID用于连接。
    • search__模块中的--basic-info__选项,用于获取数据库/实例的一些基本技术信息。它获取Service Name、SID、数据库、Oracle Database Vault状态、Java状态、主机名、服务器IP地址、密码策略、当前系统权限、当前角色、补丁(当>=12c且用户有权限时)等。需要高权限才能获取非常有趣的信息(例如密码策略和锁定状态)。
    • 在_DbmsScheduler_模块中为Windows目标实现了反向shell。启动最小化HTTP服务器,使Oracle数据库下载PowerShell代码并远程执行。用户获得交互式PS shell。下载的文件会自动删除。
    • 在_DbmsScheduler_中实现了__--make-download__选项,用于让Windows目标下载脚本/二进制文件。
    • 修复了_DbmsScheduler_模块输出中的错误(printOSCmdOutput())。
    • 改进了_DbmsScheduler_模块中的说明(选项)。
  • 版本__4.3__(28/06/2020):
    • 新选项:--both-ul。如果凭据文件中未完成,则尝试每个密码的小写和大写形式。
    • 新选项:--random-order。随机顺序测试账户。默认使用文本文件顺序。
    • 现在默认所有密码以小写形式测试(账户文件从大写改为小写)。
    • 新增了一些账户。
  • 版本__4.2__(04/02/2020):
    • 在search模块中实现了最小化交互式SQL shell。
    • 在DbmsXslprocessor模块中新增使用DBMS_XSLPROCESSOR.read2clob下载文件的功能。
    • 改进了认证后获取远程操作系统信息的功能。
    • 错误修复(例如终端大小)。
  • 版本__4.1__(15/01/2020):
    • 支持通过SERVICE NAME(而非SID)连接。
    • 某些操作(例如NVARCHAR2和NCLOB、VARCHAR2和CLOB)默认使用UTF-8编码。
    • 多个错误修复(编码问题)。
  • 版本__4.0__(10/08/2019):
    • 基于Python 3的ODAT稳定版本。
  • 版本__3.0__(01/09/2019):
    • 兼容Oracle Database 18c。

功能

借助ODAT,您可以:

  • 通过以下方式在远程Oracle数据库监听器上搜索__有效SID__:
    • 字典攻击
    • 暴力攻击
    • 监听器别名
  • 通过以下方式搜索Oracle__账户__:
    • 字典攻击
    • 每个Oracle用户以密码本身作为密码(需先有一个账户才能使用此攻击)
  • 通过以下方式在数据库服务器上__执行系统命令__:
    • DBMS_SCHEDULER
    • JAVA
    • 外部表
    • oradbg
  • 通过以下方式__下载__存储在数据库服务器上的文件:
    • UTL_FILE
    • DBMS_XSLPROCESSOR
    • 外部表
    • CTXSYS
    • DBMS_LOB
  • 通过以下方式__上传文件__到数据库服务器:
    • UTL_FILE
    • DBMS_XSLPROCESSOR
    • DBMS_ADVISOR
  • 通过以下方式__删除文件__:
    • UTL_FILE
  • 通过以下系统权限组合__获得特权访问__(参见privesc模块命令的帮助):
    • CREATE ANY PROCEDURE
    • CREATE PROCEDURE和EXECUTE ANY PROCEDURE
    • CREATE ANY TRIGER(和CREATE PROCEDURE)
    • ANALYZE ANY(和CREATE PROCEDURE)
    • CREATE ANY INDEX(和CREATE PROCEDURE)
  • 通过以下方式从数据库服务器发送/接收HTTP请求:
    • UTL_HTTP
    • HttpUriType
  • 通过以下方式扫描本地服务器或远程服务器的端口:
    • UTL_HTTP
    • HttpUriType
    • UTL_TCP
  • 通过以下方式__捕获SMB认证__:
    • 使用索引触发SMB连接
  • 利用某些CVE:
    • CVE-2012-3137
      • 获取任意用户的会话密钥和盐值
      • 通过字典攻击会话
    • CVE-2012-????:已认证用户可以修改其能SELECT的所有表,即使正常情况下无法修改(无ALTER权限)。
    • CVE-2012-1675(即TNS投毒攻击)
  • 通过search模块在__列名中搜索__:
    • 在列名中搜索模式(例如密码)
  • 解包 PL/SQL源代码(10g/11g和12c)
  • 获取__系统权限__和__已授予的角色__。也可以获取已授予角色的权限和角色。
  • 执行任意SELECT请求(即最小化SQL shell)

此列表并非详尽无遗。

思维导图 - ODAT与Oracle数据库渗透测试

Alt text

支持平台和依赖

ODAT仅兼容__Linux__。

存在__独立版__,无需安装依赖(参见https://github.com/quentinhardy/odat/releases/)。 ODAT独立版通过pyinstaller生成。

如果想在计算机上安装__开发版本__,需要以下工具和依赖:

  • 语言:Python 3
  • Oracle依赖:
    • Instant Oracle basic
    • Instant Oracle sdk
  • Python库:
    • cx_Oracle
    • passlib
    • pycrypto
    • python-scapy
    • python-libnmap(从Python 5.1新增)
    • colorlog(推荐)
    • termcolor(推荐)
    • argcomplete(推荐)
    • pyinstaller(推荐)

安装(可选,用于开发版本)

本节描述如何在__Ubuntu__上安装instantclient、CX_Oracle和其他一些Python库以获取ODAT开发版本。 别忘了ODAT独立版存在于https://github.com/quentinhardy/odat/releases/:使用独立版无需安装任何东西

  • 克隆仓库以获取ODAT源代码:
root@kitploit:~
git clone https://github.com/quentinhardy/odat.git
  • 更新此仓库中的wiki页面以在本地获取ODAT文档:
root@kitploit:~
cd odat/
git submodule init
git submodule update
  • 从Oracle网站获取instant client basic、sdk(开发版)和sqlplus:

    • X64:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
    • X86:http://www.oracle.com/technetwork/topics/linuxsoft-082809.html
  • 目前(2021年3月),Oracle Database instant client 11.2版本是使用pyinstaller生成ODAT独立版的最佳版本。 使用ODAT开发版本时,可以使用Oracle客户端的较新版本(例如19版)。

  • 安装python3-dev、alien和libaio1包(用于sqlplus):

root@kitploit:~
sudo apt-get install libaio1 python3-dev alien python3-pip
  • 从RPM文件生成DEB文件:
root@kitploit:~
sudo alien --to-deb oracle-instantclient19.3-basic-???.x???.rpm
sudo alien --to-deb oracle-instantclient19.3-devel-???.x???.rpm
  • 安装instant client basic、sdk和sqlplus:
root@kitploit:~
sudo dpkg -i oracle-instantclient19.3-basic-???.x???.deb
sudo dpkg -i oracle-instantclient19.3-devel_???_???.deb
  • 将以下行添加到*/etc/profile*文件中以定义Oracle环境变量:
root@kitploit:~
export ORACLE_HOME=/usr/lib/oracle/19.3/client64/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib
export PATH=${ORACLE_HOME}bin:$PATH
  • 重启会话(以应用环境变量)

  • 创建*/etc/ld.so.conf.d/oracle.conf*文件并添加Oracle home的路径:

root@kitploit:~
/usr/lib/oracle/19.3/client64/lib/
  • 使用以下命令更新ldpath:
root@kitploit:~
sudo ldconfig
  • 安装CX_Oracle
root@kitploit:~
sudo -s
source /etc/profile
pip3 install cx_Oracle
  • 测试一切是否正常:
root@kitploit:~
python3 -c 'import cx_Oracle' 

该命令应无错误返回。

  • 安装一些Python库:
root@kitploit:~
sudo apt-get install python3-scapy
sudo pip3 install colorlog termcolor pycrypto passlib python-libnmap
sudo pip3 install argcomplete && sudo activate-global-python-argcomplete
  • 下载并安装适用于Python 3的pyinstaller__开发__版本(http://www.pyinstaller.org/)。
root@kitploit:~
python setup.py install
  • 或通过pip安装:
root@kitploit:~
pip3 install pyinstaller
  • 运行ODAT:
root@kitploit:~
./odat.py -h

如果没有任何错误,恭喜!:)

文档和示例

文档和示例位于WIKI页面。

捐赠

如果您想通过捐赠支持我的工作,我将非常感激:

  • 通过BTC:36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf
下载工具
  • 在Java模块中新增选项,用于设置shell路径(例如CentOS下的/usr/bin/sh)。
  • 版本__2.3.2__(16/07/2019):
    • 错误修复:
      • 外部表和误报问题。
  • 版本__2.3.1__(10/08/2018):
    • 在Java模块中新增利用CVE-2018-3004的选项:允许已认证用户在操作系统上任意写入文件(通过绕过内置Oracle JVM安全机制实现权限提升)。更多细节:http://obtruse.syfrtext.com/2018/07/oracle-privilege-escalation-via.html。
  • 版本__2.3__(06/03/2018):
    • 错误修复:
      • 某些数据库凭据在passwordguesser模块中无法被检测到(当它尝试以SYSDBA/SYSOPER连接时)。重要错误修复!
      • smb模块中缺少PPoutput(感谢dirkjanm)
      • tnspoison模块中的误报
      • 有时无法从VSNNUM获取版本信息
    • 改进:
      • 爆破账户时的性能提升。
      • 支持通过TNS连接字符串连接。
      • 在accounts文件中新增了简单凭据。
      • 改进了dbmsLob模块中的文件读取方法(感谢omair2084)
  • 版本__2.2.1__(12/04/2017):
    • 错误修复:
      • tnscmd中的版本信息(信息)
      • 外部模块(捕获Oracle错误)
      • 捕获"connection to server failed"错误
      • Tnscmd:"必须使用'-d SID'选项指定服务器SID"
      • tnspoison模块中的TypeError修复
      • TNS投毒模块在端口!=1521时的整型错误
    • 改进:
      • 新增SID
  • 版本__2.2__(25/03/2016):
    • 新模块(tnspoison),用于利用TNS监听器投毒攻击(CVE-2012-1675)。非常感谢 Joxean Koret 和 donctl。
    • 一些错误修复
    • 更好的帮助菜单
    • ODAT仓库中的__WIKI__页面
  • 版本__2.1__(04/03/2016):
    • 新模块(cve),用于利用某些CVE(通用漏洞与暴露)。目前已实现CVE-2012-3137(可能编号不准确,不确定):已认证用户可以修改其能SELECT的所有表,即使正常情况下无法修改(无ALTER权限)。
    • 新选项(--accounts-files),用于远程认证攻击,使用两个独立的文件:登录名列表和密码列表。
    • 打印10g密码以兼容oclHashcat。
    • 错误修复(使用__nc__监听时)。
  • 版本__2.0__(21/02/2016):
    • 新模块(privesc),用于利用Oracle用户的系统权限(例如CREATE ANY PROCEDURE)以获得特权访问(即DBA)。ODAT此版本可使用的系统权限:
      • CREATE ANY PROCEDURE:以APEX_040200的权限执行任意请求(例如修改Oracle用户密码)
      • CREATE PROCEDURE和EXECUTE ANY PROCEDURE:以SYS权限执行任意请求(例如授予DBA角色给用户)
      • CREATE ANY TRIGER(和CREATE PROCEDURE):以SYS权限执行任意请求(例如授予DBA角色给用户)
      • ANALYZE ANY(和CREATE PROCEDURE):以SYS权限执行任意请求(例如授予DBA角色给用户)
      • CREATE ANY INDEX(和CREATE PROCEDURE):以SYS权限执行任意请求(例如授予DBA角色给用户)
    • 模块_privesc_可用于获取所有已授予的系统权限和角色。它会显示可用于获得特权访问的系统权限。
    • 新选项(-vvv),用于在调试中显示ODAT发送的SQL请求。
    • 独立版移至releases页面(https://github.com/quentinhardy/odat/releases/)
  • 版本__1.6__(14/07/2015):
    • 新功能,用于检测目标是否易受TNS投毒攻击(CVE-2012-1675)
    • 新模块unwrapper,用于解包PL/SQL源代码(从文件或远程数据库)
    • 一些改进
  • 版本__1.5__(17/03/2015):
    • 新模块search,用于在列名中搜索
    • 一些改进(例如表输出)
    • 新选项:输出编码
  • 版本__1.4__(07/12/2014):
    • 修复一些误报
    • 改进CVE-2012-3137模块:更容易检查漏洞是否可被利用
  • 版本__1.3__(07/10/2014):
    • 在all模块中添加*-C选项。该模块可用于使用包含凭据的文件(禁用-U和-P*选项)
    • 添加tnscmd模块,用于获取TNS 别名、数据库版本(通过VSNNUM)和TNS 状态
    • 错误修复:可将名称服务器传递给*-s*选项
  • 版本__1.2__(08/08/2014):
    • 添加SMB模块,用于捕获SMB认证
    • 在Constants.py中添加选项(SHOW_SQL_REQUESTS_IN_VERBOSE_MODE),用于显示发送到数据库服务器的SQL请求
  • 版本__1.1__(28/07/2014):
    • 添加DBMS_LOB模块,用于通过Oracle数据库下载存储在远程服务器上的文件
    • 错误修复:Java源代码:"getenv不再支持,请使用properties和-D替代"
  • 版本__1.0__(26/06/2014):
    • 第一个ODAT版本。