1С inside. теория:дырки в 1c

Дырки в 1C

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

Но удовлетворяют ли современные программы автоматизации бухучёта предЪявляемым требованиям конфиденциальности? Изучения говорят о том, что, по крайней мере, не все. Скажем популярная совокупность [advert=103]1С[/advert]: Предприятие 1С версии 7.7 для SQL не только с легкостью предоставляет доступ к работе всем желающим, но и с ее помощью кроме того возможно взять права администратора БД на SQL сервере, на котором находится база 1С.

Как? Об этом позднее. А для начала давайте разглядим предпосылки, каковые приведут нас к таким выводам.

  1. Все данные о пользователях 1С хранится в локальных файлах на персональных компьютерах пользователей (а не на сервере, как должно быть в обычных клиент — серверных совокупностях). Конкретнее, эта информация хранится в файле :userdefusers.user
  2. Информация о связи SQL-Сервером (ConnectionString) кроме этого хранится локально — в файле 1cv7.dba. Причем, в том месте хранится ConnectionString не абы-какого пользователя, а администратора и owner-а (обладателя) БД!
  3. ConnectionString шифруется на основании информации из файла users.usr, в частности посредством зашифрованного пароля первого заведенного в 1С пользователя. От имени этого пользователя зашифрованная информация из ConnectionString никак не зависит, т.к. зашифрованные пароли пользователей 1С не зависят от имени этих самых пользователей. Метод шифрования паролей обычный — MD5.

Допустим, что у нас имеется 2 цели — 1) вход в совокупность 1С под любым именем без пароля и 2) получение прав администратора к SQL-серверу, на котором находится база 1С. Из вышеперечисленных пунктов возможно предложить следующую стратегию для ответа задач (само собой разумеется, потребуются кое-какие пользования и знания ассемблера отладчиками, но цена интересующей нас информации это окупает!).

  1. Запускаем 1С из-под отладчика (я, к примеру, пользовался MS VC++6.0 :). Вводим произвольное имя пользователя, любой пароль, приобретаем сообщение об отказе в доступе. Прерываем исполнение. Разматываем стек до адресов главного модуля и выше по тексту ищем место в программе, с которого, по окончании сравнения введенного пароля, закодированного посредством MD5, с имеющимся паролем в файле users.usr, идет переход на вывод сообщения. Такое место имеется :)! Сейчас меняем команду условного перехода jxx : на jmp — готово! Сейчас мы можем зайти под любым зарегистрированным именем пользователя (выбираем первое попавшееся на глаза имя пользователя из файла users.usr — благо они не шифруются :) и под любым паролем!
  2. Совсем — вызов соответствующей API-ой функции установления связи с SQL-сервером и наблюдаем передаваемые ей параметры :).

Продолжение направляться…

Оригинал статьи

Что такое видеокурсы 1С? Наблюдаем! (EDU.1C.RU)


Похожие заметки:

Понравилась статья? Поделиться с друзьями: