
Доказательство концепции для уязвимости хранимого XSS в Hotel and Tourism Reservation System 1.0, демонстрирующее неаутентифицированную инъекцию и перехват сессии администратора.
| Поле | Детали |
|---|
| Название | Система бронирования отелей и туризма — Межсайтовый скриптинг (XSS) с сохранением |
| ID CVE | Ожидает присвоения |
| Поставщик | code-projects.org |
| URL поставщика | https://code-projects.org/hotel-and-tourism-reservation-in-php-with-source-code/ |
| Продукт | Система бронирования отелей и туризма |
| Версия | 1.0 |
| Тип уязвимости | Межсайтовый скриптинг (XSS) с сохранением |
| CWE | CWE-79 |
| Оценка CVSS | 8.3 (Высокая) |
| Вектор CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:L |
| Затронутая конечная точка (внедрение) | /ht/tour.php |
| Затронутая конечная точка (запуск) | /ht/admin/tour_reserves.php |
| Требуется аутентификация | Нет (внедрение) / Да (запуск) |
| Удалённая эксплуатация | Да |
| Исследователь | Syed Imad Uddin Alvi |
В функциональности бронирования туров системы бронирования отелей и туризма 1.0 существует уязвимость межсайтового скриптинга (XSS) с сохранением. Неаутентифицированный злоумышленник может внедрить произвольный JavaScript в поля формы бронирования на /ht/tour.php. Вредоносная нагрузка сохраняется в базе данных без санитизации. Когда администратор посещает страницу управления бронированием туров на /ht/admin/tour_reserves.php, сохранённая нагрузка выполняется в контексте браузера администратора — что позволяет перехватывать сессии, красть учётные данные или полностью захватывать учётную запись администратора.
Файл: tour.php (точка внедрения)
Файл: admin/tour_reserves.php (точка выполнения)
Параметр: name , email , people , number / поля контактов (POST)
Хранилище: hotel_db — таблица бронирований туров
Настройка: Установите систему бронирования отелей и туризма 1.0 на XAMPP и откройте http://<target>/ht/
Шаг 1 — Перейдите на страницу бронирования тура как неаутентифицированный пользователь:
http://<target>/ht/tour.php?tour=4
Шаг 2 — Введите XSS-нагрузку в поле имени или в любое другое поле (все они уязвимы к XSS), затем нажмите Book Now:
<script>alert(1)</script>
Результат: «Reservation successfully made!» — нагрузка теперь сохранена в базе данных.

Шаг 3 — Войдите как администратор и перейдите на панель бронирований туров:
http://<target>/ht/admin/tour_reserves.php
Результат: Сохранённая XSS-нагрузка немедленно выполняется в контексте браузера администратора.

Неаутентифицированный злоумышленник может:
Форма бронирования на tour.php сохраняет пользовательский ввод непосредственно в базу данных без санитизации. Панель администратора на tour_reserves.php выводит сохранённое значение в HTML-ответ без кодирования вывода, что позволяет выполнять внедрённые скрипты.
// При выводе — всегда кодируйте перед отображением
echo htmlspecialchars($reservation['name'], ENT_QUOTES, 'UTF-8');
** Imad Alvi** — независимый исследователь безопасности GitHub: Xmyronn