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 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 (27/04/2022):
    • Выводится предупреждающее сообщение при возникновении ошибки "ORA-12519 - TNS:no appropriate service handler found". Эта ошибка может быть вызвана сервером базы данных (прослушивателем) при установке слишком большого количества соединений (например, при подборе учётных данных). В этом случае следует использовать опцию --sleep (например, --sleep 0.2).
  • Версия 5.1 (12/03/2021):
    • Новая опция в модуле all: --nmap-file для загрузки всех баз данных Oracle из выходного файла nmap в формате XML
    • Новая опция в модуле all: -l для загрузки всех целей из текстового файла (ip:port или ip на каждой строке)
    • В модуле all теперь перед запуском тестов ODAT проверяется TCP-соединение с каждой целью. Для управления тайм-аутом можно использовать --timeout-tcp-check.
    • В модуле all теперь для каждой цели выполняется проверка корректной настройки TNS-прослушивателя. Эта проверка выполняется после проверки TCP-соединения.
    • Новая глобальная опция: --client-driver. Позволяет задать имя клиента для подключения к базе данных (client_driver из V$SESSION_CONNECT_INFO). Полезно для приложений, конечные пользователи которых не знают об использовании 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 для подключения.
    • Опция --basic-info в модуле search для получения основной технической информации о базе данных/экземпляре. Она получает Service Name, SID, базы данных, статус Oracle Database Vault, статус Java, имя хоста, IP-адрес сервера, политику паролей, текущие системные привилегии, текущие роли, патчи (если >= 12c и пользователь привилегирован) и т.д. Требуются высокие привилегии для получения очень интересной информации (например, политика паролей и статус блокировки).

Возможности

Благодаря ODAT вы можете:

  • искать действительный SID на удалённом прослушивателе Oracle Database с помощью:
    • атаки по словарю
    • атаки перебором
    • 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).

Этот список не является исчерпывающим.

Ментальная карта – 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 (рекомендуется)

Установка (опционально, для версии разработки)

В этой части описывается, как установить instantclient, CX_Oracle и некоторые другие библиотеки Python на Ubuntu для получения версии 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
  • Загрузите instant client basic, sdk (devel) и sqlplus с веб-сайта Oracle:

    • X64: http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
    • X86: http://www.oracle.com/technetwork/topics/linuxsoft-082809.html
  • На данный момент (03/2021) версия 11.2 Instant Client Oracle является наилучшей, если вы хотите сгенерировать автономную версию ODAT с помощью pyinstaller. Для использования версии разработки ODAT можно использовать последнюю версию клиента Oracle (например, версию 19).

  • Установите пакеты python3-dev, alien и libaio1 (для sqlplus):

