
CVE-2025-8517: Фиксация сессии в Vvveb CMS v1.0.6.1
Автор: Andrew Paul
Дата обнаружения: 9 июня 2025
Вендор: Vvveb
URL вендора: http://vvveb.com
GitHub вендора: https://github.com/givanz/Vvveb
Затронутая версия: 1.0.6.1 (и, вероятно, предыдущие версии)
CVE ID: CVE-2025-8517
В механизме аутентификации Vvveb CMS версии 1.0.6.1 была обнаружена уязвимость фиксации сессии, классифицированная как CWE-384: Фиксация сессии. Система не создает и не применяет новый идентификатор сессии после успешного входа в систему. Эта фундаментальная ошибка допускает два варианта атаки: стандартную атаку фиксации сессии с использованием сессионного ID, выданного сервером, и более серьезную атаку, при которой злоумышленник может придумать произвольную строку для использования в качестве идентификатора сессии. В обоих случаях уязвимость может быть использована для перехвата аутентифицированной сессии пользователя, что приводит к полному захвату учетной записи.
Эта уязвимость соответствует нескольким категориям из OWASP Top 10 2021:
A01:2021 — Нарушение контроля доступа: Конечным результатом атаки является полный сбой контроля доступа, поскольку злоумышленник получает все разрешения и права доступа к захваченной учетной записи пользователя.
A04:2021 — Небезопасный дизайн: Процесс аутентификации небезопасен по замыслу, так как в нем отсутствует фундаментальная мера безопасности: регенерация токенов сессии при изменении уровня привилегий.
A07:2021 — Ошибки идентификации и аутентификации: Приложение не может должным образом управлять жизненным циклом идентификаторов сессии после входа в систему, что позволяет злоумышленнику зафиксировать сессию и выдать себя за пользователя.
Основная причина этой уязвимости — полное отсутствие безопасного управления состоянием сессии в процессе аутентификации. Это проявляется в двух различных, но взаимосвязанных недостатках:
Неспособность регенерировать легитимные идентификаторы сессии: Приложение не генерирует новый PHPSESSID после успешного входа. Это позволяет злоумышленнику посетить страницу входа, получить легитимный предварительный идентификатор сессии, зафиксировать его в браузере жертвы, а затем использовать тот же идентификатор для перехвата сессии.
Принятие произвольных идентификаторов сессии: Что еще более критично, механизм сессии приложения слепо доверяет идентификаторам, предоставленным клиентом. Злоумышленнику не нужен реальный идентификатор сессии от сервера; он может изобрести любую произвольную строку (например, 'hacked'), которую сервер примет и затем повысит до аутентифицированной сессии после входа. Это упрощает атаку для злоумышленника и подчеркивает фундаментальный характер ошибки.
Эта уязвимость может быть использована через любой вектор, позволяющий злоумышленнику установить или «зафиксировать» cookie в браузере жертвы. Типичные векторы включают:
Межсайтовый скриптинг (XSS): Отдельная уязвимость XSS может позволить удаленную эксплуатацию.
Физический доступ (общая рабочая станция): Злоумышленник может вручную установить cookie на общем компьютере.
Человек посередине (MitM): Злоумышленник в незащищенной сети может перехватить трафик для установки cookie.
Данный PoC демонстрирует полный захват учетной записи администратора с отдельного компьютера, иллюстрируя самый серьезный путь атаки с использованием произвольного идентификатора, придуманного злоумышленником.
Шаги:
Злоумышленник изобретает идентификатор: Злоумышленник выбирает произвольную строку для использования в качестве идентификатора сессии, например: session-hijacked-by-andy.
Злоумышленник устанавливает cookie: На компьютере жертвы злоумышленник с помощью инструментов разработчика браузера устанавливает cookie PHPSESSID равным session-hijacked-by-andy для домена Vvveb CMS.
Жертва (администратор) входит в систему: Жертва, используя тот же браузер, входит в Vvveb CMS со своими учетными данными администратора.
Сбой системы: CMS проверяет учетные данные жертвы, но не генерирует новый cookie сессии. Вместо этого она повышает cookie злоумышленника (session-hijacked-by-andy) до полноценной аутентифицированной сессии администратора.
Злоумышленник перехватывает сессию: С другого компьютера злоумышленник устанавливает в своем браузере cookie PHPSESSID равным session-hijacked-by-andy и переходит на панель администратора Vvveb CMS.
Результат: Злоумышленник получает немедленный и полный административный доступ к CMS без необходимости знать пароль жертвы.
Успешная эксплуатация приводит к полной компрометации целевой учетной записи пользователя. Если жертва является администратором, воздействие является критическим и включает:
Полный административный контроль: Злоумышленник получает полный контроль над CMS, эквивалентный контролю захваченного администратора.
Компрометация данных: Полная возможность чтения, изменения, экспорта или удаления всего содержимого сайта, пользовательских данных и конфиденциальных параметров конфигурации.
Постоянство в системе: Злоумышленник может создать нового пользователя с полными правами администратора. Это дает ему постоянный бэкдор в систему даже после истечения срока действия оригинальной захваченной сессии или выхода легитимного администратора из системы.
Дальнейшие атаки: Скомпрометированная учетная запись администратора может быть использована для загрузки вредоносных файлов (например, веб-шеллов) или запуска дальнейших атак на базовый сервер и его посетителей.
Приложение должно регенерировать идентификатор сессии при любом изменении уровня привилегий, особенно при аутентификации пользователя. Стандартная реализация в PHP — вызов session_regenerate_id(true); сразу после проверки учетных данных пользователя и перед предоставлением доступа к аутентифицированной части приложения.
Дата обнаружения: 9 июня 2025
Дата уведомления вендора: 10 июня 2025
Дата подтверждения вендором: 16 июня 2025
Дата выпуска исправления: 17 июня 2025
Дата публичного раскрытия: 26 июля 2025