Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
odat — Oracle Database向けのペネトレーションテスティングツールで、有効なSIDの発見、認証情報のブルートフォース攻撃、DBA権限への昇格、システムコマンドの実行、既知のCVEを悪用します。 | Kitploit
ツール/GitHubGitHub/quentinhardy/odat
特権昇格脆弱性スキャナーパスワード攻撃エクスプロイトペネトレーションテストコマンド&コントロールデータベースセキュリティ
GitHubquentinhardy/odat

odat

Oracle Database向けのペネトレーションテスティングツールで、有効なSIDの発見、認証情報のブルートフォース攻撃、DBA権限への昇格、システムコマンドの実行、既知のCVEを悪用します。

リポジトリを見る
1.8k3494ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
Quentin HARDY
[email protected]
[email protected]

ODAT

ODAT(Oracle Database Attacking Tool)は、__Oracleデータベース__のセキュリティを__リモートから__テストするオープンソースの__ペネトレーションテスト__ツールです。

ODATの使用例:

  • リモートでリスニングしているOracleデータベースがあり、有効な__SID__と__資格情報__を見つけてデータベースに接続したい場合
  • データベース上に有効なOracleアカウントを持っており、DBAまたはSYSDBAになるために__権限を昇格__したい場合
  • Oracleアカウントを持っており、データベースをホストするオペレーティングシステム上で前進するために__システムコマンドを実行__したい場合(例:リバースシェル)

Oracle Database 10g、11g、12c、18c、__19c__でテスト済み。

__ODAT Linux スタンドアロン__版は https://github.com/quentinhardy/odat/releases/ にあります。開発版(git clone)、master-python3 ブランチ(Python 3版)を使用することを推奨します。

変更履歴

  • バージョン 5.1.1 (2022/04/27):
    • "ORA-12519 - TNS:no appropriate service handler found" が発生した場合に警告メッセージを表示するようになりました。このエラーは、データベースサーバー(リスナー)が多数の接続(例:資格情報のブルートフォース時)を受け付けた場合にトリガーされる可能性があります。その場合は、--sleep オプション(例:--sleep 0.2)を使用してください。
  • バージョン 5.1 (2021/03/12):
    • all モジュールに新しいオプションを追加: --nmap-file:nmap XML出力ファイルからすべてのOracleデータベースを読み込むため
    • all モジュールに新しいオプション: -l:テキストファイルからすべてのターゲットを読み込むため(各行に ip:port または ip)
    • all モジュールでは、ODATテストを開始する前に各ターゲットにTCP接続がテストされるようになりました。タイムアウト値の管理には --timeout-tcp-check が使用できます。
    • all モジュールでは、TCP接続テストの後、各ターゲットでTNSリスナーが適切に設定されているかどうかをチェックするテストが行われるようになりました。
    • 新しいグローバルオプション: --client-driver。データベース接続のクライアント名(V$SESSION_CONNECT_INFO の client_driver)を設定できます。エンドユーザーが cx_Oracle の使用を認識していないアプリケーションに便利です。デフォルトは 'sql*plus' になりました。
    • ODAT は sqlnet.ora ファイルを受け付けるようになりました。デフォルトのファイルは conf/ にあります。TCP および OUTBOUND (TNS) 接続のタイムアウトがデフォルトで60秒に設定されました。
  • バージョン 5.0 (2021/02/08):
    • 重要な新しいモジュール: Service Name Guesser。有効なサービス名を検索します。専用モジュール snguesser と、all モジュールにも統合されています。デフォルトでは、all モジュールはSID検索後にすべての有効なサービス名を検索します。SIDはサービス名と同じになる場合があります。サービス名が見つかったがSIDが見つからない場合、サービス名を接続用のSIDとして使用できます。
    • search モジュールに --basic-info オプションを追加。データベース/インスタンスに関する基本的な技術情報を取得します。サービス名、SID、データベース、Oracle Database Vault のステータス、Java のステータス、ホスト名、サーバーのIPアドレス、パスワードポリシー、現在のシステム権限、現在のロール、パッチ(12c以上で特権ユーザーの場合)などを取得します。非常に興味深い情報を取得するには高い権限が必要です(例:パスワードポリシーとロックステータス)。
    • 対象がWindowsの場合、DbmsScheduler モジュールにリバースシェルを実装。最小限のHTTPサーバーを起動し、Oracle Database にPowerShellコードをダウンロードさせ、リモートで実行します。ユーザーは対話型のPSシェルを使用できます。ダウンロードされたファイルは自動的に削除されます。
    • DbmsScheduler に --make-download オプションを実装。Windows ターゲットにスクリプト/バイナリファイルをダウンロードさせるため。
    • DbmsScheduler モジュールの出力におけるバグ修正(printOSCmdOutput())。
    • DbmsScheduler モジュールの説明を改善(オプション)。
  • バージョン 4.3 (2020/06/28):
    • 新しいオプション: --both-ul。資格情報ファイルで行われていない場合、各パスワードを小文字と大文字の両方で試行します。
    • 新しいオプション: --random-order。アカウントをランダムな順序でテストします。デフォルトではテキストファイルの順序を使用します。

