
Tutor LMS प्लगइन में प्रमाणित IDOR / भंग एक्सेस नियंत्रण
अस्वीकरण: यह रिपॉजिटरी केवल शैक्षिक उद्देश्यों और नैतिक प्रकटीकरण के लिए बनाई गई है। यह भेद्यता विक्रेता को जिम्मेदारीपूर्वक सूचित कर दी गई है और इसे पैच कर दिया गया है। उचित प्राधिकरण के बिना सिस्टम का शोषण करने के लिए इस जानकारी का उपयोग न करें।
असुरक्षित प्रत्यक्ष ऑब्जेक्ट संदर्भ (IDOR) / टूटा एक्सेस नियंत्रण भेद्यता WordPress के लिए Tutor LMS प्लगइन (संस्करण <= 3.9.5) में खोजी गई थी। यह दोष Tutor Instructor भूमिका वाले कम-विशेषाधिकार वाले उपयोगकर्ता को अनधिकृत बल्क कार्रवाई करने की अनुमति देता है, जैसे कि प्रकाशन स्थिति बदलना या अन्य प्रशिक्षकों या व्यवस्थापकों के स्वामित्व वाले पाठ्यक्रमों को स्थायी रूप से हटाना।
एक वैध बैकएंड अनुरोध को रोककर और पाठ्यक्रम आईडी पैरामीटर के साथ छेड़छाड़ करके, एक हमलावर इच्छित एक्सेस नियंत्रणों को दरकिनार कर सकता है। वास्तविक दुनिया के परिदृश्य में, यह दुर्भावनापूर्ण अभिनेताओं को बहु-प्रशिक्षक बाज़ार में प्रतिस्पर्धी पाठ्यक्रमों को तोड़फोड़ने की अनुमति देता है, जिससे प्रत्यक्ष व्यवधान, राजस्व हानि और प्रतिष्ठा क्षति होती है।
<= 3.9.53.9.6मुख्य समस्या प्लगइन के बल्क एक्शन हैंडलर में ऑब्जेक्ट-स्तरीय प्राधिकरण जांच की कमी से उत्पन्न होती है।
फ़ाइल: tutor/classes/Course_List.php
फ़ंक्शन: course_list_bulk_action()
1. अमान्य-रहित ऑब्जेक्ट पहचानकर्ता:
फ़ंक्शन उपयोगकर्ता-नियंत्रित इनपुट (bulk-action और bulk-ids) को सीधे HTTP अनुरोध से स्वीकार करता है। जबकि प्लगइन सत्यापित करता है कि उपयोगकर्ता के पास पाठ्यक्रम प्रबंधित करने की सामान्य क्षमता है, यह bulk-ids सरणी में दिए गए विशिष्ट आईडी के लिए प्रति-पाठ्यक्रम स्वामित्व सत्यापित करने में पूरी तरह विफल रहता है।
2. स्वामित्व सत्यापन के बिना निष्पादन:
जब स्थिति अद्यतन पथ (update_course_status()) या विलोपन पथ (bulk_delete_course()) ट्रिगर होता है, तो कोड हमलावर-आपूर्ति किए गए आईडी पर पुनरावृति करता है। यह WHERE ID IN (...) खंड का उपयोग करके डेटाबेस संचालन (जैसे, cp_posts.post_status अपडेट करना) निष्पादित करता है, बिना $post_author == $current_user_id सुनिश्चित करने के लिए कोई शर्त जोड़े।
चूंकि हैंडलर ऑब्जेक्ट-स्तरीय प्राधिकरण लागू नहीं करता है, बल्क एक्शन वर्कफ़्लो तक पहुंच रखने वाला कोई भी प्रशिक्षक मनमाने पाठ्यक्रम आईडी में हेरफेर कर सकता है।
निम्नलिखित चरण दर्शाते हैं कि कैसे एक प्रमाणित Tutor Instructor किसी अन्य प्रशिक्षक के पाठ्यक्रम की स्थिति बदल सकता है।
course_id की पहचान करें। (जैसे, ID: 27)./wp-admin/admin.php?page=tutor) पर जाएं। अपने स्वामित्व वाला कोई भी पाठ्यक्रम चुनें, स्थिति परिवर्तन क्रिया चुनें (जैसे, "draft" पर सेट करें), और "Apply" पर क्लिक करें।/wp-admin/admin-ajax.php पर आउटबाउंड POST अनुरोध को रोकने के लिए Burp Suite जैसे प्रॉक्सी टूल का उपयोग करें।status पैरामीटर को trash (या pending, private) में बदलें।id पैरामीटर को अपने पाठ्यक्रम आईडी से पीड़ित के पाठ्यक्रम आईडी (27) में बदलें।{"success":true} के साथ प्रतिक्रिया करता है। पीड़ित का पाठ्यक्रम सफलतापूर्वक कचरे में ले जाया जाता है और सार्वजनिक फ्रंटएंड से गायब हो जाता है।