Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Инструменты/GitHubGitHub/lukasz-rybak/cve-2026-27621
Анализ уязвимостейЭксплуатация веб-приложенийВеб-безопасностьСтатьи и ИсследованияОбучение и Образование
GitHublukasz-rybak/cve-2026-27621

CVE-2026-27621

CVE-2026-27621 - В ядре TypiCMS присутствует хранимая XSS-уязвимость (межсайтовый скриптинг) через загрузку SVG-файлов.

Репозиторий
15 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

CVE-2026-27621: TypiCMS Core содержит хранимую межсайтовую уязвимость (XSS), возникающую при загрузке SVG-файлов

Обзор

ПолеПодробности
ID CVECVE-2026-27621
СерьёзностьСРЕДНЯЯ
УведомлениеПросмотреть уведомление
ОбнаружилЛукаш Рыбак

Затронутые продукты

  • typicms/core (версии: < 16.1.7)

Классификация CWE

  • CWE-79: Некорректная нейтрализация входных данных при генерации веб-страниц («Межсайтовый скриптинг»)

Подробности

I. Краткое описание

В модуле загрузки файлов TypiCMS существует хранимая межсайтовая уязвимость (XSS). Приложение позволяет пользователям с правами на загрузку файлов загружать SVG-файлы. Несмотря на проверку MIME-типа, содержимое SVG-файла не санитизируется. Злоумышленник может загрузить специально созданный SVG-файл, содержащий вредоносный код JavaScript. Когда другой пользователь (например, администратор) просматривает или открывает этот файл через приложение, скрипт выполняется в его браузере, что приводит к компрометации сессии этого пользователя.

Проблема усугубляется ошибкой в логике разбора SVG, которая может вызвать ошибку 500, если загруженный SVG не содержит атрибут viewBox. Однако это не устраняет уязвимость XSS, поскольку злоумышленник может легко включить корректный атрибут viewBox в свою вредоносную полезную нагрузку.

II. Детали уязвимости

  • Тип уязвимости: хранимая межсайтовая уязвимость (XSS) (CWE-79)
  • Затронутый компонент: TypiCMS\Modules\Core\Http\Requests\FileFormRequest.php и TypiCMS\Modules\Core\Services\FileUploader.php.
  • Затронутые версии: <= 16.0.5

Уязвимость обусловлена двумя основными факторами:

  1. Излишне мягкая валидация файлов: FileFormRequest явно включает svg в белый список разрешённых MIME-типов для загрузки.
  2. Отсутствие санитизации содержимого: сервис FileUploader сохраняет SVG-файл на сервер без разбора и санитизации его содержимого для удаления потенциально опасных элементов, таких как теги <script> или обработчики событий on*.

Когда для диска файловой системы по умолчанию задано значение public, загруженный SVG-файл сохраняется в общедоступный каталог, что делает тривиальным доступ к файлу по прямой ссылке и запуск XSS-полезной нагрузки.

III. Подтверждение концепции (PoC)

  1. Создайте вредоносный SVG-файл: Создайте файл с именем malicious.svg со следующим содержимым. Атрибут viewBox включён, чтобы обойти ошибку разбора в приложении.

    root@kitploit:~
    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
        <script>
            // A simple PoC to demonstrate the vulnerability
            alert('XSS in TypiCMS! Your session cookie is: ' + document.cookie);
        </script>
        <text x="10" y="50">If you see this, the script has run.</text>
    </svg>
    
  2. Загрузите вредоносный файл:

    • Войдите в панель администратора TypiCMS как пользователь с правами на загрузку файлов.
    • Перейдите в модуль «Файлы» (например, /admin/files).
    • Загрузите файл malicious.svg. Приложение примет файл и сохранит его. изображение
изображение
  1. Запустите XSS:
    • Приложение предоставит публичный URL для загруженного файла, обычно в формате http://<your-site>/storage/files/malicious.svg.
    • У любого, кто перейдёт по этому URL, в браузере выполнится встроенный JavaScript.
    • Злоумышленник может отправить эту ссылку привилегированному пользователю (например, администратору). Когда администратор перейдёт по ссылке, его сессионные cookie могут быть похищены, либо злоумышленник сможет выполнять действия от его имени.
