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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2026-18963 — Proof-of-concept exploit for CVE-2026-18963, demonstrating unauthenticated account takeover by bypassing the reset-credentials flow in web applications. | Kitploit
Инструменты/GitHubGitHub/eqstlab/cve-2026-18963
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingAuthentication
GitHubeqstlab/cve-2026-18963

CVE-2026-18963

Proof-of-concept exploit for CVE-2026-18963, demonstrating unauthenticated account takeover by bypassing the reset-credentials flow in web applications.

Репозиторий
1723214 дней назадЕщё не проверено

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Контент недоступен на запрошенном языке. Показываем английскую версию.

CVE-2026-18963 Keycloak Unauthenticated Account Takeover

★ CVE-2026-18963 Keycloak Reset-Credentials Flow Bypass PoC ★

https://github.com/user-attachments/assets/ebed1e64-a40c-4333-be18-9acbadd655b0


Overview

CVE-2026-18963 is a critical unauthenticated account takeover vulnerability in the Keycloak keycloak-services component (CVSS 9.1). A flaw in the reset-credentials authentication state machine allows a remote attacker to bypass the email-verification step and reach the password-update form without possessing the reset link. By targeting a known username, an attacker can set a new password and take control of the victim's account without authentication or user interaction.

The vulnerable flow stores the credential-selector state as a session-wide authentication note instead of binding it to the execution that displayed the selector. Re-entering the reset flow can therefore reuse stale selector state for another execution. In affected versions, the reset-email authenticator also accepts an action without confirming that it was reached through a valid email action token. Chaining these behaviors advances the attacker directly to UPDATE_PASSWORD.


Affected Versions

CategoryVersion
VulnerableKeycloak 26.0.0 ≤ version < 26.4.15
VulnerableKeycloak 26.5.0 ≤ version < 26.6.6
VulnerableKeycloak 26.7.0 ≤ version < 26.7.2
Patched26.4.15, 26.6.6, 26.7.2 (respective release branches)

This lab uses Keycloak 26.7.1.


Impact

  • Unauthenticated password reset for an arbitrary known user
  • Full account takeover without access to the victim's email
  • Unauthorized access to applications and data protected by the affected Keycloak realm
  • Abuse of the victim's roles and privileges in connected services

Environment

Build and run the vulnerable Keycloak 26.7.1 environment. The image imports a test realm with the vulnerable reset-credentials flow enabled, a seeded victim account, and an EQST portal with a protected flag page.

docker build -t cve-2026-18963 .
docker run --rm -d \
  --name cve-2026-18963 \
  -p 9105:9105 \
  -e PORTAL_PUBLIC_URL=http://127.0.0.1:9105 \
  cve-2026-18963

Wait for Keycloak to start, then open the portal:

http://127.0.0.1:9105
PreconditionState in this lab
Keycloak26.7.1 (vulnerable)
Realmcve-lab
Forgot passwordenabled
Target accountvictim
Keycloak base URLhttp://127.0.0.1:9105/keycloak

PoC

The included exploit.py automates the reset-flow state manipulation, requests the password-update form without consuming an email action token, changes the victim's password, and verifies the takeover by requesting an access token with the new credentials.

Install the Python dependency:

python3 -m pip install requests

Run the exploit with the Keycloak URL, victim username, and a new password:

# python3 exploit.py <keycloak-url> <victim> <new-password>
python3 exploit.py \
  http://127.0.0.1:9105/keycloak \
  victim \
  'NewPassword1!'

A successful run prints:

[*] selector note set via tryAnotherWay
[*] victim submitted: victim
[*] update-password form served without an action token
[+] VULNERABLE - victim password is now 'NewPassword1!'

Open http://127.0.0.1:9105, click LOGIN, and authenticate as victim with the new password to confirm the account takeover.


Mitigation

  • Upgrade within the applicable release branch to 26.4.15, 26.6.6, or 26.7.2, or move to a newer supported Keycloak release.
  • If an immediate upgrade is not possible, disable Realm settings → Login → Forgot password in every realm as a temporary mitigation.
  • Review password-reset activity for unexpected resets and investigate affected accounts.
  • Revoke active sessions and rotate credentials for accounts suspected of compromise.

Analysis

  • KR: Coming soon!
  • EN:
Скачать инструмент