Перейти к содержимому
← Каталог python CSRF

CSRF: JSON API без кастомного заголовка (Flask)

JSON API endpoint /api/profile не требует кастомного заголовка X-Requested-With. Смени пароль admin через CSRF-атаку на API.

mediumpythonPro
Задача
# CSRF: атака на JSON API ## Сценарий Перед вами интернет-магазин SecureShop. Команда разработки недавно мигрировала страницу настроек профиля с классических HTML-форм на современный JSON API: фронтенд отправляет POST-запросы с JSON-телом, бэкенд возвращает JSON-ответ. Разработчик уверен, что **новый API автоматически защищён от CSRF**, потому что HTML-формы не могут отправлять `application/json` напрямую. Это распространённое заблуждение, и ваша задача — продемонстрировать, в чём оно ошибочно. В системе есть административная учётная запись с CTF-флагом, к которому имеет доступ только она. Используя CSRF-уязвимость в JSON API смены пароля, заставьте браузер админа сменить пароль на известное вам значение — и зайдите в админ-панель. ## Цели 1. Авторизуйтесь как `demo` / `demo` и изучите страницу настроек профиля. Откройте инструменты разработчика и посмотрите, как именно фронтенд общается с серверным API при сохранении изменений. 2. Найдите способ выполнить тот же запрос **с другого домена** — в обход «защиты», на которую полагается разработчик. 3. Доставьте подготовленную страницу-эксплойт администратору через предусмотренный для этого механизм отчётов. 4. После того как пароль администратора изменится, войдите от его имени и заберите CTF-флаг из админ-панели. ## Данные | Параметр | Значение | |----------|----------| | Тестовый пользователь | `demo` / `demo` | | Цель атаки | пользователь `admin` (изменение пароля через CSRF) |
🚧 Сайт в разработке. Полный функционал пока недоступен. Все вопросы — support@hackandfix.ru