CSRF: Несанкционированное действие через поддельный запрос (Flask)
Форма администратора не защищена CSRF-токеном. Заставь бота выполнить действие от имени admin.
easypythonPro
Задача
# CSRF: атака межсайтовой подделки запроса
## Сценарий
Перед вами интернет-магазин SecureShop на Flask. В панели администратора есть несколько привилегированных действий — список пользователей, удаление аккаунтов, активация специальной распродажи. Все они доступны только пользователю с ролью `admin`.
Вы как обычный пользователь не имеете доступа к админ-панели, но в приложении предусмотрен функционал «Report to Admin» — пользователь может отправить ссылку администратору, и тот её посмотрит. Ваша задача — воспользоваться этим, чтобы заставить браузер администратора (бота, периодически проверяющего отчёты) выполнить от имени администратора одно из привилегированных действий, которое вы сами выполнить не можете.
Это классическая атака **Cross-Site Request Forgery (CSRF)** — её работоспособность зависит от того, проверяет ли уязвимый обработчик не только «кто пользователь», но и «откуда пришёл запрос».
## Цели
1. Авторизуйтесь как `demo` / `demo` и изучите панель администратора в той части, которая видна неадминистратору (через прямые ссылки или анализ HTML).
2. Сравните защищённые и незащищённые привилегированные действия в админ-панели — какие из них требуют дополнительного «доказательства намерения», а какие нет.
3. Сформируйте payload для атаки на незащищённое действие и доставьте его администратору через предусмотренный для этого механизм отчётов.
4. После выполнения действия завершите цепочку — извлеките CTF-флаг через изменения в каталоге, сделанные от имени администратора.
## Данные
| Параметр | Значение |
|----------|----------|
| Обычный пользователь | `demo` / `demo` |
| Бот-администратор | проверяет ссылки, отправленные через форму отчётов |
## Что такое CSRF (для контекста)
**Cross-Site Request Forgery** — класс атак, при которых злоумышленник заставляет браузер жертвы (обычно — авторизованного администратора) выполнить нежелательное действие на доверенном сайте. Сторонний сайт не имеет прямого доступа к cookie сессии жертвы, но может заставить её браузер отправить запрос — а браузер прикрепит cookie автоматически. Защита от CSRF строится на том, что сервер требует «второй фактор» — токен, который сторонний сайт получить не может.