DutyManager представляет из себя простой сервис для CTF формата Attack-Defense, который содержит чекер совместимый с жюрейной системой ForcAD.
Сервис задуман как приложение для создания обязанностей и закреплением их за исполнителями.
В сервисе есть 3 роли:
- Manager - прикрепляет обязанности к Worker'ам.

- Worker - читает обязанности, которые закрепили за ним Manager'ы.

- Admin - на беке ему доступны все CRUD права над всеми обязанностями. На фронте он может читать обязанности любого worker'а и смотреть созданные обязанности любого manager'а по их username. Является скрытой ролью.

Основной флоу использования сервиса:
- Manager создаёт обязанность, указывая username worker'а, заголовок и описание.
- Worker заходит, читает обязанности и выполняет то, что там написано.
Хранение флага подразумевается в описании к обязанности. Чекер проверяет аутентификацию, а также все CRUD операции над обязанностями.
Сервис содержит 3 уязвимости. Разбор уязвимостей и эксплойты можно посмотреть тут.
docker compose up --build -dПроект состоит из нескольких основных компонентов:
service/backend/: Реализация gRPC API для приложения.service/webapp/: Веб-приложение для взаимодействия с пользователем.service/deploy/: Файлы конфигурации докер контейнеров.
Контракты для gRPC API тут.
Само API содержит 2 сервиса:
- SSO - сервис, отвечающий за авторизацию.
- Duties - сервис, отвечающий за управление обязанностями.
SSO содержит три подсервиса: auth, permissions, user_info.
Для API были написаны некоторые тесты, включая тесты двух уязвимостей.
Для базы данных был написан мигратор, который компилируется при запуске контейнера backend и создаёт структуры базы данных.
Структура базы данных находится здесь.
Чекер находится тут. Был протестирован на проверяющей системы ForcAD.