GS-CSP (Cookie Steal Protection)
Демонстрационный адрес: http://109.205.56.148/
Оглавление
- Описание проекта
- Ключевая функциональность
- Структура репозитория
- Быстрый старт
- Сценарии использования
- Настройки и админ-панель
- Расширенная документация
- Контакты и авторство
Описание проекта
GS-CSP (Cookie Steal Protection) — это прокси-сервис (Flask, Python), который защищает веб-приложения от кражи сессии (cookie). Основная идея:
- Система «накрывает» уязвимый или обычный веб-сервис и проксирует запросы от пользователя к сервису, обрабатывая их, уязвимый сервис напрямую доступен только в локальной сети, пользователь общается с ним через систему защиты.
- Все запросы к приложению идут через GS-CSP.
- GS-CSP анализирует cookie сессии, IP-адрес, User-Agent и другие факторы.
- При выявлении несоответствия (другой IP/UA), сессия блокируется, и пользователь вынужден заново авторизоваться.
Таким образом, злоумышленнику, даже получившему cookie, сложно использовать её, если исходные параметры отличны от ожидаемых.
Ключевая функциональность
- Анализ сессий по IP и User-Agent (и другим факторам при желании).
- Блокировка сессии при обнаружении несоответствий, + временный бан при повторных попытках.
-
Админ-панель
/admin:- Просмотр активных сессий,
- Ручная деактивация сессий,
- Гибкая настройка (block_on_ip_change, block_on_ua_change, ban_minutes и пр.),
- Просмотр логов.
- Логирование всех событий: запросов, ответов, блокировок, переключения настроек и т.д.
Структура репозитория
Ниже приведено дерево каталога (без кеш-файлов __pycache__, .git и т.д.):
gs-csp
├── README.md
├── docker-compose.yml
├── session_guard
│ ├── Dockerfile
│ ├── config.py
│ ├── guard_app.py
│ ├── protection.db
│ ├── protection_schema.sql
│ ├── requirements.txt
│ ├── static
│ │ └── guard_style.css
│ └── templates
│ ├── admin.html
│ ├── admin_login.html
│ ├── admin_logs.html
│ ├── admin_manage.html
│ └── base.html
└── vulnerable_app
├── Dockerfile
├── app.py
├── database.db
├── requirements.txt
├── schema.sql
├── static
│ ├── guard_style.css
│ ├── script.js
│ └── style.css
└── templates
├── admin.html
├── base.html
├── login.html
├── notes.html
└── register.html
-
session_guard/— сам GS-CSP (надстройка/прокси). -
vulnerable_app/— пример уязвимого приложения (сервис заметок) для демонстрации.
Быстрый старт
1. Установка через Docker Compose
Убедитесь, что у вас установлены Docker и docker-compose. Затем:
git clone https://github.com/gs1x2/gs-csp
cd gs-csp
docker-compose build
2. Запуск сервисов
docker-compose up -d
Будут созданы и запущены два контейнера:
-
session_guard: порт 80 пробрасывается наружу, -
vulnerable_app: порт 5000 доступен только внутри Docker-сети.
3. Проверка работоспособности
Откройте в браузере http://<ip-сервера>/ (порт 80). Вы увидите уязвимый сервис (сервис заметок), но уже через GS-CSP.
- Админ-панель защиты:
http://<ip-сервера>/admin - Логи:
http://<ip-сервера>/admin/logs - Управление настройками:
http://<ip-сервера>/admin/manage
4. Настройка конфигурации
Откройте файл /gs-csp/session_guard/config.py
- В словаре
ADMIN_USERSуказываются учётные данные для доступа в админ-панель системы защиты - Важно указать секретный ключ уязвимого сервиса, без этого не будет корректно работать декодирование сессии
- Словаь
DEFAULT_SETTINGSдублирует вкладкуmanageв панели управления, параметры можно добавить там
Сценарии использования
- Обычный пользователь → логинится, создаёт заметку → всё ок, IP/UA совпадают.
- Злоумышленник украл cookie → IP/UA отличаются → GS-CSP блокирует сессию, злоумышленник не получает доступ.
- Повторные попытки со заблокированной сессией → временный бан.
-
Мобильный пользователь может столкнуться с блокировкой, если у него часто меняется IP. Можно отключить
block_on_ip_change.
Настройки и админ-панель
-
Настройки блокировки:
-
block_on_ip_change(вкл/выкл), -
block_on_ua_change(вкл/выкл), -
ban_minutes_after_blocked(сколько минут длится бан).
-
- Список сессий: просмотр IP, UA, статус (активна ли?), время блокировки.
- Логи: все события (REQUEST, RESPONSE, BLOCK, CREATE_SESSION, DEACTIVATE и т.д.).
- Очистка БД (полный сброс сессий и логов).
Расширенная документация
Для очень подробного описания с примерами, сценариями, структурой данных и рекомендациями по безопасности — см. Полную документацию.
(Будет позже)
Основные темы:
- Проблематика кражи сессий (XSS, социнжиниринг, трояны),
- Архитектура GS-CSP,
- Принцип проксирования и сравнения IP/UA,
- Механизмы банов и блокировок,
- Гибкая настройка и интеграция с любыми приложениями.
Контакты и авторство
- Демонстрационный вариант развернут по адресу http://109.205.56.148/.
- Помните, что никакая система несовершенна. Если есть вопросы, хотите доработать или нашли ошибки - пишите.
Спасибо за использование GS-CSP! Будьте уверены, что кража сессии не принесёт злоумышленникам лёгкого доступа к вашему приложению.