• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Подмена параметра в методе Queryopen

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

Lariel

Привет.

Столкнулся на днях с интересной проблемой. Может быть кто-то тоже сталкивался.

При открытии документа в его методе

Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)

в параметр Source - передается совсем другой документ, т.е. передается документ из другой базы совсем (из почтовой)
у которого другой метод Queryopen и т.е. попадает документ который вообще не имеет отношения к открываемому документу.

Какой-то интеренсый "глюк" что-ли ? Как такое может быть вообще.

Удалял cache.ndk, desktop, bookmarks, - переустанавливал клиент - ничего не помагает

Самое интересное вот что:

- если переустановить клиент lotus на этой машине, то при первом открытии документ - то ошибки с подменой параметра не возникает
но если перезапусить клиент то ошибка появиться и будет повторяться уже всегда.

- если в ACL базы изменить уровень пользователя с Редактора на дизайнера - то ошибка с подменой параметра исчезает

- на других компьютерах под этим iD-пользователя - все работает корректно т.е. глюк проявляется только на оной конкретной машине

Lotus Notes. 7.0.2 + Windows XP SP2

Даже не знаю - это что какая-то проблема с интерпретаром Lotus Script ?
 
N

nvyush

Может быть в Itialize этой формы или подключаемой библиотеки есть открытие документа в почтовой базе?
 

ToxaRat

Чёрный маг
Green Team
06.11.2007
3 332
42
BIT
0
Lariel
а документ случаем не во фрейме открывается?
или из другого дока?
или Source это глобальная переменная? :rolleyes:
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
53
Lariel

Проблема, естессно, ещё под 6-кой при использовании параметра newInstance в NUIWS.EditDocument. И надо перед вызовом кода очищать (Delete) всех объектов: сессии и т.п., кроме текущей БД, - её надо забивать с помощью присваивания Nothing, чтобы не было малевичей.., потом брать заново и выполнять скрипт.

Получилось много условностей, поэтому сейчас я вообще ушёл от таких решений в сторону NUIWS.URLOpen(URL$).
 
L

Lariel

Lariel
а документ случаем не во фрейме открывается?
или из другого дока?
или Source это глобальная переменная? ;)

Source - нет это не глобальная переменная, но
документ открывается из представление, а представление внутри фрейма.
Это может как-то влиять ?

Добавлено:
Lariel

Проблема, естессно, ещё под 6-кой при использовании параметра newInstance в NUIWS.EditDocument. И

Это интересная идея - нужно посмотреть, проверить.
Хотя на вскидку точно других открытых документов нет и даже нет других открытых баз,
Открыта только одна база в которой идет попытка открыть документ (первый в рабочем пространстве Lotus)
Не знаю - это играет какую-то роль ?
 

VladSh

начинающий
Lotus Team
11.12.2009
1 783
157
BIT
53
Открыта только одна база в которой идет попытка открыть документ (первый в рабочем пространстве Lotus)
Как это "документ (первый в рабочем пространстве Lotus)"?? Открыт вид? и Вы пытаетесь открыть док из вида вручную даблкликом? Если так, то на открытии этого дока может стоять код, который ищет что-то в других базах и пытается открыть..
И то, что "вроде как" не открыто других БД это ничего не означает, сейчас много любителей и под Notes делать что-то типа портала, т.е. как бы на одной странице есть доступ к разным БД.
Если же это Ваша БД и Вы точно знаете, что никаких фреймов на чужие БД нет, тогда не знаю...
 
L

Lariel

Как это "документ (первый в рабочем пространстве Lotus)"?? Открыт вид? и Вы пытаетесь открыть док из вида вручную даблкликом? Если так, то на открытии этого дока может стоять код, который ищет что-то в других базах и пытается открыть..
И то, что "вроде как" не открыто других БД это ничего не означает, сейчас много любителей и под Notes делать что-то типа портала, т.е. как бы на одной странице есть доступ к разным БД.
Если же это Ваша БД и Вы точно знаете, что никаких фреймов на чужие БД нет, тогда не знаю...

я тут наврено только запутал.

Все на самом деле очень просто - код никаких других документов из других баз - не ищет и никуда не лезет в другие базы.
такой код.

а об одном документе в рабочем пространстве я писал для примера для ясности
т.к. выше вроде была идея,
что lotus notes может переключается в один из уже открытых ранее докумиентов -
так вот я и написал что никаких других открытых документов нет.

