Взламываем Windows Server через 1С

akok

Команда форума
Администратор
Сообщения
15,442
Симпатии
12,569
Баллы
2,203
#1
Сегодня мы расскажем, как можно получить права локального администратора на сервере MS Windows Server 2016 через незащищенную базу 1С: Предприятие 8. Мы уверены в том, что данный кейс будет интересен, как специалистам по информационной безопасности, так и системным администраторам. В конце Вас ждет бонус.
Во время выполнения внутреннего тестирования на проникновение мы столкнулись с крайне редкой ситуацией, в сети Заказчика не было обнаружено ни одной уязвимости с помощью автоматизированных сканеров уязвимостей. ДИБ (Департамент информационной безопасности) Заказчика тщательно «пропылесосил» все свои активы и этим закрыл большинство стандартных векторов атак. Мы смогли реализовать несколько сценариев и о самом интересном рассказываем.

Получение учетных данных для MS SQL Server

Сканируя ресурсы в сети, мы обнаружили кластер серверов 1С: Предприятия 8:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2F5a%2Fif%2Fmd%2F5aifmdqorczihxcrdfve056tbkw.png&hash=d32138eeca52a1e1583f1e2da96f2af6


Данный кластер не был защищен паролем и к нему удалось подключиться с помощью стандартной консоли для администрирования серверов 1С Предприятия. 

Функционал консоли администрирования серверов 1С позволяет настраивать 1С сервер и работать с информационными базами, в том числе просматривать все созданные базы на сервере. Таким образом, был получен список информационных баз, расположенных на данном сервере:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fdn%2F6k%2Fwi%2Fdn6kwipysok14f1mmi1l3p63i8q.png&hash=0c0c0d3366708e8d4b2d9b3b52beaeff


Проанализировав все базы, мы обнаружили, что база perf не защищена паролем.

Вход в базу perf можно выполнить без пароля, пользователь по умолчанию обладает правами администратора. После входа в базу выясняется, что она содержит конфигурацию «Нагрузочный тест TPC-1C», предназначенную для тестирования производительности сервера 1С.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fla%2F4h%2Fum%2Fla4humjpj9rwyg9wdwtk5oml7cw.png&hash=f0ba0660318036c65dfae1e956cab0ea


В конфигурации для тестирования производительности требуется указать учетные данные для подключения к серверу баз данных. Учетные данные сохраняются в информационной базе. В нашем случае так и произошло, системный администратор не удалил учетные данные после выполнения тестов производительности:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Ft5%2F6n%2Fmh%2Ft56nmhlj4fnkqs4c3mohhe_ndnm.png&hash=57a0089a226747f91fa3a26dc8359c41


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

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fi-%2Fef%2Fg3%2Fi-efg354zxv0app7itu9wgwlrok.png&hash=2b3089552d432cc66104077e7ae4212a


Далее нашли форму с отображением учетных данных и отключили свойство «РежимПароля» для поля «SQL пароль»:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fli%2Fhg%2Fjo%2Flihgjosgdms6mtkn_clhjd5uhos.png&hash=ea648d5b09847a432f0a20c6ae32cacb


Сохранив изменения и запустив отладку, нажали клавишу F5. После запуска конфигурации, открыв форму с учетными данными, увидели долгожданный пароль:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fav%2Fzh%2Fkz%2Favzhkzk4mhbm0wpsqpcehuu--im.png&hash=55f3d234938530e04a118830a53562e2


Прекрасно, половина дела сделана.

Получение доступа к выполнению команд на сервере

Для проверки валидности учетных данных мы использовали модуль «auxiliary/scanner/mssql/mssql_login» из Metasploit Framework, логин и пароль успешно подошли к MS SQL Server, расположенному на том же сервере:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2F41%2Fec%2F6u%2F41ec6u3kv5sslbeljhkeb8npz1o.png&hash=94f4a5159e726a89a84af0da65d20c37


Пользователь sa по умолчанию имеет максимально возможные права, это позволяет выполнить команды операционной системы через функцию xp_cmdshell. Для проверки этой возможности мы воспользуемся модулем «mssql _exec» из Metasploit Framework:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fxg%2Fhn%2F7k%2Fxghn7kkdcw7k43snqgyf1dtnww0.png&hash=87ab0ded420fe6c268d159a68b91b12b


Как видно на снимке экрана у нас есть возможность выполнять команды на сервере в контексте пользователя «nt service\mssqlserver».

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

Осталось повысить привилегии на сервере. Для этого откроем сессию meterpreter, используя модуль «exploit/windows/mssql/mssql_payload» из Metasploit Framework:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fid%2Fxj%2Fuz%2Fidxjuzucltf6qqmvdhsveukbi1y.png&hash=54726db9ed8ba46ed69af9e21fd7af2c


После того как консоль meterpreter открылась, загрузим модуль incognito:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2Fyr%2Fxg%2Fxf%2Fyrxgxfhxsglronoxvaids97v_tg.png&hash=e84b3955d0a647f8b8bd519c76c2be2f


Модуль incognito позволяет красть токены пользователей, тем самым можно выдать себя за другого пользователя и повысить привилегии в системе.

Как видно на снимке экрана выше интересующие нас токены недоступны.

Нам потребуется применить эксплойт RottenPotato, чтобы привилегированный токен стал доступен. Токен становится доступен на непродолжительное время, нужно действовать очень быстро, чтобы не упустить шанс.

Скачаем эксплойт RottenPotato по ссылке и загрузим его через meterpreter.

Запустим эксплойт командой: execute -cH -f ./rottenpotato.exe. Видим, что в списке доступных токенов появился новый – «NT AUTHORITY\СИСТЕМА» Переключимся на него командой: impersonate_token «NT AUTHORITY\\СИСТЕМА» и нам, наконец, удается получить максимальные права на сервере.

На снимке экрана продемонстрирован процесс повышения привилегий:

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2F8v%2Fq5%2Fwi%2F8vq5wi7duaxeq8cplkoggiijlds.png&hash=8b074f7a8914720beb2f89db68faf7e2


Отлично, система успешно скомпрометирована. 

Бонус

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

Специально для этой ситуации мы создали конфигурацию 1C-Shell, которая позволяет выполнять команды на сервере 1С в контексте пользователя USR1CV8, от имени которого работает сервер 1С.

Скачиваем конфигурацию 1C-Shell. Открываем найденную информационную базу в Конфигураторе.

Выбираем Администрирование — Загрузить информационную базу и указываем файл 1C-Shell.dt.

Внимание! Все данные в этой информационной базе будут удалены!

После загрузки новой конфигурации открываем базу 1C. Вводим пароль MArS6M для пользователя Kraud и получаем возможность выполнять команды на сервере 1С.

proxy.php?image=https%3A%2F%2Fhabrastorage.org%2Fwebt%2F91%2Fvu%2F_h%2F91vu_hpwnuftzwubbux1lmpknz8.png&hash=4d0703fb976231e0cfd00ca12004685d


Таким образом, если мы найдем незащищенную информационную базу, то сразу переходим к этапу повышения привилегий в системе.

Рекомендации

  • устанавливайте пароль для администратора кластера сервера 1С;
  • используйте сильные пароли для привилегированных пользователей в информационных базах 1С;
  • отключите пользователя sa в сервере БД, для выполнения административных задач создайте другую учетную запись с ролью sysadmin;
  • регламентируйте процесс создания новых информационных баз 1С.

Резюме

Этот случай наглядно показал, что не стоит полагаться только на отчеты сканеров. Привлекайте экспертов для независимой оценки защищенности вашей инфраструктуры.

habr.com
 
Сверху Снизу