Перейти к содержимому

Поиск по платформе

CSRF: Несанкционированное действие через поддельный запрос

Форма администратора не защищена CSRF-токеном. Заставь бота выполнить действие от имени admin.

Автор: Hack & Fix
Освоишь: double-submit tokenSameSite=StrictOrigin/Referer check
Легко+30 XP ~15 мин golang
CWE-352 · A01:2021 Pro
Обложка: CSRF: Несанкционированное действие через поддельный запрос Обложка: CSRF: Несанкционированное действие через поддельный запрос
Задача
# CSRF: подделка запроса от имени администратора ## Сценарий Вы — внешний аудитор, приглашённый в компанию **CobaltCart**, которая держит небольшой онлайн-магазин фирменного мерча для инженерных команд. Ведущий разработчик Тимур недавно запустил новую функцию: кнопка активации секретной распродажи в админ-панели добавляет в каталог закрытый промо-товар. Ревью показало, что обработчик проверяет сессию и роль, но не проверяет происхождение запроса. У сервиса есть форма «Report to Admin»: администратор-модератор открывает каждую присланную ссылку, оставаясь залогиненным в системе. ## Цель 1. Изучите механизм активации секретной распродажи и убедитесь, что чувствительное действие не защищено CSRF-токеном. 2. Подготовьте HTML-страницу с формой, которая отправляется автоматически при открытии, и разместите её на Exploit Server. 3. Через форму `/report` передайте ссылку на эту страницу боту-администратору. 4. Дождитесь, пока действие выполнится от имени администратора, и найдите флаг в каталоге — он появится в описании товара «CTF Flag». ## Теория **CSRF (Cross-Site Request Forgery)** — атака, при которой злоумышленник заставляет браузер жертвы отправить запрос на целевой сайт от её имени. Браузер прикрепляет cookies к любому запросу на домен приложения, включая запросы, инициированные страницей атакующего. Если сервер не отличает «свои» формы от «чужих», чувствительное действие выполняется с правами и сессией жертвы — сама жертва при этом может ничего не заметить. Стандартная защита — CSRF-токен: уникальное значение, привязанное к сессии и встроенное в каждую форму скрытым полем. Внешний сайт не может прочитать cookies или значение токена жертвы (Same-Origin Policy), поэтому не способен подставить корректное значение, и сервер отвергает запрос без совпадающего токена. **Уязвимый паттерн:** ```go // Чувствительное действие: проверяется сессия и роль, // но источник запроса не проверяется: if user == nil || user.Role != "admin" { http.Error(w, "Access Denied", 403); return } // Проверки CSRF-токена нет — запрос с чужого сайта будет выполнен ``` Механика атаки: атакующий размещает страницу с формой, отправляющейся при открытии, и адрес действия указывает на эндпоинт приложения. Жертва с активной admin-сессией открывает страницу — её браузер отправляет форму вместе с cookies администратора, и сервер выполняет действие. ## Точка входа атаки | Параметр | Значение | |----------|----------| | Ваш аккаунт | `demo` / `demo` | | Уязвимый эндпоинт | `POST /admin/activate-sale` | | Доставка боту | `POST /report`, поле `url` | | Хостинг payload | Exploit Server (панель лабы, загрузка страницы) | | Где появится флаг | `GET /catalog`, товар «CTF Flag» |

Похожие лабораторные (4)

другие лабы по этой уязвимости
Обложка лабы: CSRF: Атака через JSON API без кастомных заголовков Обложка лабы: CSRF: Атака через JSON API без кастомных заголовков
CSRF

CSRF: Атака через JSON API без кастомных заголовков

JSON API эндпоинт не требует кастомных заголовков. Используй CSRF для смены пароля admin через API.

+60 XP
Go Pro
Exploit Fix
Обложка лабы: CSRF: Обход проверки Referer-заголовка Обложка лабы: CSRF: Обход проверки Referer-заголовка
CSRF

CSRF: Обход проверки Referer-заголовка

Приложение использует проверку заголовка Referer вместо CSRF-токена. Обойди проверку и смени email администратора.

+60 XP
Go Pro
Exploit Fix
Обложка лабы: CSRF: SameSite=Lax Bypass через GET-запрос Обложка лабы: CSRF: SameSite=Lax Bypass через GET-запрос
CSRF

CSRF: SameSite=Lax Bypass через GET-запрос

Мутирующий эндпоинт смены email реализован через GET. SameSite=Lax не защищает от top-level навигации. Измени email администратора через CSRF.

+60 XP
Go Pro
Exploit Fix
Обложка лабы: CSRF: Активация распродажи без токена Обложка лабы: CSRF: Активация распродажи без токена
CSRF

CSRF: Активация распродажи без токена

Админ-эндпоинт активации распродажи не проверяет CSRF-токен. Заставь бота выполнить действие от имени admin.

+30 XP
PHP Pro
Exploit Fix