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.