Условно говоря запускаю лотус открываю эту базы и сразу открываю документ - и тут в параметр source - появляется непонятно гокуда другой совсем документ из другой базы - меня вот это и удивило.

Документ-то в итоге открывается тот на котором щелкал пользователь, но в коде в отлладчике видно что в параметре совсем другой документ.
 
L

Lariel

Строго говоря, если я правильно понял суть этого "глюка" - программный код вообще может никакого не быть -
тут важен именно факт что в процессе отладки в метод в параметр пападает уже другой "левый" документ,
и этот неверное значения параметрп может передаваться уже программному коду.


Sub Queryopen(Source As Notesuidocument, Mode As Integer, Isnewdoc As Variant, Continue As Variant)
REM Source - этот нее тот документ на который щелкал пользователь и вообще из другой базы

----> а программный код уже чего тут анализировать раз Source не тот на которомщелкали
End Sub
 
K

Kee_Keekkenen

может в представлении есть какой-то код ?
 
N

nvyush

Lariel
Может стоит базу выложить, чтоб все подивились на такое чудо
 
L

Lariel

Lariel
Может стоит базу выложить, чтоб все подивились на такое чудо
Да в том то и дело, как я писал в первом постинге - что глюк проявляется только на одной конкретной машине,
а на других ПК эта база работает нормально.

Я начинаю подумывать что это вообще какой-то глюк интерпретатора LotusScript, возможно как-то связанный с системным окружением на этом ПК.

Но как только права пользователя на этой машине в базе поднимаю до Designer - то проблема пропадает на этом ПК.
 
N

nvyush

Lariel
Может "вирус бродит по Европе" (с)? Винду переустанавливать пробовали?
 
K

Kee_Keekkenen

Посмотрел - в событиях представления кода нету.
Чудаса какие-то

а библиотеки заюзаны в виде или документе ?

а то можно написать синглетон, который будет при открытии (вида, дока) перехватывать события вьюхи или документа и все делать по своему..
 
L

Lariel

а библиотеки заюзаны в виде или документе ?

а то можно написать синглетон, который будет при открытии (вида, дока) перехватывать события вьюхи или документа и все делать по своему..

Бибилиотеки да есть и подключаются в документе.
Представление - чистое - в смысле там кода нет никакого.


Ой, а синглетон - это что такое - я чего то такого не встречал - это куда смотреть нужно ?
 
N

nvyush

Ой, а синглетон - это что такое - я чего то такого не встречал - это куда смотреть нужно ?
В гугл. Если чего не знаешь, в первую очередь нужно смотреть в гугл — там гугол информации на любую тему. А что касается библиотек, то стоит внимательно посмотреть, что они делают. Существуют технологии, например, в почтовом шаблоне, когда при открытии формы создаётся экземпляр класса со ссылками на doc, uidoc, session, db и прочее. Вот там может быть какая-нибудь ошибка.
 
L

Lariel

Предположим, что эта ошибка с экземпляром, но не ясно почему тогда она возникает только на одном конкретном месте и исчезает если повысить права до disigner
 
N

nvyush

Предположим, что эта ошибка с экземпляром, но не ясно почему тогда она возникает только на одном конкретном месте и исчезает если повысить права до disigner
А точно до disigner? Может быть до editor? Тогда нужно смотреть в сторону прав на редактирование документа, т.е. поля authors. Теоретически возможно, что у данного сервера (клиента) не хватает прав на редактирование какого-то настроечного/профильного документа и логика программы рушится.
 
30.05.2006
1 345
12
BIT
0
А почему она рушится только ПОСЛЕ ПЕРЕЗАГРУЗКИ машины?

Я там (рядом с проблемой) был: на той машинке установлен сильно засекреченый софт (как пить дать с подменой системных DLL). После переинсталляции LN базы работают - до перезапуска машинки.
Гипотеза: "тот" софт что-то в системе рихтует (типа - с взломом борется)
 
N

nvyush

Хм, обычно подменой системных dll всякие червяки занимаются. "Сильная засекреченность" софта червякам не мешает грызть и его тоже.
Опять же непонятно, а с дизайнерскими правами почему работает? Полтергейст да и только...
 
Мы в соцсетях:

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