root@kitploit:~
sudo apt-get install libaio1 python3-dev alien python3-pip
  • Сгенерируйте DEB-файлы из RPM-файлов с помощью:
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 для определения переменных env 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:

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
Скачать инструмент
  • Обратная оболочка реализована в модуле DbmsScheduler для Windows. Запускается минимальный HTTP-сервер, база данных Oracle загружает код PowerShell и выполняет его удалённо. Пользователь получает интерактивную оболочку PS. Загруженный файл автоматически удаляется.
  • Опция --make-download реализована в DbmsScheduler для загрузки скрипта/двоичного файла на цель Windows.
  • Исправление ошибки вывода в модуле DbmsScheduler (функция printOSCmdOutput()).
  • Улучшенные пояснения в модуле DbmsScheduler (опции).
  • Версия 4.3 (28/06/2020):
    • Новая опция: --both-ul. Пробует каждый пароль в нижнем и верхнем регистре, если это не сделано в файле(ах) учётных данных
    • Новая опция: --random-order. Тестирует учётные записи в случайном порядке. По умолчанию используется порядок из текстового файла
    • Теперь все пароли по умолчанию проверяются в нижнем регистре (файлы учётных записей изменены с верхнего на нижний регистр)
    • Несколько новых учётных записей
  • Версия 4.2 (04/02/2020):
    • Минимальная интерактивная SQL-оболочка в модуле search
    • Новая функция для загрузки файлов с помощью DBMS_XSLPROCESSOR.read2clob в модуле DbmsXslprocessor
    • Улучшение для получения удалённой ОС после аутентификации
    • Исправление ошибок (например, размер терминала)
  • Версия 4.1 (15/01/2020):
    • Опция для подключения по SERVICE NAME вместо SID
    • Кодировка UTF-8 по умолчанию для некоторых операций (например, NVARCHAR2 и NCLOB, VARCHAR2 и CLOB)
    • Множественные исправления ошибок (проблемы с кодировкой)
  • Версия 4.0 (10/08/2019):
    • Odat на Python 3, стабильная версия
  • Версия 3.0 (01/09/2019):
    • Совместимость с Oracle Database 18c
    • Новая опция в модуле Java для задания пути к оболочке (например, /usr/bin/sh в CentOS)
  • Версия 2.3.2 (16/07/2019):
    • Исправления ошибок:
      • внешняя таблица и ложноотрицательные результаты
  • Версия 2.3.1 (10/08/2018):
    • Новая опция в модуле Java для эксплуатации CVE-2018-3004: позволяет аутентифицированному пользователю произвольно записывать файлы в ОС (повышение привилегий с обходом встроенной безопасности JVM Oracle). Подробнее http://obtruse.syfrtext.com/2018/07/oracle-privilege-escalation-via.html.
  • Версия 2.3 (06/03/2018):
    • Исправления ошибок:
      • Некоторые учётные данные базы данных могли не обнаруживаться в модуле passwordguesser (когда перед этим предпринимается попытка подключения как SYSDBA/SYSOPER). Важное исправление ошибки!
      • Отсутствовал PPoutput в модуле smb (спасибо dirkjanm)
      • Ложные срабатывания в модуле tnspoison
      • Иногда невозможно получить версию из VSNNUM
    • Улучшения:
      • Улучшение производительности при подборе учётных записей.
      • Опция для подключения с помощью TNS Connection String
      • Новые тривиальные учётные данные в файле учётных записей
      • Улучшенный метод чтения файлов в модуле dbmsLob (спасибо omair2084)
  • Версия 2.2.1 (12/04/2017):
    • Исправления ошибок:
      • Версия в tnscmd (информация)
      • Внешний модуль (перехват ошибки Oracle)
      • Перехват ошибки при "соединение с сервером не удалось"
      • Tnscmd: "Идентификатор SID сервера должен быть указан с опцией '-d SID'
      • Исправление ошибки TypeError в модуле tnspoison
      • Модуль отравления TNS при порте!=1521 (ошибка Integer)
    • Улучшения:
      • Новые SID
  • Версия 2.2 (25/03/2016):
    • Новый модуль (tnspoison) для эксплуатации атаки отравления TNS-прослушивателя (CVE-2012-1675). Большое спасибо Joxean Koret и donctl.
    • Некоторые исправления ошибок
    • Улучшенное меню справки
    • Страницы WIKI в репозитории ODAT
  • Версия 2.1 (04/03/2016):
    • Новый модуль (cve) для эксплуатации некоторых CVE (Common Vulnerabilities and Exposures). В настоящее время реализован CVE-2012-3137 (возможно, это номер, не уверен...): аутентифицированный пользователь может изменять все таблицы, которые он может выбирать, даже если обычно он не может их изменять (нет привилегии 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 TRIGGER (и CREATE PROCEDURE): выполнение произвольных запросов от имени SYS (например, предоставление роли DBA пользователю)
      • ANALYZE ANY (и CREATE PROCEDURE): выполнение произвольных запросов от имени SYS (например, предоставление роли DBA пользователю)
      • CREATE ANY INDEX (и CREATE PROCEDURE): выполнение произвольных запросов от имени SYS (например, предоставление роли DBA пользователю)
    • Модуль privesc можно использовать для получения всех предоставленных системных привилегий и ролей. Он показывает системные привилегии, которые можно использовать для получения привилегированного доступа.
    • Новая опция (-vvv) для отображения SQL-запросов, отправленных ODAT в режиме отладки
    • Автономная версия перенесена в 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):
    • Добавлена опция -C в модуле all. Этот модуль можно использовать для использования файла, содержащего учётные данные (отключает опции -U и -P)
    • Добавлен модуль tnscmd для получения TNS alias, версии базы данных (благодаря VSNNUM) и TNS status
    • Исправление ошибки: имя сервера может быть передано опции -s
  • Версия 1.2 (08/08/2014):
    • Добавлен модуль SMB для захвата аутентификации SMB
    • Добавлена опция (SHOW_SQL_REQUESTS_IN_VERBOSE_MODE) в Constants.py для отображения SQL-запросов, отправленных на сервер базы данных
  • Версия 1.1 (28/07/2014):
    • Добавлен модуль DBMS_LOB, полезный для загрузки файлов, хранящихся на удалённом сервере через Oracle Database.
    • Исправление ошибки: исходный код Java: "getenv больше не поддерживается, используйте properties и -D"
  • Версия 1.0 (26/06/2014):
    • Первая версия ODAT.
  • CVE-2012-1675 (также известна как атака отравления TNS)
  • искать в именах столбцов с помощью модуля search:
    • поиск шаблона (например, пароль) в именах столбцов
  • распаковывать исходный код PL/SQL (10g/11g и 12c)
  • получать системные привилегии и предоставленные роли. Также можно получать привилегии и роли предоставленных ролей
  • выполнять произвольные SELECT-запросы (также известные как минимальная SQL-оболочка)