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

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

Reflected XSS в поиске товаров

Поисковый запрос отображается на странице без экранирования, позволяя выполнить произвольный JavaScript в браузере жертвы.

Автор: Hack & Fix
Освоишь: CSP nonceoutput escapingtemplate autoescape
Средне+60 XP ~25 мин php
CWE-79 · A03:2021 Pro
Обложка: Reflected XSS в поиске товаров Обложка: Reflected XSS в поиске товаров
Задача
# Reflected XSS в поиске по каталогу ## Сценарий «Буквограф» — интернет-магазин книг и настольных игр. Технический директор Марат Галеев обратился к вам после жалобы читателей: в тематических чатах распространилась ссылка на «подборку со скидкой», ведущая на страницу поиска магазина со странным длинным адресом. Марат подозревает, что через поисковую строку каталога кого-то атакуют, и просит проверить, может ли чужой код исполниться в браузере открывшего такую ссылку. ## Цель 1. Найдите точку отражения поискового запроса на странице каталога и подтвердите, что внедряемая разметка исполняется браузером. 2. Подготовьте ссылку, при открытии которой cookie администратора отправляются на доступный вам сервер приёма, и передайте её боту-администратору через страницу отчёта. 3. Подмените свою сессию перехваченным значением, войдите в админ-панель и выкупите товар «CTF Flag» — флаг появится в профиле. ## Теория Reflected XSS возникает, когда данные из запроса без преобразования вставляются в HTML страницы. Значение параметра поиска попадает в разметку страницы результатов как есть: браузер не отличает его от собственного кода страницы и исполняет всё, что в нём содержится. **Уязвимый паттерн:** ```php <p class="text-muted text-sm" style="margin-bottom:1.25rem;">Showing results for &ldquo;<?= $query ?>&rdquo;</p> ``` Механика атаки: злоумышленник формирует адрес страницы поиска, в котором параметр несёт разметку с исполняемым содержимым, и заманивает на неё жертву. Страница «отражает» ввод прямо в тело документа — код срабатывает в сеансе жертвы: доступна её сессия, и конфиденциальные данные, включая идентификатор сессии, можно отправить на подконтрольный атакующему приёмник. ## Точка входа атаки `GET /catalog` — параметр `q` (поисковый запрос), отражается на странице результатов. `POST /report` — поле `url`: ссылка, которую проверит бот-администратор. * **Обычный пользователь:** `demo` / `demo` * **Администратор:** `admin` / `???`

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

другие лабы по этой уязвимости
Обложка лабы: XSS в HTML-атрибуте (Attribute Context) Обложка лабы: XSS в HTML-атрибуте (Attribute Context)
XSS

XSS в HTML-атрибуте (Attribute Context)

Пользовательский URL выводится в атрибуте href без валидации схемы — javascript: выполняется при клике.

+60 XP
PHP Pro
Exploit Fix
Обложка лабы: DOM XSS через URL-фрагмент Обложка лабы: DOM XSS через URL-фрагмент
XSS

DOM XSS через URL-фрагмент

JavaScript читает location.hash и вставляет значение через innerHTML — DOM XSS без участия сервера.

+60 XP
PHP Pro
Exploit Fix
Обложка лабы: Stored XSS в комментариях к товару Обложка лабы: Stored XSS в комментариях к товару
XSS

Stored XSS в комментариях к товару

Комментарии к товарам выводятся без экранирования — Stored XSS позволяет украсть cookie администратора.

+60 XP
PHP Pro
Exploit Fix
Обложка лабы: XSS через атрибут (javascript: URL) Обложка лабы: XSS через атрибут (javascript: URL)
XSS

XSS через атрибут (javascript: URL)

XSS через javascript: URL-схему в атрибуте href. Go html/template экранирует HTML, но пропускает опасные URL-схемы.

+60 XP
Go Pro
Exploit Fix