• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Подключение Сторонней Dll

  • Автор темы DNT
  • Дата начала

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
я удосужился прочесть спецификацию :lol:
- млять , другие слова тоже есть но они менее содержательные и хуже описывают ситуацию
помимо отсутствия контроля буфера - разраб использует , что и есть двух-байтовый Юникод (мать его микрософт
из чего следует - код выше д.б. через стрим и ответ на вопрос о кодировке - очевиден (как в примере - Unicode)

Добавлено: Domino-Designer
Вы действительно там совсем *цензура*и? Не, я простой прогер.
своими ответами вы меня ставите в тупик - что-то не так?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
тест на виндядко-Хрю-32 без ошибок по доступу
кста - как запущается у вас нотусятина UAC отрублен для неё?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
тест на в7энтерпрайз64 - без акцес виолешн
Нотусятина запущена из-под прав одмина (инсталяция дизайнер/админ клиент)
UAC не отрубал (ибо не вскакивал)

Добавлено: код исходный без 2-х байтного преобразования
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"тестовый агент:"</div></div><div class="sp-body"><div class="sp-content">
Код:
%REM
*********************************************
Agent test\bankCOM
Created Jan 23, 2015 by Mikhail Cholokov/CRUINTERNET
Description: Comments for Agent
%END REM
Option Public
Option Declare
Use "ErrorHandling"
Sub Initialize
On Error GoTo ErrH
Dim sName As Variant
Dim sKey1 As Variant
Dim sKey2 As Variant
Dim Result As Variant
Dim path As String
Dim devmgr

sName = "testname"
sKey1 = "testKey1"
sKey2 = "testKey2"
path = "C:\test"
Set devmgr = createobject( "iFOBSDocIntegrator.DocOperation")
Result = devmgr.Login(sName,sKey1,sKey2,StringToBytes(path))
Print {1:}Result 
Result = devmgr.Login(sName,sKey1,sKey2,path)
Print {2:}Result 
Quit:
Exit Sub
ErrH:
Error Err, RaiseError
End Sub

%REM
*--------------------------------------------
Function StringToBytes
Description: Comments for Function
%END REM
Function StringToBytes(txt As String)
Dim routineName As String
routineName="StringToBytes"
On Error GoTo ErrH
'your code here

Dim sess As New NotesSession
Dim stream1 As NotesStream
Dim stream2 As NotesStream
Dim bytes1 As Variant
Dim bytes2 As Variant
Dim buf (0) As Byte
buf(0)=0
Set stream1 = sess.CreateStream
Call stream1.WriteText(txt)
Call stream1.Write(buf)
stream1.Position = 0
bytes1 = stream1.Read

Set stream2 = sess.CreateStream
Call stream2.Open("test.txt", "Unicode")
Call stream2.WriteText(txt)
Call stream2.Write(buf)
stream2.Position = 0
bytes2 = stream2.Read
StringToBytes=bytes2
Quit:
Exit Function
ErrH:
Error Err, RaiseError
Resume Quit
End Function
screenCOMresult.png
результат одинаков для обоих виндяток
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
чуть изменил код:
Код:
	Result = devmgr.Login(sName,sKey1,sKey2,StringToBytes(path, False))
Print {3:}Result
и
Код:
	If twobytes Then
StringToBytes=bytes2
Else
StringToBytes=bytes2
End If
Print 3: как и первый, из чего следует вывод - COM не воспринимает путь в виде последовательности байт
а стринг проходит нормально
остаются открытыми вопросы - валидности ключей (по указанному пути) и секурити для нотусятины (UAC, права юзера, тип установки)
валидность ключей проверить не могу :lol:
 
D

DNT

вот это монстроидально! ))) ща раскидаю текучку - буду пробовать!

lmike - спасибо! :ithx:

п.с. Domino-Designer -- :lol:
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
193
lmike
Хочешь сказать, что вызов:
Код:
Result = devmgr.Login("testname","testKey1","testKey2","C:\test")
и вызов:
Код:
Result = devmgr.Login(sName,sKey1,sKey2,path)
передают в одном случае байты, а в другом строки?
И просто надо было передавать все через строковые переменные?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
lmike
Хочешь сказать, что вызов:
Код:
Result = devmgr.Login("testname","testKey1","testKey2","C:\test")
и вызов:
Код:
Result = devmgr.Login(sName,sKey1,sKey2,path)
передают в одном случае байты, а в другом строки?
И просто надо было передавать все через строковые переменные?
нед :)
в коде это так:
Код:
	Result = devmgr.Login(sName,sKey1,sKey2,StringToBytes(path, True))