изображение
изображение

IV. Воздействие

Успешная эксплуатация этой уязвимости позволяет злоумышленнику выполнять произвольный код JavaScript в контексте браузера жертвы. Хотя использование флага HttpOnly для сессионных cookie предотвращает прямое похищение идентификатора сессии через document.cookie, злоумышленник всё равно может добиться полной компрометации учётной записи жертвы, выполняя действия от её имени.

Воздействие включает:

  • Захват учётной записи через подделку действий: скрипт злоумышленника может отправлять аутентифицированные запросы к API приложения из браузера жертвы. Это позволяет злоумышленнику выполнять любые действия, на которые уполномочена жертва, например:

    • создание новой учётной записи администратора для злоумышленника.
    • изменение адреса электронной почты и пароля жертвы.
    • удаление или изменение всего содержимого, пользователей и настроек.
  • Раскрытие конфиденциальной информации: скрипт может читать содержимое любой страницы, которую жертва просматривает в панели администратора. Это включает списки пользователей (с именами и адресами электронной почты), приватные настройки приложения и другие конфиденциальные данные, которые затем могут быть переданы на управляемый злоумышленником сервер.

  • Фишинг и социальная инженерия: скрипт может манипулировать интерфейсом панели администратора, отображая поддельные формы входа, чтобы обманом заставить пользователя повторно ввести свои учётные данные, или перенаправлять его на вредоносный веб-сайт.

  • Перехват нажатий клавиш: скрипт может перехватывать любую информацию, которую жертва вводит в формы на скомпрометированной странице.

Поскольку злоумышленник может выполнять любые действия в роли аутентифицированного администратора, эта уязвимость фактически приводит к полной компрометации приложения, даже без прямого доступа к сессионному cookie. Риск — высокий.

V. Рекомендуемые исправления и меры смягчения

Рекомендуется применить подход эшелонированной защиты для смягчения этой уязвимости.

  1. Основное исправление: санитизация содержимого SVG: Наиболее надёжное решение — санитизировать SVG-файлы при загрузке. Перед сохранением файла его следует разобрать, чтобы удалить все потенциально опасные элементы, включая теги <script>, <style>, <foreignObject> и все атрибуты событий on*. Это можно сделать с помощью специальной библиотеки санитизации SVG.

  2. Дополнительное исправление: отключение загрузки SVG: Если загрузка SVG не является критически важной функцией приложения, самое простое и безопасное решение — полностью отключить её. Это можно сделать, удалив 'svg' из списка разрешённых MIME-типов в файле TypiCMS\Modules\Core\Http\Requests\FileFormRequest.php.

    root@kitploit:~
    // In FileFormRequest.php
    // BEFORE:
    $fileRule = 'mimes:jpeg,gif,png,...,svg,...|max:...';
    
    // AFTER:
    $fileRule = 'mimes:jpeg,gif,png,...,pdf,...|max:...'; // Removed 'svg'
    
  3. Усиление защиты — Content-Security-Policy (CSP): Внедрите строгий заголовок Content-Security-Policy (CSP) для приложения. Правильно настроенный CSP может предотвратить выполнение встроенных скриптов, что смягчило бы воздействие этой XSS-уязвимости.

  4. Усиление защиты — размещение пользовательского контента на отдельном домене: Размещайте все загруженные пользователями файлы на отдельном домене без cookie. Это высокоэффективная мера безопасности, которая изолирует пользовательский контент от основного приложения, не позволяя скриптам получать доступ к сессионным cookie или взаимодействовать с DOM приложения.

Ссылки

  • https://github.com/TypiCMS/Core/security/advisories/GHSA-xfvg-8v67-j7wp
  • https://nvd.nist.gov/vuln/detail/CVE-2026-27621
  • https://github.com/TypiCMS/Core/commit/d480a0be1e8e7c0600bb9a325bb11920ee66497d
  • https://github.com/advisories/GHSA-xfvg-8v67-j7wp

Отказ от ответственности

Этот CVE был раскрыт ответственно в соответствии с практиками скоординированного раскрытия уязвимостей. Информация, представленная здесь, предназначена только для образовательных и защитных целей.

Скачать инструмент