В связи с прекращением разработки такого замечательного jabber-клиента, как Pandion (последняя доступная версия 2.6.114 вышла 10 апреля 2013 года), было решено выяснить, какая хорошая альтернатива существует для соединения jabber-сервера Openfire и Pandion. client, которые в моем случае использовались для обмена сообщениями внутри небольшой организации.
Клиент в лице Pandion порадовал своими возможностями и удобством использования, но в последних версиях лишился файлообменника, а количество обнаруженных ошибок стало давать о себе знать: высокая загрузка процессора при смене темы в ОС или удаленно подключение к ПК с помощью программы удаленного управления, частые сбои при ссылке на библиотеку msxml6.dll, проблемы в работе некоторого функционала из-за отсутствия поддержки движком новых версий Internet Explorer, ситуации с неполучением сообщений от другие пользователи и еще некоторые неприятные мелочи.
В принципе, достаточно было бы установить новую версию OpenFire и начать использовать альтернативный клиент, например Miranda, что и было позже сделано, но до этого меня интересовал сетевой чат MyChat от украинских разработчиков из NetworkSoftwareSolutions. В ходе нашего углубленного исследования MyChat были обнаружены некоторые уязвимости.
Первая уязвимость заключается в особенностях авторизации по протоколу FTP на сервере.
В клиенте MyChat протокол FTP используется для получения и передачи данных непосредственно между клиентами, а в сервере - для передачи данных между клиентами только через сервер (если включена соответствующая настройка), для организации совместного доступа к лично размещенным данным.
и публичный доступ.
Для сохранения полученных данных по протоколу FTP используются папки, которые по умолчанию располагаются в общем профиле в случае сервера и в личном профиле в случае клиента.
Отличий FTP-авторизации на сервере MyChat несколько, и не описать каждую из них было бы невозможно.
Каждый пользователь MyChat имеет уникальный UIN-идентификатор, который имеет числовое значение и автоматически присваивается при создании учетной записи, нумерация ведется по порядку, начиная с 1. Согласно документации MyChat, в качестве имени пользователя и пароля используются UIN и пароль.
пароль для авторизации по протоколу FTP, которые используются для авторизации клиента по внутреннему протоколу (он хорошо документирован и доступен для публичного просмотра).
Для взаимодействия с сервером MyChat по протоколу FTP вы можете использовать любое приложение, которое его поддерживает, но необходимо в настройках включить пассивный режим обмена, указать IP-адрес сервера MyChat, а также порт 20000 (по умолчанию), числовое значение UIN в качестве имени пользователя и пароля.
После подключения к серверу с этими параметрами авторизации личная папка станет доступна в режиме чтения и записи.
Помимо этого доступа, разработчики предоставляют любому желающему доступ к личной папке на сервере в режиме чтения.
Для этого в качестве пароля необходимо указать public. MyChat также имеет возможность интеграции с Active Directory, что позволяет импортировать учетные записи пользователей домена и использовать их для авторизации.
Как используются доменные учетные записи для авторизации, например, по протоколу FTP, нигде не указано.
С помощью анализатора сетевых протоколов Wireshark нам удалось выяснить, что для авторизации используется пара UIN, присвоенная при импорте пользователю домена, и пароль, состоящий из логина пользователя и строки *DomainUser* (например, если имя пользователя — user1, то пароль для него будет user1*DomainUser*).
Поэтому использование доменных учетных записей в MyChat может привести к несанкционированному удалению или созданию данных на сервере.
Разработчики были уведомлены об уязвимости 27.07.2014, но на данный момент (далее – это 04.04.2016 с последней доступной версией MyChat 5.18.0 от 23.03.2016) уязвимость не устранена.
зафиксированный.
Все три описанных способа авторизации по протоколу FTP на сервере также могут быть использованы в одной из описанных ниже уязвимостей.
Вторая обнаруженная уязвимость — возможность получить полноценный доступ к папке, в которой были сохранены файлы, полученные от другого пользователя.
Уязвимость начинает действовать с момента получения одним из пользователей хотя бы одного файла от другого пользователя и прекращает действовать после перезапуска клиента.
После того как уязвимость начнет действовать, чтобы воспользоваться ею, достаточно подключиться по FTP в режиме пассивного обмена к порту 10000 (по умолчанию) к клиенту-жертве, используя в качестве логина и пароля UIN отправителя.
Таким образом, зная примерный диапазон UIN-идентификаторов в MyChat и IP-адрес клиента-жертвы, можно периодически пытаться авторизоваться с использованием логина и пароля вида 2:2, 3:3 и т.д., пока уязвимость не будет устранена.
сработало.
Разработчики были уведомлены об уязвимости 27 июля 2014 года, но на данный момент уязвимость не устранена.
Третья уязвимость, обнаруженная в MyChat, связана с обходом ограничения корневой папки при подключении по FTP. Чтобы воспользоваться уязвимостью, необходимо указать путь типа «/.
» в качестве удаленного каталога при подключении.
Это позволит вам перейти в папку на уровень выше и, в зависимости от прав авторизации, получить доступ ко всем данным в режиме чтения или чтения-записи.
Ограничением использования уязвимости является невозможность вернуться из папок 2-го уровня вложенности в сеансе подключения.
Благодаря этой уязвимости становится возможным получить доступ к журналам и резервным копиям сервера MyChat, а также данным, отправленным пользователям, которые не были подключены к серверу в момент отправки.
Кроме того, в корне папки FTP-сервера становится доступной специальная автономная папка, внутри которой находятся папки, в именах которых используются UIN пользователей.
Для передачи данных пользователю достаточно создать в папке со своим УИНом папку с УИН отправителя и поместить в нее файлы.
После запуска клиента, если хотя бы один из авторизованных пользователей отправит ему файл, будет предложено принять файлы как от этого, так и от всех пользователей из оффлайн-папки.
Таким образом, пользователи MyChat могут подвергаться риску заражения.
Для клиента уязвимой папкой по умолчанию является папка со всеми файлами, полученными от других пользователей.
Как нам удалось выяснить, уязвимость была вызвана использованием старой версии одного из компонентов, отвечающих за реализацию протокола FTP. Разработчики были уведомлены об уязвимости 27 июля 2014 г.
, и 28 июля 2014 г.
они устранили уязвимость.
Четвертая уязвимость MyChat касается использования авторизации домена.
Суть уязвимости заключается в том, что, зная адрес сервера, доменное имя и пользователя домена, а также имея возможность подключиться к серверу, злоумышленник может успешно войти в систему с этими данными.
Злоумышленнику достаточно ввести значение строковых параметров «Домен», «IP», «Порт», «ServerPassword» (пустое значение) в ветке реестра «HKEY_CURRENT_USER\Software\MyChat Client» (как ни странно, это документированный способ включения режима авторизации домена), создайте в операционной системе локальную учетную запись, соответствующую имени учетной записи домена, а затем войдите в систему, используя ее.
Теперь при запуске клиента MyChat будет происходить успешное подключение к серверу от имени пользователя домена.
Таким образом, можно сделать вывод, что MyChat не использует безопасный вариант прозрачной авторизации NTLM или Kerberos. Разработчики были уведомлены об уязвимости 10 августа 2014 года, но на данный момент уязвимость не устранена.
Пятая уязвимость кроется в сервере MyChat и представляет собой возможность вызвать отказ в обслуживании, что связано с ошибкой реализации приема команды приветствия cs_hello используемого протокола от клиента.
Уязвимая версия сервера MyChat позволяет получать неограниченное количество команд cs_hello от неавторизованного пользователя.
Суть уязвимости сервера MyChat к атаке типа «отказ в обслуживании» в данном случае заключается в том, что повторно полученная от клиента команда cs_hello увеличивает потребление памяти сервером.
MyChat Server — 32-битное приложение, поэтому объем памяти, который может выделить для него операционная система, находится в пределах 1,8 ГБ.
Эксперимент показал, что для проведения успешной атаки на сервер необходимо отправить пару миллионов команд cs_hello, что займет очень много времени.
Можно увеличить размер команды, заполнив один из передаваемых параметров в формате JSON произвольными данными, но такая атака также будет трудоемкой из-за большого размера передаваемых данных.
Однако эту атаку можно ускорить в тысячи раз, используя протокол сжатия GZIP MyChat. Таким образом, строку одинаковых символов размером 65 КБ можно сжать до 100 байт. Многократная отправка на сервер команды cs_hello с такими данными приведет к молниеносному потреблению оперативной памяти, достигнув предела которого сервер не сможет выделить память для внутренних нужд, что в конечном итоге отразится на его производительности.
Разработчики были уведомлены об уязвимости 6 декабря 2014 года, и они устранили уязвимость 8 декабря 2014 года.
Какой вывод можно сделать из этой статьи: разработчики не реагируют своевременно на все уязвимости, откладывая устранение некоторых из них или просто игнорируя их, а также не всегда отслеживают изменения в используемых компонентах, что может сыграть злую шутку.
шутят над их применением, но больше всего настораживает и расстраивает то, что многие уязвимости являются явным результатом нежелания или лени сделать реализацию того или иного механизма безопасности по-настоящему безопасной.
Теги: #MyChat #ftp #уязвимости #авторизация #информационная безопасность #мессенджеры #программирование #обратный инжиниринг
-
Арендт, Ханна
19 Oct, 24 -
Управляйте Оповещениями С Помощью Alerta.io
19 Oct, 24 -
Не Будь Идиотом
19 Oct, 24 -
Новая Система Образования
19 Oct, 24 -
Что Мне Нравится В Redmine
19 Oct, 24 -
Как Создавался Аватар
19 Oct, 24