Print {1:}Result 
Result = devmgr.Login(sName,sKey1,sKey2,path)
Print {2:}Result 
Result = devmgr.Login(sName,sKey1,sKey2,StringToBytes(path, False))
Print {3:}Result
какбэ присут. StringToBytes ;)

Добавлено: средний вариант передает строку, крайние - байты и бридж их обрабатывает с ошибкой
а трабла ТС может лежать в плоскости прав юзера
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
переделал тест на более корректный (в прежнем временный файл дописывался) и, о чудо, последовательность байт "заработала" (2-х байтный вариант совпал по рез-ту со строкой). Осталось добыть валидные ключи и "погонять" :)
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">"новый вариант"</div></div><div class="sp-body"><div class="sp-content">
Код:
%REM
*********************************************
Agent test\bankCOM
Created Jan 23, 2015 by Mikhail Cholokov/CRUINTERNET
Description: Comments for Agent
%END REM
Option Public
Option Declare
Use "ErrorHandling"
Use "TempDir"
Sub Initialize
On Error GoTo ErrH
Dim sName As Variant
Dim sKey1 As Variant
Dim sKey2 As Variant
Dim Result As Variant
Dim path As String
Dim devmgr

sName = "testname"
sKey1 = "testKey1"
sKey2 = "testKey2"
path = "C:\test"
Set devmgr = createobject( "iFOBSDocIntegrator.DocOperation")
Result = devmgr.Login(sName,sKey1,sKey2,StringToBytes(path, True))
Print {1:}Result 
Result = devmgr.Login(sName,sKey1,sKey2,path)
Print {2:}Result 
Result = devmgr.Login(sName,sKey1,sKey2,StringToBytes(path, False))
Print {3:}Result 
Quit:
Exit Sub
ErrH:
Error Err, RaiseError
End Sub

%REM
*--------------------------------------------
Function StringToBytes
Description: Comments for Function
%END REM
Function StringToBytes(txt As String, twobytes As Boolean)
Dim routineName As String
routineName="StringToBytes"
On Error GoTo ErrH
'your code here

Dim sess As New NotesSession
Dim stream1 As NotesStream
Dim stream2 As NotesStream
Dim bytes1 As Variant
Dim bytes2 As Variant
Dim buf (0) As Byte
buf(0)=0
Set stream1 = sess.CreateStream
Call stream1.WriteText(txt)
Call stream1.Write(buf)
stream1.Position = 0
bytes1 = stream1.Read
Call stream1.Close()
Dim tmp As String
If twobytes Then
Set stream2 = sess.CreateStream
Dim tmpdir As New TempFolderManager
tmp=tmpdir.NewFilename({txt}, True)
Print {temp name:}tmp
Call stream2.Open(tmp, "Unicode")
Call stream2.WriteText(txt)
Call stream2.Write(buf)
stream2.Position = 0
bytes2 = stream2.Read
Call stream2.Close()
StringToBytes=bytes2
MsgBox {Stop}
Else
StringToBytes=bytes1
End If
Quit:
Exit Function
ErrH:
Error Err, RaiseError
Resume Quit
End Function
либу для временных файлов брал
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
217
итого - в бридж можно передавать байтовую последовательность (по поведению = стрингу) ... - но надо тестить на реальных данных
еще надо смотреть - как будет вести себя с локализованными названиями файлов
 
D

DNT

Результат при всех правильных входных параметрах:

ec732698378bdf351aac56b8dc33f1da.jpg


Такое чуство что прога пытается использовать еще что-то кроме этой библы (декриптование ключей например) и получает банан от Лотуса. Общаюсь с разрабом сейчас плотно ... о результатах сообщу.
Спасибо всем за уделенное внимание!
 
D

DNT

Результаты испытаний:

1. LotusNotes использует старую версию LIBEAY32.DLL в которой есть уязвимости (POODLE: опасная уязвимость в SSL 3.0 - ) в iFOBSDocIntegrator уже новая библиотека LIBEAY32.DLL, поэтому происходит конфликт библиотеки с разными версиями. Т.е. проблема в Лотусе.

