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-пейлоада
- В поле «О себе» введите следующий пейлоад:
Шаг 4: Отправка формы
- Нажмите кнопку «Сохранить» или «Обновить профиль»
- Дождитесь подтверждения того, что профиль был обновлен
Шаг 5: Активация XSS
- Посетите или перезагрузите страницу профиля:
http://localhost:8080/profile
- Окно JavaScript-оповещения выполнится автоматически
- Результат: JavaScript-код выполняется успешно, что подтверждает уязвимость XSS с сохранением
Ожидаемое поведение
Приложение должно выполнять санитизацию ввода и либо:
- Удалять все HTML-теги из поля «О себе»
- Кодировать специальные символы (
<, >, ", ' и т. д.)
- Внедрять заголовки политики безопасности контента (CSP)
Фактическое поведение
Вредоносный HTML/JavaScript-пейлоад сохраняется в базе данных и выполняется при отображении страницы профиля без какой-либо санитизации или кодирования.
Оценка воздействия
Степень критичности: ВЫСОКАЯ
Оценка CVSS v3.1: 8.1 (Высокая)
Строка вектора: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
Реальное воздействие
- Угон сессий: Злоумышленники могут похищать токены сессий и выдавать себя за пользователей
- Кража учетных данных: Вредоносные скрипты могут создавать поддельные формы входа для перехвата учетных данных
- Эксфильтрация данных: Конфиденциальные данные пользователей могут отправляться на серверы, контролируемые злоумышленником
- Распространение вредоносного ПО: Пользователи могут быть перенаправлены на вредоносные веб-сайты
- Фишинговые атаки: Доверенный домен может использоваться для размещения убедительного фишингового контента
- Захват учетных записей: В сочетании с другими уязвимостями это может привести к полной компрометации учетной записи