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

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

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

Критичное действие смены пароля выполняется через GET-запрос. SameSite=Lax не защищает от top-level навигации. Сменив пароль администратора через CSRF, залогинься под admin и забери флаг.

Автор: Hack & Fix
Освоишь: double-submit tokenSameSite=StrictOrigin/Referer check
Средне+60 XP ~30 мин php
CWE-352 · A01:2021 Pro
Обложка: CSRF: SameSite=Lax Bypass через GET-запрос Обложка: CSRF: SameSite=Lax Bypass через GET-запрос
Задача
# CSRF (Обход SameSite=Lax через GET-запрос) ## Сценарий Вы проводите аудит **ГаджетМоре** — интернет-магазина электроники на нативном PHP. Разработчик настроек профиля изучил современные рекомендации и выставил сессионной cookie атрибут `SameSite=Lax`, решив, что этого достаточно для защиты от подделки межсайтовых запросов. Отдельную проверку подтверждения для операции смены пароля он поэтому не стал — заодно оставил её «API быстрого доступа»: запрос выполняется безопасным методом, а новое значение приходит прямо из адреса. Перед плановым обновлением магазина вас попросили проверить, действительно ли связка этих решений защищает аккаунты. Бот-администратор открывает ссылки из раздела «Report to Admin» в собственном браузере, уже авторизованным; в его профиле хранится флаг. ## Цель 1. Найдите операцию смены пароля и определите её HTTP-метод: как атрибут `SameSite=Lax` обрабатывает такие запросы при переходе со стороннего сайта. 2. Подготовьте на Exploit Server страницу, которая при открытии автоматически выполнит переход на эндпоинт смены пароля с подконтрольным вам значением. 3. Доставьте ссылку боту через «Report to Admin» — пароль администратора сменится на ваше значение. 4. Войдите под администратора и заберите флаг со страницы профиля. ## Теория CSRF (Cross-Site Request Forgery) заставляет браузер жертвы отправить запрос на целевой сайт от её имени, а сессионная cookie прикрепляется автоматически. Атрибут `SameSite=Lax` действительно ограничивает кросс-сайтовые запросы, но с одним исключением: cookie всё равно отправляется при переходе верхнего уровня — когда браузер открывает адрес в адресной строке, по ссылке или автоматически при открытии страницы. Если мутация данных выполняется запросом безопасного метода с параметрами в адресе, сторонняя страница может вызвать такой переход без всякого клика жертвы — и защита атрибута не сработает. Меняющее состояние действие на безопасном методе — антипаттерн, обесценивающий cookie-защиту. **Уязвимый паттерн:** ```php // Смена пароля — запросом безопасного метода, значение из адреса: $newPassword = $_GET['password'] ?? ''; // ...пароль текущего пользователя обновляется без проверки намерения ``` ## Точка входа атаки `GET /api/account/change` — смена пароля; параметр `password` передаётся в адресе запроса. * **Обычный пользователь:** `demo` / `demo` * **Доставка эксплойта:** Exploit Server (страница с автоматическим переходом) и `POST /report` * **Проверка сессии:** `GET /api/account/info` * **После смены пароля:** вход администратора через `POST /login`, флаг — в профиле (`GET /profile`)

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

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

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

JSON-endpoint /api/profile принимает state-changing запрос без проверки CSRF-токена и кастомного заголовка X-Requested-With. Простой fetch с Content-Type:text/plain даёт CSRF.

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

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

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

+30 XP
PHP Pro
Exploit Fix
Обложка лабы: 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