###### tags: `netology` `security`
# Дипломное задание "Защищённый контур"
## Отчет.
### Несоответствия системы требованиям нормативных документов
1. ИС не соответсвует требованиям ИАФ.4 в части требования к паролям: в текущей реализации пароль может состоять из 1-го символа, любое количество попыток ввода неверного пароля не приводит к блокировке (так же относится к УПД.6).
2. ИС не соответсвует требованиям ИАФ.5 в части защиты аутентификационной информации в процессе ее ввода: вводимые символы пароля не маскируются.
3. ИС не обеспечивает ограничение доступа к КТ пользователей, не имеющих к ней доступа: при использовании прямой ссылки, механизм авторизации не срабатывает должным образом, и пользователь вообще не имеющий прав в системе может получить доступ к содержимому страницы host/commercial/index.html
### Уязвимости системы
1. Отсутствие шифрования траффика.
Приложение использует HTTP протокол без шифрования траффика, в том числе данных для аутентификации. Таким образом в случае "прослушивания" траффика любыми снифферами (использовались wireshark, burp suite), можно получить логин и пароль в нешифрованном виде и использовать их для аутентифиукации.
Таким же образом можно подменить токен у пользователей с ограниченными правами: с помощью сниффера перехватываем токен администратора, подставляем его в любой запрос (создание нового администратора), запрос проходит валидацию приложением
Для предотвращения данного вида угроз рекомендуется использовать HTTPS протокол для шифрования траффика.
2. Отсутвие механизма принудительной смены пароля для пользователя system.
Пароль для предоставляемого пользователя `system` является слабым, с помощью инструмента `hydra`/`patator` удалось подобрать пароль по-умолчанию, используя словарь. После подбора пароля удалось получить доступ к серверу приложения используя ssh и ftp, узнать пароль пользователя web приложения `admin`.
Для предотвращения данной угрозы рекомендуется принудительно заставить пользователя сменить пароль при первом входу, либо генерировать сложные пароли изначально.
3. Отсутствие авторизации для эндпоинта `host/commercial`
Попасть на указанный эндпоинт может кто-угодно, даже не будучу авторизованным. Приложение так же никаким образом не ограничивает загрузку файлов через форму. Это дает широкий простор для деятельности:
- Згрузка вредоносных скриптов для пользователей: загружается скрипт с кричащим названием, пользователь загружает его к себе, после чего запускает и распространяет вредоносный код.
- Загрузка больших по размеру файлов. Удалось загрузить большие по объему файлы, что вызвало отказ сервера, т.к. закончилось физическое место на диске.
- Имена загружаемых файлов никак не валидируются, таким образом можно записать практически любые файлы хоть в самый корень`/` сервера. Кроме того удалось подменить шаблон web приложения и так получить пароли пользователей приложения в явном виде прямо на HTML странице
- Таким же образом удалось полностью заменить `systemd` инструкцию для запуска приложения, после рестарта сервера приложение более не загружалось. Так с помощью загрузчика на сервере сначала был размещен условно вредоносный скрипт, а затем следующей загрузкой был заменен `sk.service` на запуск этого скрипта.
Для предотвращения подобных угроз необходимо в первую очередь закрыть доступ не авторизованым лицам к эндпоинту `host/commercial`, кроме того ввести правила валидации запрещающие загрузку больших файлов, файлов определенного типа и/или содержания, разрешающие загрузку файлов только в определенную директорию с правами только на чтение.