
CVE-2025-67875 - ChurchCRM में व्यक्ति संपत्ति असाइनमेंट के माध्यम से संग्रहीत XSS है जो व्यवस्थापक सत्र अपहरण की ओर ले जाता है
| फ़ील्ड | विवरण |
|---|---|
| CVE ID | CVE-2025-67875 |
| गंभीरता | उच्च |
| सलाह | View Advisory |
| द्वारा खोजा गया | Lukasz Rybak |
ChurchCRM संस्करण 6.3.0 और पुराने में एक गंभीर विशेषाधिकार वृद्धि भेद्यता मौजूद है। एक प्रमाणित उपयोगकर्ता विशिष्ट मध्य-स्तरीय अनुमतियों ("Edit Records" और "Manage Properties and Classifications") के साथ एक एडमिनिस्ट्रेटर की प्रोफ़ाइल में एक स्थायी क्रॉस-साइट स्क्रिप्टिंग (XSS) पेलोड इंजेक्ट कर सकता है। जब एडमिनिस्ट्रेटर अपने स्वयं के प्रोफ़ाइल पृष्ठ को देखता है तो पेलोड निष्पादित होता है, जिससे हमलावर एडमिनिस्ट्रेटर के सत्र का अपहरण कर सकता है, प्रशासनिक कार्रवाई कर सकता है, और पूर्ण खाता अधिग्रहण प्राप्त कर सकता है।
यह भेद्यता दो अलग-अलग दोषों का संयोजन है: एक असुरक्षित प्रत्यक्ष वस्तु संदर्भ (IDOR) जो किसी भी उपयोगकर्ता को किसी अन्य उपयोगकर्ता की प्रोफ़ाइल देखने की अनुमति देता है, और एक टूटा हुआ एक्सेस नियंत्रण भेद्यता जो सामान्य संपादन अनुमतियों वाले उपयोगकर्ता को किसी अन्य उपयोगकर्ता के रिकॉर्ड गुणों को संशोधित करने की अनुमति देता है।
हमला श्रृंखला इस प्रकार है:
PersonView.php में IDOR: PersonView.php की शुरुआत में कोई प्राधिकरण जांच नहीं है। कोई भी प्रमाणित उपयोगकर्ता केवल उनकी आईडी जानकर किसी अन्य उपयोगकर्ता की प्रोफ़ाइल पृष्ठ देख सकता है (उदाहरण के लिए, एडमिन के लिए PersonView.php?PersonID=1)।
PropertyAssign.php में टूटा हुआ एक्सेस नियंत्रण: किसी अन्य उपयोगकर्ता के PersonView.php पृष्ठ से सुलभ "Assign a New Property" कार्यक्षमता, उपयोगकर्ता को PropertyAssign.php पर निर्देशित करती है। यह स्क्रिप्ट सही ढंग से जांचती है कि उपयोगकर्ता के पास सामान्य isEditRecordsEnabled() अनुमति है या नहीं, लेकिन यह ऑब्जेक्ट-स्तरीय प्राधिकरण जांच करने में विफल रहती है ताकि यह सत्यापित किया जा सके कि उपयोगकर्ता को URL में पारित विशिष्ट PersonID को संपादित करने की अनुमति है या नहीं। यह "Edit Records" वाले उपयोगकर्ता को सिस्टम में किसी भी व्यक्ति के गुणों को संशोधित करने की अनुमति देता है, जिसमें एक एडमिनिस्ट्रेटर भी शामिल है।
संग्रहित XSS वेक्टर: एक हमलावर इन दो दोषों का लाभ उठाकर एडमिनिस्ट्रेटर की प्रोफ़ाइल पृष्ठ पर जा सकता है और "Assign a New Property" फॉर्म का उपयोग करके एडमिनिस्ट्रेटर के रिकॉर्ड में एक दुर्भावनापूर्ण XSS पेलोड सहेज सकता है। टेक्स्ट-आधारित गुणों के लिए Value फ़ील्ड को इनपुट पर ठीक से स्वच्छ नहीं किया जाता है (केवल strip_tags लागू किया जाता है, जो ईवेंट हैंडलर्स को नहीं हटाता है) और आउटपुट पर एन्कोड नहीं किया जाता है, जिससे संग्रहित XSS होता है।
src/PropertyAssign.php): केवल strip_tags() लागू करने के बाद गुण मान को सहेजता है, जो onerror जैसे ईवेंट हैंडलर विशेषताओं की अनुमति देता है।src/PersonView.php): संग्रहित गुण मान को htmlspecialchars() के बिना सीधे HTML में प्रस्तुत करता है, जिससे पेलोड निष्पादित होता है।
// src/PersonView.php, line ~722
<td><?= $r2p_Value ?></td> // Vulnerable: Raw output
यह प्रमाण-अवधारणा प्रदर्शित करता है कि कैसे विशिष्ट मध्य-स्तरीय अनुमतियों वाला उपयोगकर्ता मुख्य एडमिनिस्ट्रेटर की प्रोफ़ाइल में एक संग्रहित XSS पेलोड इंजेक्ट कर सकता है।
पूर्वापेक्षाएँ:
Edit RecordsManage Properties and Classificationsपरिदृश्य:
PersonID=1 होता है।
http://localhost:8101/PersonView.php?PersonID=1
(पहुंच PersonView.php में IDOR के कारण दी गई है)।
PropertyAssign.php में टूटे हुए एक्सेस नियंत्रण के कारण संभव है)।
PersonView.php?PersonID=1) पर जाता है, तो पेलोड तुरंत निष्पादित होगा, और एक अलर्ट बॉक्स दिखाई देगा। हमलावर एडमिनिस्ट्रेटर के सत्र कुकी को चुराने के लिए अधिक उन्नत पेलोड का उपयोग कर सकता है।
यह एक गंभीर विशेषाधिकार वृद्धि भेद्यता है। यह विशिष्ट, उन्नत (लेकिन गैर-एडमिन) अनुमतियों वाले उपयोगकर्ता को एडमिनिस्ट्रेटर के खाते पर पूर्ण नियंत्रण प्राप्त करने की अनुमति देता है। एडमिन के सत्र का अपहरण करके, हमलावर एडमिनिस्ट्रेटर के लिए उपलब्ध किसी भी कार्रवाई को कर सकता है, जिसमें नए एडमिन खाते बनाना, डेटा हटाना, और संभावित रूप से इसे अन्य भेद्यताओं के साथ जोड़कर पूर्ण सर्वर समझौता प्राप्त करना शामिल है।
रिपोर्ट किया गया: Łukasz Rybak
यह CVE समन्वित भेद्यता प्रकटीकरण प्रथाओं का पालन करते हुए जिम्मेदारी से प्रकट किया गया था। यहां प्रदान की गई जानकारी केवल शैक्षिक और रक्षात्मक उद्देश्यों के लिए है।