|
|
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
Hello, world! Преамбула: Есть некая база - "морда" ДЕЛЬФИна, тело - IB (база "серийная", структура таблиц доступна многим). Есть юзвери базы, имеющие различный доступ к неким ее возможностям согласно своим логинам/паролям. Есть FastReport`овские отчеты, лежащие на скрытой шаре read-only (даже не на сервере IB), путь к которой прописан в самой БД в админской ее части и запускаемые ИЗ БАЗЫ (ну типа сделал выборку документов на экран, открыл пункт "Отчеты", выбрал из списка репортов нужный - и получил FrView с нужными данными - дальше хошь на принтер, хошь в файл). Соответственно, предполагалось, что другого легального способа получить из базы данные для юзверя не существовало... Амбула: Юзверь (легальный юзверь базы) берет FrDesign (весчь недефицитная), запускает его, тот по алиасу из BDE на машине юзверя коннектится к базе и запрашивает у юзверя логин/пасс (в базу). Тот называет себя и FrDesign открывается. Далее юзер создает новый репорт, в котором прописывает (Select бла-бла From бла-бла-бла Where бла), а затем нажимает кнопку Preview - и на экране искомая выборка!!! Вопрос - что в данной ситуации можно сделать, чтобы закрыть backdoor? Whith best! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 19:03 |
|
||
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
автор писал:тот по алиасу из BDE на машине юзверя коннектится к базе и запрашивает у юзверя логин/пасс (в базу). Тот называет себя и FrDesign открывается Давно я не работал с БДЕ, правду сказать, но как это он себя называет, что-то я не понял нефига... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 19:25 |
|
||
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
Hi! Ну FrDesign спрашивает у юзверя - "ты хто?" Тот пишет свое имя и пасс, FrDesign предъявляет их базе, она проверяет, что в ее юзверях такой числится, и дает команду FrDesign`у открыться и отдаться юзверю... Мля... :-((((( Whith best... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 19:40 |
|
||
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
Так зная пароль можно и другими прогами цепляться к базе, IBExpert-ом к примеру. У меня вот 2-х этапная регистрация - на 1-м этапе пользователь БД выбирается, а на втором из спец. таблицы вегребается список операторов и происходит переподключение под ролью, которая соответствует этому оператору. роли свои они не знают, а пользователь без роли имеет права читать только некоторые таблицы. Сисок операторов же зашифрован - пускай читают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2003, 20:52 |
|
||
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
Hi, Gold! Дык засада в другом - в базе (оболочке) не предусмотрено никакой защиты от запуска репорта, не прописанного в списке репортов базы (в одной из таблиц)... Речь не идет о защите от "внешнего" вторжения: логин/пасс на IB-сервер (сиречь SYSDBA/********) - тайна сия великая есть. Трабл в том, что, несмотря на все профили прав юзверей базы, оный юзверь легко получает _любую_ инфу из _любых_ таблиц, запустив генератор репортов под своим аакаунтом в базу... Вчера уже созванивался с разработчиками базы, буду трясти их, бо средствами IB или OS решить эту проблему пока не представляется возможным... Whith best... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2003, 10:04 |
|
||
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
Так, чего-то я не понял, наверное. Предположим, юзер запустил FrDesign, подключился в БД, и он может либо открыть существующие шаблоны отчетов либо создать новый. Ты говоришь, что сейчас в базе (оболочке) не предусмотрено никакой защиты от запуска репорта, не прописанного в списке репортов базы (в одной из таблиц) . Если разработчики всё-таки сделают проверку (а вот как?) на то, репорт с каким названием запущен, то что мешает злобному юзеру открыть уже существующий шаблон и в нем поменять запрос? Имя отчета останется прежним, прописаным в списке репортов базы, и юзер всё увидит. Далее, какова цель построения этой защиты? Если у юзера есть легальное имя и пароль, и он может из проги подключиться к БД, то с таким же успехом он может запустить IBExpert и вытянуть данные, к которым из проги нет доступа. Вот ты говоришь, что Речь не идет о защите от "внешнего" вторжения: логин/пасс на IB-сервер (сиречь SYSDBA/********) - тайна сия великая есть . Ну нет смысла делать защиту от захода конкретной программой (в данном случае генератором отчетов). Ну закроете вы доступ из этого генератора, принесет юзер на дискетке IBExpert и запустит его. Закроете доступ IBExpert'у, юзер принесет isql и им залезет в базу. А всё почему - у него есть имя и пароль, а в базе нет защиты. Так что копать надо в другую сторону. Я в оракле для этого использовал такую вещь, как Детальный Контроль доступа - это возможность во время работы динамически присоединить предикат (предложения where) как к одному, так и ко всем запросам к таблице или представлению. Можно вычислить, кто выполняет запрос, откуда запрос выполняется, когда началось выполнение запроса, и сформировать предикат, соответствующий этим критериям. При использовании Контекстов Приложения можно незаметно через окружение (например, через роль, назначенную пользователю приложения) добавить дополнительную информацию, и получить доступ к ней через процедуру или предикат. И не важно, откуда и из под чего юзер зашел. Например, юзер пишет select * from documents , а система реально выполнит запрос select * from documents where id_doc_type=1 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2003, 10:08 |
|
||
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
UTweaks от microlab.mastak.ru/ + плагин "Злой админ". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2003, 15:19 |
|
||
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
Hi, Виктор! >Так, чего-то я не понял, наверное. >Предположим, юзер запустил FrDesign, подключился в БД, и он может либо >открыть существующие шаблоны отчетов либо создать новый. Так точно. >Ты говоришь, что сейчас в базе (оболочке) не предусмотрено никакой >защиты от запуска репорта, не прописанного в списке репортов базы (в >одной из таблиц). Если разработчики всё-таки сделают проверку (а вот >как?) на то, репорт с каким названием запущен, то что мешает злобному >юзеру открыть уже существующий шаблон и в нем поменять запрос? Имя >отчета останется прежним, прописаным в списке репортов базы, и юзер всё >увидит. >Далее, какова цель построения этой защиты? Если у юзера есть легальное >имя и пароль, и он может из проги подключиться к БД, то с таким же успехом >он может запустить IBExpert и вытянуть данные, к которым из проги нет >доступа. Стоп! Вот тут твоя ошибка! Експерт (равно как и isql, ODBC-драйвер Екселя или Аксесса) подключится к IB-серверу и получит любые данные ТОЛЬКО при условии коннекта под аккаунтом SYSDBA/****** к самому IB -серверу: любые попытки предъявить ему (IB-серверу) аккаунт юзера базы PUPKIN/12345 будут посланы в эротур. >Вот ты говоришь, что Речь не идет о защите от "внешнего" вторжения: >логин/пасс на IB-сервер (сиречь SYSDBA/********) - тайна сия великая >есть. Ну нет смысла делать защиту от захода конкретной программой (в >данном случае генератором отчетов). Ну закроете вы доступ из этого >генератора, принесет юзер на дискетке IBExpert и запустит его. Закроете >доступ IBExpert'у, юзер принесет isql и им залезет в базу. А всё почему - у >него есть имя и пароль, а в базе нет защиты. См. ответ на предыдущий абзац. Не подцепится он к базе напрямую... Что делает прога Х (дельфовая оболочка Базы)? Она при запуске своего ехе-шника X.exe коннектится к IB-серверу по пути из алиаса в BDE (например, host:c:\data\mybase.gdb ). У IB-сервера прописаны два юзера IB: один - это всеми нами любимый SYSDBA с пассом *******, другой - X-CLIENT с пассом masterkey. Прога X сама предъявляет IB-серверу логин X-CLIENT и пасс masterkey (зашитые у нее в пузе разработчиками), после чего получает доступ read-only к таблице Users базы mybase.gdb и показывает юзеру, запустившему ее, окошко Login/Password - юзер пишет в нем PUPKIN / 12345. Эти данные летят на IB-сервер, который, найдя в таблице Users юзера PUPKIN с пассом 12345, дает добро проге Х на установление полноценного коннекта с Базой, после чего прога Х радостно открывается перед юзером. Юзер может ходить только по тем пунктам, которые Visible в соответствии с его профилем прав. Репорты, положенные юзеру, запускаются, соответственно, из тех мест, что юзер видит, а неположенные - из тех мест, что юзер не видит. А теперь фокус-покус: запускаем FrDesigner! Он в точности повторяет _весь_ путь и вот перед нами генератор репортов FastReport, подсоединенный к Базе так-же как и X.exe - от имени PUPKIN/12345. Теперь мы открываем любой репорт, переделываем его (ну или генерим с нуля) так, чтобы в нем был запрос на выборку неких данных из Базы (например, по документам, лежащим в Invisible для PUPKIN области. И делаем превью. Оп! Данные на экране!! >Так что копать надо в другую сторону. Я в оракле для этого использовал >такую вещь, как Детальный Контроль доступа - это возможность во время работы динамически присоединить предикат (предложения where) как к одному, так и ко всем запросам к таблице или представлению. =skip= > И не важно, откуда и из под чего юзер зашел. Например, юзер пишет select >* from documents, а система реально выполнит запрос select * from >documents where id_doc_type=1. Угу, молодец! (без иронии)... Я связался с разработчиками проги X, рассказал им эту ботву, а они... прислали мне новую версию FrDesign, которая для работы должна коннектиться к IB-серверу под его админским SYSDBA/******, а все попытки подсунуть PUPKIN/12345 отметались с негодованием... !!! Да еще напутствовали - "ты теперь ТАК кури!"(с)Кин-Дза-Дза. Я им - вы чего ето делаете, какая мне разница - ходить МНЕ секурным репортером или несекурным? А если мою юзер полезет несекурным? (Только не будем про необходимость "давить" юзверей - у них есть право работать в базе, а так-же есть квалификация для получения и запуска FrDesign`a, а самое главное - у некоторых, в ранге нач.отделов/замов - есть потенция получать эти данные для последующей статобработки своими силами. Административно воздействовать на них я мог-бы, но, во-первых, это будет скандал неслабого калибра, во-вторых, это не гарантия, что никто втихаря не продолжит такие изыски...)... А еще меня умилила реплика разработчиков проги Х - мол, мы сейчас несможем ничего сделать, т.к. все силы брошены на перевод Базы под Firebird... Вот тут мне стало совсем "хорошо"... Мля! With best... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2003, 19:17 |
|
||
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
Ну ясно теперь:-) Надо было сразу сказать про то, что программа ходит в базу под одним стандартным именем, а уже юзер идентифицируется в самой программе. Думаю, это уже не твой головняк, а разработчиков, пусть думают. Лично я бы отказался от такой системы безопасности, а сделал каждого юзера реальным юзером сервера, права на доступ раздал бы через роли. Проходили мы уже такое, потом намучились с похожими backdoor'ами :-( А вот если в тексте проге поискать какой-нить чудесный параметр типа password, user_name, что-нить найдет? А то вдруг разработчики его явно в компененте прописали? А если юзер сделает в этом репортере селект из таблицы users, он получит список юзернеймов и пассвордов ? Или они шифруются? А что хоть за прога такая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2003, 03:41 |
|
||
|
FrDesign дает несанкционированный доступ к данным в базе IB
|
|||
|---|---|---|---|
|
#18+
Hi, Victor! >Ну ясно теперь:-) Надо было сразу сказать про то, что программа ходит в базу под одним стандартным именем, а уже юзер идентифицируется в самой программе. Думаю, это уже не твой головняк, а разработчиков, пусть думают. Ну я уже выше описывал их реакцию... мол, "лэтом приходи, лэтом"... >Лично я бы отказался от такой системы безопасности, а сделал каждого юзера реальным юзером сервера, права на доступ раздал бы через роли. Проходили мы уже такое, потом намучились с похожими backdoor'ами :-( Я пока не вполне уверен, как это все увяжется с унутренними Grant`ами... Поэкспериментирую "на кошках", может что и выйдет... >А вот если в тексте проге поискать какой-нить чудесный параметр типа password, user_name, что-нить найдет? А то вдруг разработчики его явно в компененте прописали? Я бегло смотрел - нет там етого... >А если юзер сделает в этом репортере селект из таблицы users, он получит список юзернеймов и пассвордов ? Или они шифруются? Юзернеймы получит, а пассы шифруются... Только прикол в том, что если он в репортере пропишет не SELECT бла-бла-бла FROM Finance WHERE тра-та-та, а UPDATE USERLIST SET US_PASS = '' WHERE US_NAME = 'ROOT' то после этого он сможет зайти в Базу уже штатной прогой Х как ROOT с пустым аккаунтом... :((( >А что хоть за прога такая? Это финансово-торговая система класса 1С... Не-е-еее, я уже решил, что буду справляться пока без помощи разработчиков... Достукались мои голубчики - будут работать c IB через терминальный сервер - уж на нем я сам решу, что запускать, а что нет (строго говоря,на нем репортера не будет в принципе)... Коннект с остальных компов к IB-серверу будет невозможен... With best... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2003, 12:15 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=32304137&tid=1579772]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
69ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 246ms |
| total: | 406ms |

| 0 / 0 |
