Доказательство концепции, демонстрирующее уязвимость хранимого XSS в поле биографии профиля FreelanceHub, с пошаговым воспроизведением и анализом воздействия.
CVE-2025-55854 — Уязвимость межсайтового скриптинга (XSS) с сохранением
Обзор уязвимости
Идентификатор CVE: CVE-2025-55854 Тип уязвимости: Межсайтовый скриптинг (XSS) с сохранением Степень критичности: Высокая Затронутый компонент: Поле «О себе» в профиле пользователя Затронутое приложение: FreelanceHub (https://github.com/nooncarlett/FreelanceHub)
Описание
В приложении FreelanceHub обнаружена уязвимость межсайтового скриптинга (XSS) с сохранением в функционале профиля пользователя. Уязвимость вызвана недостаточной санитизацией вводимых данных в поле «О себе», что позволяет злоумышленникам внедрять вредоносный JavaScript-код, который выполняется при просмотре страницы профиля другими пользователями.
Данная уязвимость позволяет злоумышленнику:
Выполнять произвольный JavaScript в контексте браузеров других пользователей
Похищать токены сессий и cookie-файлы
Выполнять действия от имени аутентифицированных пользователей
Перенаправлять пользователей на вредоносные веб-сайты
Искажать интерфейс приложения
Затронутые версии
FreelanceHub (все версии до установки исправления)
Протестировано на: локальном развертывании на порту 8080
Технические детали
Первопричина
Приложение не выполняет надлежащую санитизацию пользовательского ввода в поле «О себе» перед сохранением в базе данных и отображением на странице профиля. HTML отображается напрямую, без экранирования специальных символов и без удаления потенциально опасных тегов и обработчиков событий.
Вектор атаки
Тип атаки: XSS с сохранением
Вектор ввода: Поле «О себе» в профиле пользователя
Контекст выполнения: Любой пользователь, просматривающий профиль злоумышленника
Требуется аутентификация: Да (злоумышленнику необходима действующая учетная запись)
Доказательство концепции
Предварительные требования
Запущенный экземпляр приложения FreelanceHub
Веб-браузер (Chrome, Firefox, Edge и т. д.)
Доступ для создания учетной записи пользователя
Пошаговое воспроизведение
Шаг 1: Создание новой учетной записи
Перейдите на http://localhost:8080/auth
Зарегистрируйте новую учетную запись, используя действительные учетные данные
Завершите процесс регистрации и войдите в систему
Шаг 2: Переход на страницу профиля
После успешного входа перейдите на http://localhost:8080/profile
Найдите поле «О себе» в форме редактирования профиля
Шаг 3: Внедрение XSS-пейлоада
В поле «О себе» введите следующий пейлоад:
root@kitploit:~
Шаг 4: Отправка формы
Нажмите кнопку «Сохранить» или «Обновить профиль»
Дождитесь подтверждения того, что профиль был обновлен
Шаг 5: Активация XSS
Посетите или перезагрузите страницу профиля: http://localhost:8080/profile
Окно JavaScript-оповещения выполнится автоматически
Результат: JavaScript-код выполняется успешно, что подтверждает уязвимость XSS с сохранением
Ожидаемое поведение
Приложение должно выполнять санитизацию ввода и либо:
Удалять все HTML-теги из поля «О себе»
Кодировать специальные символы (<, >, ", ' и т. д.)
Внедрять заголовки политики безопасности контента (CSP)
Фактическое поведение
Вредоносный HTML/JavaScript-пейлоад сохраняется в базе данных и выполняется при отображении страницы профиля без какой-либо санитизации или кодирования.