機能

ODAT を使用すると、以下が可能です:

  • リモート Oracle Database リスナー上の有効な SID を検索:
    • 辞書攻撃
    • ブルートフォース攻撃
    • リスナーの ALIAS
  • 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 TRIGGER(および 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-????: 認証されたユーザーは、通常は変更できないテーブルでも、選択可能なすべてのテーブルを変更できます(ALTER 権限なし)。
    • CVE-2012-1675(別名 TNS ポイズニング攻撃)
  • search モジュールを使用して カラム名を検索:
    • カラム名でパターン(例:password)を検索
  • PL/SQL ソースコードの アンラップ(10g/11g および 12c)
  • システム権限 と 付与されたロール を取得。付与されたロールの権限やロールも取得可能。

このリストは網羅的ではありません。

マインドマップ - ODAT & Oracle Database ペンテスト

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 Web サイトから instant client basic、sdk(devel)、sqlplus を取得:

    • X64: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
    • X86: http://www.oracle.com/technetwork/topics/linuxsoft-082809.html
  • 現時点(2021年3月)では、pyinstaller で ODAT スタンドアロンを生成する場合、Oracle Database instant client バージョン 11.2 が最適です。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
  • Oracle env 変数を定義するために、以下の行を /etc/profile ファイルに追加:
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
  • セッションを再起動(env 変数を適用するため)

  • /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
  • 開発 版の pyinstaller(http://www.pyinstaller.org/)をダウンロードしてインストール(Python 3 用)。
root@kitploit:~
python setup.py install
  • または pip 経由でインストール:
root@kitploit:~
pip3 install pyinstaller
  • ODAT を実行:
root@kitploit:~
./odat.py -h

エラーがなければ良い仕事です:)

ドキュメントと例

ドキュメントと例は WIKI にあります。

寄付

もし私の活動を支援したいのであれば、寄付をいただけると大変感謝します:

  • BTC 経由: 36FugL6SnFrFfbVXRPcJATK9GsXEY6mJbf
ツールをダウンロード
  • デフォルトですべてのパスワードが小文字でテストされるようになりました(アカウントファイルが大文字から小文字に変更されました)。
  • いくつかの新しいアカウント。
  • バージョン 4.2 (2020/02/04):
    • search モジュールに最小限の対話型SQLシェル。
    • DbmsXslprocessor モジュールで DBMS_XSLPROCESSOR.read2clob を使用したファイルダウンロードの新機能。
    • 認証後のリモートOS取得の改善。
    • バグ修正(例:ターミナルサイズ)。
  • バージョン 4.1 (2020/01/15):
    • SIDではなくSERVICE NAMEを使用した接続オプション。
    • 一部の操作(例:NVARCHAR2 と NCLOB、VARCHAR2 と CLOB)でエンコーディングをデフォルトでUTF-8に設定。
    • 複数のバグ修正(エンコード問題)。
  • バージョン 4.0 (2019/08/10):
    • Python 3 での Odat、安定版。
  • バージョン 3.0 (2019/01/09):
    • Oracle Database 18c との互換性。
    • Java モジュールにシェルへのパスを設定する新しいオプション(例:CentOS では /usr/bin/sh)。
  • バージョン 2.3.2 (2019/07/16):
    • バグ修正:
      • 外部テーブルと偽陰性。
  • バージョン 2.3.1 (2018/08/10):
    • Java モジュールに CVE-2018-3004 を悪用する新しいオプション: 認証されたユーザーがOS上のファイルに任意に書き込むことができます(Oracle JVM セキュリティのバイパスによる権限昇格)。詳細は http://obtruse.syfrtext.com/2018/07/oracle-privilege-escalation-via.html を参照。
  • バージョン 2.3 (2018/03/06):
    • バグ修正:
      • passwordguesser モジュールで一部のデータベース資格情報が検出されない問題(SYSDBA/SYSOPER として接続を試行する前)。重要なバグ修正!
      • smb モジュールの PPoutput 欠落(dirkjanm に感謝)。
      • tnspoison モジュールの偽陽性。
      • VSNNUM からバージョンを取得できないことがある問題。
    • 改善:
      • アカウントのブルートフォース時のパフォーマンス向上。
      • TNS 接続文字列を使用した接続オプション。
      • アカウントファイルに新しい自明な資格情報。
      • dbmsLob モジュールの読み取りファイル方法を改善(omair2084 に感謝)。
  • バージョン 2.2.1 (2017/04/12):
    • バグ修正:
      • tnscmd のバージョン(情報)。
      • External モジュール(Oracle エラーのキャッチ)。
      • "connection to server failed" 時のエラーキャッチ。
      • Tnscmd: "The server SID must be given with the '-d SID' option
      • tnspoison モジュールの TypeError バグ修正。
      • ポートが1521以外の場合の TNS ポイズニングモジュール(整数バグ)。
    • 改善:
      • 新しい SID。
  • バージョン 2.2 (2016/03/25):
    • TNS リスナーポイズニング攻撃(CVE-2012-1675)を悪用する新しいモジュール(tnspoison)。Joxean Koret 氏と donctl 氏に多大な感謝。
    • いくつかのバグ修正。
    • ヘルプメニューの改善。
    • ODAT リポジトリ内の WIKI ページ。
  • バージョン 2.1 (2016/03/04) :
    • いくつかのCVE(Common Vulnerabilities and Exposures)を悪用する新しいモジュール(cve)。現在実装されているのは CVE-2012-3137(おそらくこの番号、確かではありません): 認証されたユーザーは、通常は変更できないテーブルでも、選択可能なすべてのテーブルを変更できます(ALTER 権限なし)。
    • リモート認証攻撃用の新しいオプション(--accounts-files)。ログインリストとパスワードリストの2つの別個のファイルを使用します。
    • oclHashcat 互換性のために 10g のパスワードを表示。
    • バグ修正(nc でのリスニング)。
  • バージョン 2.0 (2016/02/21) :
    • Oracle ユーザーのシステム権限(例:CREATE ANY PROCEDURE)を利用して特権アクセス(すなわち DBA)を取得する新しいモジュール(privesc)。このバージョンで ODAT が利用できるシステム権限:
      • CREATE ANY PROCEDURE: APEX_040200 の権限で任意のリクエストを実行(例:Oracle ユーザーのパスワード変更)
      • CREATE PROCEDURE および EXECUTE ANY PROCEDURE: SYS として任意のリクエストを実行(例:ユーザーに DBA ロールを付与)
      • CREATE ANY TRIGGER(および 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 (2015/07/14) :
    • ターゲットが TNS ポイズニング(CVE-2012-1675)に対して脆弱かどうかを検出する新機能。
    • unwrapper という新しいモジュール。ラップされたPL/SQLソースコードをファイルまたはリモートデータベースからアンラップします。
    • いくつかの改善。
  • バージョン 1.5 (2015/03/17) :
    • カラム名を検索するための search という新しいモジュール。
    • いくつかの改善(例:テーブルの出力)。
    • 新しいオプション:出力エンコーディング。
  • バージョン 1.4 (2014/12/07) :
    • いくつかの偽陽性を修正。
    • CVE-2012-3137 モジュールの改善:脆弱性が悪用可能かどうかをより簡単にチェック。
  • バージョン 1.3 (2014/10/07) :
    • all モジュールに -C オプションを追加。このモジュールは資格情報を含むファイルを使用するために使用できます(-U および -P オプションを無効化)。
    • tnscmd モジュールを追加。TNS エイリアス、データベースバージョン(VSNNUM を使用)、TNS ステータスを取得します。
    • バグ修正:名前サーバーを -s オプションに指定可能に。
  • バージョン 1.2 (2014/08/08) :
    • SMB 認証をキャプチャする SMB モジュールを追加。
    • Constants.py にオプション(SHOW_SQL_REQUESTS_IN_VERBOSE_MODE)を追加。データベースサーバーに送信される SQL リクエストを表示します。
  • バージョン 1.1 (2014/07/28) :
    • DBMS_LOB モジュールを追加。Oracle Database を介してリモートサーバーに保存されたファイルをダウンロードするのに便利。
    • バグ修正:Java ソースコード:"getenv no longer supported, use properties and -D instead"
  • バージョン 1.0 (2014/06/26) :
    • 最初の ODAT バージョン。
  • 任意の SELECT リクエストを実行(別名 最小限の SQL シェル)