2. Обновил локальный клиент до версии 8.5.3 FP6 ( )- эту библиотеку обновление не затронуло, она осталась прежней. Проблема осталась :huh:(((

3. Установил клиент 9.0.1 - проблема ушла. Коннект с банком пошел, полет нормальный. Эта Лотусня уже юзает свежую библу...

Вот такое. Сейчас думаем как с этим всем дальше жить)
Обновлять всех клиентов и сервер ой как не хочется. :eek:

п.с. тупое подкладывание библиотеки из папки 9.0.1 в 8.5.3 результата не приносит - Лотус при запуске ругается.
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
193
Обновлять всех клиентов и сервер ой как не хочется
Похоже придется... Поищите в инете SmartUpgrade и затем RunAs.
Можно централизовано всех обновить, главное подготовиться.
Ну и радикальное решение, перевести всех в Web, ну и код переписать )
 
D

DNT

у нас еще и терминальный сервер, а там все интереснее))) как поведет себя клиент 9.0.1 в терминальном режиме + в профилях существующих юзеров как-то надо обновить инфу ... папочки, профили и т.д.

есть опыт?
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
193
DNT
Есть только результаты тестов на виртуалке, но только с RunAs.
SmartUpgrade еще проверяем, у нас несколько доменов, это усложняет настройку...

Исходники:
VM: Win7 x86 + 8.5.3 Standart multi logon

Тест 1: RunAs собранный от прав админа компа на основе 9.0.1 Standart multi logon
Результат:
При запуске от обычного пользователя процесс установки происходит на экране без вопросов.
Установка проходит корректно, папка пользователя не затрагивается, все настройки сохраняются.
Тест 2: RunAs собранный от прав админской учетки в домене на основе 9.0.1 Standart multi logon
Результат:
Установка происходит в фоне, на экране нет ничего.
Установка проходит корректно, папка пользователя не затрагивается, все настройки сохраняются.
Известные мне проблемы:
1. Может застопорится установка, если на компе "каша" из клиентов была.
Тут только ручная чиста компа от мусора и ручная установка.
2. После установки требуется заново настроить лотус.
Так же связано с "кашей клиента". Папка пользователя перемещается из %UserPROFILE%\AppData\Local\IBM\Notes в %UserPROFILE%\AppData\Local\Lotus\Notes
Тут надо просто скопировать папки в новый путь
3. Версия клиента не совпадает.
Тут только пакет другой указать для запуска.
Наша проблема:
Для разных доменов нужны разные пакеты RunAs, собранные под разными учетками.
SmartUpgrade под такой случай еще толком не настроили.
Поэтому думаем что будет лучше донастроить правильно SmartUpgrade или просто тянуть RunAs с сервака...
Я склоняюсь к SU, но пока не дают развернуться...
 
D

DNT

savl

Полезная инфо! Спасибо.


п.с.
Папка пользователя перемещается из %UserPROFILE%\AppData\Local\IBM\Notes в %UserPROFILE%\AppData\Local\Lotus\Notes

мля ну почему такой "пердимонокль"... :huh: всё через Ж )))
 

savl

Lotus Team
28.10.2011
2 599
311
BIT
193
мля ну почему такой "пердимонокль"... huh.gif всё через Ж )))
Это из-за кривизны установки, как выяснилось. Если на 7-ку ставили 8 или если на 8 ставили 8.5+
И это только для многопользовательской версии.
Может все же LIBEAY32.DLL еще раз попробовать подсунуть и потом перезарегить её в системе.
Может тогда ругаться не будет? Или регить пробовали сразу?
 
D

DNT

Код:
Может все же LIBEAY32.DLL еще раз попробовать подсунуть и потом перезарегить её в системе.
Может тогда ругаться не будет? Или регить пробовали сразу?

Не будем рисковать с подкладыванием и регистрированием библы на сервере (а именно там она и будет нужна для ночного агента).
мало ли где потом аукнется...
всё - принято решение о переезде на 9.0.1 и сервера и клиентов.
 
D

DNT

Коллеги, есть вопрос....
Если разработчик не предусмотрел внутренней функции корректного уничтожения инстанса созданного своим OLE объектом (например, для объекта Ексель есть метод myExcelObj.Quit()) то есть ли вариант команды из LotusScript аналогичного свойства?

Потому как Set Obj = nothing (с предварительным nothing для всех переменных) не завершает инстанс ,он висит где-то в памяти, соответственно при следующих вызовах получаю ошибки.

Загугление не помагает.
Прошу дать совет - мучать разраба или есть какой-то выход?
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!