
CVE-2026-18963 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो वेब एप्लिकेशन में रीसेट-क्रेडेंशियल्स फ़्लो को बायपास करके अनऑथेंटिकेटेड अकाउंट टेकओवर को प्रदर्शित करता है।
★ CVE-2026-18963 Keycloak Reset-Credentials फ़्लो बायपास PoC ★
https://github.com/user-attachments/assets/ebed1e64-a40c-4333-be18-9acbadd655b0
CVE-2026-18963 Keycloak के
keycloak-servicesघटक में एक गंभीर अनधिप्रमाणित खाता अधिग्रहण भेद्यता है (CVSS 9.1)। reset-credentials प्रमाणीकरण स्टेट मशीन में एक त्रुटि एक दूरस्थ हमलावर को ईमेल-सत्यापन चरण को बायपास करने और रीसेट लिंक के बिना पासवर्ड-अपडेट फ़ॉर्म तक पहुँचने की अनुमति देती है। किसी ज्ञात उपयोगकर्ता नाम को लक्षित करके, एक हमलावर नया पासवर्ड सेट कर सकता है और बिना प्रमाणीकरण या उपयोगकर्ता इंटरैक्शन के पीड़ित के खाते पर नियंत्रण प्राप्त कर सकता है।
भेद्य फ़्लो credential-selector स्थिति को एक सत्र-व्यापी प्रमाणीकरण नोट के रूप में संग्रहीत करता है, बजाय इसे उस निष्पादन से बाँधने के जिसने selector प्रदर्शित किया था। इसलिए रीसेट फ़्लो में पुनः प्रवेश करने पर किसी अन्य निष्पादन के लिए पुरानी selector स्थिति का पुनः उपयोग किया जा सकता है। प्रभावित संस्करणों में, reset-email प्रमाणक एक क्रिया को स्वीकार करता है बिना यह पुष्टि किए कि उस तक वैध ईमेल क्रिया टोकन के माध्यम से पहुँचा गया था। इन व्यवहारों को श्रृंखलाबद्ध करने से हमलावर सीधे UPDATE_PASSWORD तक पहुँच जाता है।
| श्रेणी | संस्करण |
|---|---|
| भेद्य | Keycloak 26.0.0 ≤ version < 26.4.15 |
| भेद्य | Keycloak 26.5.0 ≤ version < 26.6.6 |
| भेद्य | Keycloak 26.7.0 ≤ version < 26.7.2 |
| पैच किया गया | 26.4.15, 26.6.6, 26.7.2 (संबंधित रिलीज़ शाखाएँ) |
यह लैब Keycloak 26.7.1 का उपयोग करती है।
भेद्य Keycloak 26.7.1 वातावरण बनाएँ और चलाएँ। इमेज एक परीक्षण रियल्म आयात करती है जिसमें भेद्य reset-credentials फ़्लो सक्षम है, एक पूर्व-निर्धारित victim खाता है, और एक संरक्षित फ़्लैग पृष्ठ वाला EQST पोर्टल है।
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
Keycloak के शुरू होने की प्रतीक्षा करें, फिर पोर्टल खोलें:
http://127.0.0.1:9105
| पूर्वापेक्षा | इस लैब में स्थिति |
|---|---|
| Keycloak | 26.7.1 (भेद्य) |
| रियल्म | cve-lab |
| पासवर्ड भूल गए | सक्षम |
| लक्ष्य खाता | victim |
| Keycloak आधार URL | http://127.0.0.1:9105/keycloak |
शामिल exploit.py रीसेट-फ़्लो स्थिति हेरफेर को स्वचालित करता है, ईमेल क्रिया टोकन का उपभोग किए बिना पासवर्ड-अपडेट फ़ॉर्म का अनुरोध करता है, पीड़ित का पासवर्ड बदलता है, और नए क्रेडेंशियल के साथ एक्सेस टोकन का अनुरोध करके अधिग्रहण को सत्यापित करता है।
Python निर्भरता स्थापित करें:
python3 -m pip install requests
Keycloak URL, पीड़ित उपयोगकर्ता नाम, और एक नए पासवर्ड के साथ exploit चलाएँ:
# python3 exploit.py <keycloak-url> <victim> <new-password>
python3 exploit.py \
http://127.0.0.1:9105/keycloak \
victim \
'NewPassword1!'
सफल निष्पादन प्रिंट करता है:
[*] selector note set via tryAnotherWay
[*] victim submitted: victim
[*] update-password form served without an action token
[+] VULNERABLE - victim password is now 'NewPassword1!'
http://127.0.0.1:9105 खोलें, LOGIN पर क्लिक करें, और खाता अधिग्रहण की पुष्टि के लिए नए पासवर्ड के साथ victim के रूप में प्रमाणित करें।