September 26, 2025

Keycloak — ключ к вашей инфраструктуре

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

Как устроен Keycloak

Несмотря на хорошую защищенность Keycloak, существует немалый объем CVE уязвимостей применимых к прошлым версиям. Но мы разберем разновидности атак применимых даже при использовании самой последней версии.

Для начала разберемся что такое Realms в контексте Keycloak — это изолированные друг от друга среды предназначенные для разделения набора групп, пользователей, ролей и прав. При первичном развертывании Keycloak создается первичная среда — Master Realm. Это административная среда позволяющая управлять всеми остальными средами в рамках Keycloak инсталляции, поэтому крайне не рекомендуется использовать эту среду для авторизации в других приложениях инфраструктуры.

Разведка

Проверить используемую конфигурацию можно несколькими способами:

  • OpenID: /auth/realms/REALM_NAME/.well-known/openid-configuration
  • SAML: /auth/realms/realm_name/protocol/saml/descriptor
  • Публичные ключи: /auth/realms/realm_name/

Точку с публичными ключами можно использовать для перечисления существующих сред:

Некоторые среды могут поддерживать возможность самостоятельной регистрации:

Но даже если опция регистрации была скрыта со страницы, можно попробовать обратиться напрямую:

  • /auth/realms/<realm_name>/login-actions/registration?client_id=<same_as_the_login_page>&tab_id=<same_as_the_login_form>

Крайне не рекомендуется допускать возможность самостоятельной регистрации в продуктивной среде.

У каждой отдельной среды есть собственный набор "клиентов" (client_id) — приложений которым разрешено выполнять аутентификацию через Keycloak:

  • /auth/realms/<realm_name>/protocol/openid-connect/auth?**client_id=account-console**&redirect_uri=<...>&state=<...>&response_mode=<...>&response_type=<...>&**scope=openid**&nonce=<...>&code_challenge=<...>&code_challenge_method=<...>

При установке по умолчанию доступны следующие клиенты:

Кроме этого, для клиентов могут существовать и отдельный набор данных (scopes) к которым запрашивается доступ при аутентификации:

  • /auth/realms/<realm_name>/protocol/openid-connect/auth?**client_id=account-console**&redirect_uri=<...>&state=<...>&response_mode=<...>&response_type=<...>&**scope=openid**&nonce=<...>&code_challenge=<...>&code_challenge_method=<...>

Стандартный набор данных которые можно запрашивать:

Keycloak так же поддерживает аутентификацию через делегацию провайдерам идентификации, таким как Gitlab, Google, Github и др.:

  • /auth/realms/REALM_NAME/broker/IDP_NAME/endpoint

Их можно перебрать или они могут быть доступны в UI:

https://aaronparecki.com/oauth-2-simplified/#authorization

Перечисление существующих пользователей возможно при условии наличия доступа хотя бы к одному аккаунту через страницу профиля:

В результате этапа разведки мы можем получить уже немалый объем полезной информации:

  • Доступные среды (realms)
  • Доступные среды с саморегистрацией
  • Список клиентов для каждой среды (client_id)
  • Список доступных данных для запроса (scope)
  • Email адреса существующих пользователей для среды где удалось получить аккаунт
  • Список используемых дополнительных провайдеров для аутентификации

Брутфорс атаки

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

Препятствием может стать защита от CSRF, поэтому для брутфорс атак на Keycloak потребуется реализация скрипта или использование набора настроек в Burp Suite.

Реальные случаи взлома

В результате анализа доступных на периметре Keycloak нашим специалистам в прошлом удавалось получить доступ к административным средам и захватить полностью контроль над системой аутентификации, что открывает огромные возможности для дальнейшего закрепления в инфраструктуре:

Заключение

Несмотря на хорошую защищенность Keycloak, даже при стандартной конфигурации появляются высокие риски для инфраструктуры, поэтому крайне рекомендуем проверять и применять все рекомендации на основе официальной документации:

https://www.keycloak.org/docs/latest/server_admin/#mitigating_security_threats

Метаскан позволяет эффективно выявить все доступные управляющие среды Keycloak (Master Realm) на периметре, а наши пентестеры могут помочь вам выявить слабые учетные записи и защитить используемые на периметре Keycloak.