|
Проверить пароль пользователя ИБ | ☑ | ||
---|---|---|---|---|
0
Dirk Diggler
29.02.12
✎
17:55
|
Как проверить, совпадает ли некая введенная в поле ввода строка с паролем пользователя ИБ Васи Иванова?
|
|||
1
mikecool
29.02.12
✎
17:55
|
никак
|
|||
2
ShoGUN
29.02.12
✎
17:56
|
ПользовательИнформационнойБазы.Пароль (InfoBaseUser.Password)
ПользовательИнформационнойБазы (InfoBaseUser) Пароль (Password) Использование: Только запись. Описание: Тип: Строка. Пароль, используемый при стандартной аутентификации. Доступность: Сервер, толстый клиент, внешнее соединение. ТОЛЬКО ЗАПИСЬ. Объяснить, почему? |
|||
3
Vladuha
29.02.12
✎
17:59
|
Можно только поменять
|
|||
4
PR
29.02.12
✎
17:59
|
(0) Без палева так :))
|
|||
5
Hmster
29.02.12
✎
17:59
|
А подключиться по COM ?
|
|||
6
Vladuha
29.02.12
✎
18:02
|
(5) имхо единственный вариант
|
|||
7
Dirk Diggler
29.02.12
✎
18:04
|
(2) Дык в чем проблема? Метод Этопароль(Строка) возврашающий булево решил бы вопрос.
Надо быстро идентифицировать сотрудника на АРМ. Подбежал Вася, решил сделать нечто. Сведения об операции должны быть записаны в РС. Перелогиниваться долго. Было бы просто - выбрал себя в списке справочника Пользователи, быстро вколотил пароль или штрихкод подсунул, и дальше побежал. |
|||
8
PR
29.02.12
✎
18:06
|
(7) Ну так и храни их в базе отдельно.
Или OLE. |
|||
9
Dirk Diggler
29.02.12
✎
18:06
|
кого их? пароли?
|
|||
10
Rie
29.02.12
✎
18:06
|
(7) А зачем для этого пароль?
Прибежал Вася, подсунул штрих-код - в РС записалось: "приходил В.Пупкин, сделал ТО-ТО". |
|||
11
ShoGUN
29.02.12
✎
18:07
|
(7) Классный метод, как раз для брутфорса :)))
|
|||
12
Dirk Diggler
29.02.12
✎
18:07
|
(10) Фамилия больше нравится. Тем более, это городить еще сопоставление штрихкодов с васями... Но если больше ничего не придумаю, так и сделаем...
|
|||
13
Dirk Diggler
29.02.12
✎
18:08
|
(11) Брутфорс на 1С? юморист.
|
|||
14
PR
29.02.12
✎
18:08
|
(9) Да
|
|||
15
Stim
29.02.12
✎
18:08
|
можно. подключаясь по ком
|
|||
16
Dirk Diggler
29.02.12
✎
18:09
|
(14) Ну их потом в ИБ как-то записывать надо, пользюк сам уже так просто его не сменит и т.п. Костылей я и сам придумаю... Ладно. Закрываем вопрос.
|
|||
17
ShoGUN
29.02.12
✎
18:14
|
(13) Учитывая "сложность" большинства паролей - запросто. Подобрать цифровой пароль из 8 цифр(дата рождения или ещё там какая) - в чём проблема?
|
|||
18
Dirk Diggler
29.02.12
✎
18:20
|
(17) а не проще прогеру просто заменить его? )
|
|||
19
ShoGUN
29.02.12
✎
18:23
|
(18) Палево. Поменяешь - назад не вернёшь, а значит не сможешь остаться незамеченным.
|
|||
20
ShoGUN
29.02.12
✎
18:24
|
Хотя навредить конечно можно - например нагенерить случайных GUID-ов и поставить их вместо паролей ВСЕМ пользователям ))
|
|||
21
MM
29.02.12
✎
18:28
|
(19) Устаревшие данные, смотрите свойство СохраняемоеЗначениеПароля, разумеется при наличии прав администратора или в привилегированном режиме.
|
|||
22
ShoGUN
29.02.12
✎
18:29
|
(21) Однако ж. Когда такое появилось?
|
|||
23
ShoGUN
29.02.12
✎
18:31
|
+(22) Тогда энто автору подходит на ура(правда сравнивать придётся хэши)
|
|||
24
Dirk Diggler
29.02.12
✎
18:37
|
(23) Хэш строки-то как получить?
|
|||
25
Ахиллес
29.02.12
✎
18:38
|
(21) И чего? Там хэш. А по какой хэш-функции он вычисляется ты знаешь?
(24) Да не мудри ты. Тебе уж 2 раза сказали, подключайся по COM. Дёшево и сердито. |
|||
26
Dirk Diggler
29.02.12
✎
18:43
|
Да ладно. А если вот так:
ПользовательИнформационнойБазы = Вася; // берем из поля ввода Пароль = ПарольДляПроверки; ХэшНастоящегоПароля = ПользовательИнформационнойБазы.СохраняемоеЗначениеПароля; НачатьТранзакцию(); ПользовательИнформационнойБазы.Пароль = Пароль; ПользовательИнформационнойБазы.Записать(); ХешВведенногоПароля = ПользовательИнформационнойБазы.СохраняемоеЗначениеПароля; Если ХешВведенногоПароля = ХэшНастоящегоПароля Тогда ИПравдаВася = Истина; Иначе ИПравдаВася = Ложь; КонецЕсли; ОтменитьТранзакцию(); |
|||
27
PR
29.02.12
✎
18:44
|
(24) Думаю, что никак, иначе все становится очень просто, я бы даже сказал ОЧЕНЬ просто :))
|
|||
28
PR
29.02.12
✎
18:45
|
+(27) Мда, хорошая такая дыра в 1С :))
|
|||
29
ShoGUN
29.02.12
✎
18:50
|
(25)(26) Всё проще, ПользовательИнформационнойБазы.СохраняемоеЗначениеПароля доступно на чтение и запись. Примерно так:
ПользовательИнформационнойБазы = Вася; // берем из поля ввода Пароль = ПарольДляПроверки; ХэшНастоящегоПароля = ПользовательИнформационнойБазы.СохраняемоеЗначениеПароля; ПользовательИнформационнойБазы.Пароль = Пароль; ПользовательИнформационнойБазы.Записать(); ХешВведенногоПароля = ПользовательИнформационнойБазы.СохраняемоеЗначениеПароля; Если ХешВведенногоПароля = ХэшНастоящегоПароля Тогда ИПравдаВася = Истина; Иначе ИПравдаВася = Ложь; КонецЕсли; ПользовательИнформационнойБазы.СохраняемоеЗначениеПароля = ХэшНастоящегоПароля; ПользовательИнформационнойБазы.Записать(); И транзакция не нужна... |
|||
30
Dirk Diggler
29.02.12
✎
18:50
|
а с транзакцией не быстрее будет?
|
|||
31
ShoGUN
29.02.12
✎
18:52
|
(30) Если и будет, то несущественно.
|
|||
33
PR
29.02.12
✎
18:52
|
Интересно, а почему и чтение и запись для хеша непонятно?
|
|||
34
ShoGUN
29.02.12
✎
18:53
|
(33) Там есть подвох. Свойство доступно для пользователя с административными правами.
|
|||
35
pumbaEO
29.02.12
✎
18:55
|
т.е. с привелигированного модуля (вдруг там будет "Выполнить") не сработает?
|
|||
36
ShoGUN
29.02.12
✎
18:56
|
(35) Не знаю, попробуй, я 25 минут назад узнал об этой фигне :)
|
|||
37
PR
29.02.12
✎
18:59
|
(34) И что?
Я так думаю, что это из-за того, что можно менять пароль. Но хеш я думаю хоть и записывается, но вычисляется сам. |
|||
38
ShoGUN
29.02.12
✎
19:02
|
(37) Ну дырка это, для админов. С помощью этой дырки можно сохранять полностью список пользователей наружу куда-нибудь и обратно восстанавливать. При этом пароли не светятся.
|
|||
39
PR
29.02.12
✎
19:04
|
(38) Без записи пароля, через запись хеша?
|
|||
40
pumbaEO
29.02.12
✎
19:04
|
Интересный вопрос: хеш для одного и того же пользователя и пароля одинаковый для разных баз?
|
|||
41
Dirk Diggler
29.02.12
✎
19:06
|
конечно. Хэшируется-то только строка пароля.
|
|||
42
ShoGUN
29.02.12
✎
19:06
|
(39) Ну да, конечно. В никсах /etc/shadow так же сделан по идее.
|
|||
43
pumbaEO
29.02.12
✎
19:08
|
(42) нет, в никсах добавляется соль для каждого хеша случайная.
|
|||
44
ShoGUN
29.02.12
✎
19:10
|
(43) Чё-т я не понял, если соль случайная - как второй раз хэш вычислять при проверке пароля? :)
|
|||
45
PR
29.02.12
✎
19:11
|
(42) Разве из хеша можно получить пароль?
|
|||
46
ShoGUN
29.02.12
✎
19:13
|
(45) Нельзя(точней очень сложно), но это и не требуется. Проверка пароля - односторонняя операция, тебе не нужно получать пароль из хранимого хэша, тебе нужно получить хэш из введенной строки и сравнить его с хранимым. Это простейший случай, конечно, правильная защита работает не так.
|
|||
47
pumbaEO
29.02.12
✎
19:17
|
соль пишется в /etc/shadow просто, для одного и того же пароля хеш и соль будет всегда разные, заранее набить табличку соответствия ключей хеш и пароль нереально получаеться. Т.е. к тебе попала запись из /etc/shadow брутфорсить надо заново.
Вот и мне интерестно, если создать в двух разных базах 1-го пользователя и пароль один и тот же, будет ли совпадать хеши. |
|||
48
ShoGUN
29.02.12
✎
19:18
|
(47) Кстати да, интересно. Попробуй.
|
|||
49
ShoGUN
29.02.12
✎
19:23
|
Кстати, ещё одна причина, по которой Пароль доступен только на запись - он просто не хранится в бд, хранится только хэш.
|
|||
50
pumbaEO
29.02.12
✎
19:29
|
Все печально - хеш вычисляется только для пароля, не зависит от базы и имени пользователя.
Ну в принципе это и не удивительно, если в 1С для пароля нету зависимости от регистра и больше чем 14 или 10 не отрабатываются. Так что берегите хеши директоров, а то злобные хакеры... |
|||
51
MM
29.02.12
✎
19:38
|
(50) Я вам ещё один секрет открою, там хранится не один хеш, а два. Причём первый рассчитан от пароля приведённого к верхнему регистру, чтобы брутфорс упростить. :)
|
|||
52
pumbaEO
29.02.12
✎
19:40
|
NWoZK3kTsExUV00Ywo1G5jlUKKs=,NWoZK3kTsExUV00Ywo1G5jlUKKs= - я на 1 баловался. :)
|
|||
53
PR
29.02.12
✎
20:48
|
(26) Кстати, не работает :))
Надо так:
Пользователя нужно заново в базе искать, иначе хеш старый. |
|||
54
MMF
01.03.12
✎
13:13
|
кстати, странная идея у 1С-ников насчет хранения 2-х хешей пароля (приведенного к верхнему регистру).
|
|||
55
pumbaEO
01.03.12
✎
13:15
|
Почему странная, в 1С пароли регистронезависимые.
|
|||
56
pumbaEO
01.03.12
✎
13:16
|
ой, бред, согласен странная. Зачем 2 если все равно пароль не зависит от регистра.
|
|||
57
MMF
01.03.12
✎
13:34
|
Можно легко сделать подмену пароля выбранных юзеров на какой-нить "123" и восстановление на старое значение после входа. Осуществить мечту зловредителей: зайти под недругом и напакостить в базе. К тому же часто пароли хранятся даже не в виде хеша, а в открытом виде в базах с длительной историей. Или пропатчить саму 1С, поскольку клиент проверяет можно ли ему заходить, а не сервер
|
|||
58
Stim
01.03.12
✎
13:35
|
(53) так и до брутфорса недалеко)
|
|||
59
pumbaEO
01.03.12
✎
13:38
|
тут вроде sha1, а таблички уже набиты ... какой же тут брутфорса, получил хеш 1С вбил в инете - получил пароль.
|
|||
60
MMF
01.03.12
✎
13:46
|
(59) таблички набиты для цифр и осмысленных слов
|
|||
61
Vladal
30.03.12
✎
13:47
|
(26) Конструкцию
Если ХешВведенногоПароля = ХэшНастоящегоПароля Тогда ИПравдаВася = Истина; Иначе ИПравдаВася = Ложь; КонецЕсли; Можно записать в одну строку: ИПравдаВася = ХешВведенногоПароля = ХэшНастоящегоПароля; |
|||
62
TimonXPumbA
16.07.12
✎
15:34
|
Собственно сам подбор можно описать так, может еще кто нибудь подскажет, как улучшить?
Процедура КнопкаВыполнитьНажатие(Кнопка) Слово = /"/"; КоличествоПроходов = 10; Симв = /"1234567890/"; ДлинаСимволов = СтрДлина(Симв); ОчиститьСообщения(); Сообщить(/"Начало: /" ТекущаяДата()); Сообщить(/"Вариантов: /" pow(ДлинаСимволов,КоличествоПроходов)); Рекурсия(КоличествоПроходов); Сообщить(/"Конец: /" ТекущаяДата()); КонецПроцедуры Процедура Рекурсия(Разрядность) Для Н = 1 По ДлинаСимволов Цикл Слово = Слово Сред(Симв,Н,1); Если Разрядность <> 1 Тогда Рекурсия(Разрядность - 1); КонецЕсли; ОбработкаПрерыванияПользователя(); //Собственно Сообщить(Слово); // Слово = Лев(Слово,СтрДлина(Слово)-1); КонецЦикла; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |