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 и пользователь привилегирован) и т.д. Требуются высокие привилегии для получения очень интересной информации (например, политика паролей и статус блокировки).
- Обратная оболочка реализована в модуле 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):
- Версия 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)
- Улучшения:
- Версия 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) для атаки удалённой аутентификации, использующая два отдельных файла: список логинов и список паролей.