Аутентификация под пользователем, у которого неизвестен пароль в 1С

Обзор обработки, которая позволяет проходить аутентификацию без знания пароля.

Для начала поговорим об объекте ПользовательИнформационнойБазы. Обратимся в синтаксис-помощник:

ПользовательИнформационнойБазы (InfoBaseUser)

Свойства:

АутентификацияОС (OSAuthentication) Определяет, использовать ли аутентификацию Windows для данного пользователя.

АутентификацияСтандартная (StandardAuthentication) Определяет, использовать ли аутентификацию Windows для данного пользователя.

Пароль (Password) пароль установленный у пользователя(доступен только для записи)
УникальныйИдентификатор (UUID) позволяет искать конкретного пользователя ИБ с помощью функции ПользователиИнформационнойБазы.НайтиПоУникальномуИдентификатору(Новый УникальныйИдентификатор(УникальныйИдентификатор))
СохраняемоеЗначениеПароля (StoredPasswordValue)
Содержит хранимые значения пароля (хеш-функции) и хранимые значения пароля в верхнем регистре (хеш-функции) разделенные запятой.
Установка свойства определяет пароль нового пользователя (по умолчанию — пустая строка) или меняет пароль существующего пользователя.
Изменения начнут действовать только после записи пользователя.
Не следует одному пользователю устанавливать значения этого свойства совместно со значением свойства
Пароль. Иначе пароль записанному пользователю будет установлен в соответствии с установленным значением свойства Пароль, а установленное значение свойства СохраняемоеЗначениеПароля будет проигнорировано.
Доступно только пользователю с административными правами.

Для примера воспользуемся функцией ПользователиИнформационнойБазы.ПолучитьПользователей(), которая вернет нам массив пользователей информационной базы. В результате получим следующий массив:

Индекс

Значение элемента

УникальныйИдентификатор

Имя

Аутентификация Стандартная

СохраняемоеЗначениеПароля

1

А; LA

56b3c643-c234-4d79-8d0e-f6db71895a1c

Laine_A

ЛОЖЬ

cRDtpNCeBiql5KOQsKVyrA0sAiA=, cRDtpNCeBiql5KOQsKVyrA0sAiA=

Нас интересует поле СохраняемоеЗначениеПароля. Обратим внимание, что значение записано через «,», т.е. в верхнем и нижнем регистрах, как и указано в синтаксис помощнике.

Пароль в 1С хранится в виде хэша, сформированного из строки пароля по алгоритму SHA-1 http://ru.wikipedia.org/wiki/SHA-1 и упакованного по алгоритму base64. Есть приложения, которые позволяют получать из хэша пароль. Например https://hashkiller.co.uk/sha1-decrypter.aspx

У меня получилось из пароля зашифровать по алгоритму в SHA-1  с помощью http://www.sha1-online.com/

Но преобразовать по алгоритму base64 не получилось.

Опытным путем было вычислено, что пароль qwerty имеет вид «sbN3OgXA7QF2eHpPFXT/AHX3Uh4=,ZeIeoN6IUqvCsNghwfmsbyzVvZg=».

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

И выставим аутентификацию стандартную, чтобы могли заходить под паролем.

Далее формируем строку подключения «ENTERPRISE» /N»LA» /Pqwerty, запускаем приложение и через 5-20 секунд возвращаем все назад.

7 Comments

  1. Darklight

    Ооо, какая дыра в безопасности!

    Но я думал, что при применении аутентификации паролями, включение аутентификации ОС на «известного пользователя домена» и запуск приложения от его имени — это более простой путь! Когда есть вход под другим пользователем с административными правами.

    Но данную тему можно расширить, а что делать если нет доступа к пользователю с адм. правами (на SQL базе и на файловой — что сложнее)?

    Reply
  2. AlexeyPapanov

    (1) Я специально сделал пользователя, дал права Бухгатера и разрешил интерактивно открывать внешние обработки.

    Так вот обработка не запускается. Видимо, нет полномочий, чтобы получить список пользователей.

    Так что не все так страшно. Но пример интересный!

    Reply
  3. Darklight

    (2) Конечно, в статье и в моём сообщении указано — что доступно только пользователю с правом «Администрирование». Но, всё равно — дырка. Интересно, зачем вообще было добавлено это свойство «СохраняемоеЗначениеПароля» (раньше его не было)?

    А вообще суть взлома через подмену хеша пароля не нова — этим давно пользуются хакеры везде, где есть хеши паролей. И этот метод будет работать без права «Администрирование» — если делать это непосредственно над хранящимися в базе хешами напрямую, минуя 1С.

    Reply
  4. xan333

    В клиент серверном режиме обработка к сожалению не работает, запускается новый сеанс с уже введенным паролем, но не проходит аутентификацию, проверял на БП3 и УПП под административными правами платформа 8,3,9,1818, мне нужна для того чтобы проверять изменения в настройке прав пользователей

    Reply
  5. rybakov_ae

    (4)Вам необходимо увеличить время на запуск до 20 секунд. Обработке не важно в каком варианте была запущена система. Главное чтобы была возможность запуска в обычных формах

    Reply
  6. Zhilyakovdr

    В ИР есть подмена пароля пользователя

    Reply
  7. jaroslav.h

    Автор, не пробовал твой алгоритм работы обработки, привожу свой https://infostart.ru/public/682262/ если он совпадает, напиши, удалю коммент

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *