ХакерДом : CTF/UralCTF4/seminar/notssh

Название приложения: notssh
Язык программирования: Python
Тип уязвимости: предоставление несанкционированного доступа
Тип задания: исследование логики работы приложения, создание клиента к
приложению

Описание функциональности
Данный сервис имитирует установку «безопасного» соединения. При
подключении клиента к серверу на порт 2222 происходит следующее. Сервер
генерирует пару ключей: публичный и приватный. То же самое должен сделать
клиент. Затем сервер посылает клиенту свой публичный ключ, которым должен
шифровать все свои сообщения клиент. Клиент должен передать серверу свой
публичный ключ, зашифрованный публичным ключом сервера. После этого все
сообщения от сервера шифруются публичным ключом клиента.

После обмена ключами сервер предоставляет клиенту shell с возможностью
выполнения произвольных команд.

Установка флага происходит командой «echo FLAG > ID», чтение флага
командой «cat ID».

Реализация
Приложение написано на языке Python и оформлено в виде двух файлов:
server.py, keys.py, реализующих, соответственно, классы server и keys. Класс
server осуществляет взаимодействие с клиентом через сокет. Класс keys содержит
методы генерации ключей, шифрования и расшифровки.

Уязвимости
Сервис предоставляет несанкционированный доступ любому, кто разобрался,
каким образом происходит установка соединения.

Предполагается написание клиента для этого сервера на языке Python,
используя keys.py для импорта функций работы с ключами.

Устранение уязвимостей
Данный сервис необходимо запускать из-под непривилегированного
пользователя. Сервис может быть помещен в chroot. Необходимо наложение
ограничений на предоставляемые ресурсы операционной системы для данного
приложения, что может быть сделано, например, с помощью утилиты sysctl.

Использование в учебном процессе
Данная программа может быть использована в учебном процессе для развития
навыков быстрого исследования кода на, возможно, неизвестном языке
программирования и быстрого программирования.

(c) tswr, hackerdom.ru