
Advanced Custom Fields: Extended <= 0.9.2.5 - '_acf_post_id' पैरामीटर के लिए सत्यापन बाईपास के माध्यम से बिना प्रमाणीकरण के विशेषाधिकार वृद्धि
Advanced Custom Fields: Extended <= 0.9.2.5 - बिना प्रमाणीकरण के विशेषाधिकार वृद्धि, '_acf_post_id' पैरामीटर के सत्यापन बाईपास के माध्यम से यह गंभीर सुरक्षा भेद्यता (CVSS 9.8) लोकप्रिय WordPress प्लगइन Advanced Custom Fields: Extended (ACF Extended) के संस्करण 0.9.2.5 से शुरू होने वाले सभी संस्करणों को प्रभावित करती है।
यद्यपि इसे संस्करण 0.9.2.6 में ठीक कर दिया गया था, यह भेद्यता निम्नानुसार काम करती है:
समस्याग्रस्त फ़ंक्शन: इस भेद्यता की जड़ में after_validate_save_post() फ़ंक्शन द्वारा _acf_post_id नामक POST पैरामीटर पर किया गया अनियंत्रित भरोसा है। प्लगइन इस पैरामीटर को किसी भी सत्यापन या प्रमाणीकरण प्रक्रिया के अधीन नहीं करता है।
सत्यापन बाईपास: _acf_post_id पैरामीटर में हेरफेर करके, हमलावर फ़ंक्शन को चुपचाप एक क्लीनअप शाखा चुनने के लिए मजबूर करता है, जो "acfe:" उपसर्ग न रखने वाली सभी सत्यापन त्रुटियों को अनदेखा कर देती है। यह दो महत्वपूर्ण सुरक्षा जाँचों को अक्षम कर देता है:
एक भूमिका अनुमति सूची सत्यापन त्रुटि, जिसे acfe_field_user_roles::validate_front_value() द्वारा जोड़ा गया है।
**एडमिनिस्ट्रेटर विशेषाधिकार सुरक्षा त्रुटि, जो acfe_module_form_action_user::validate_action() द्वारा जोड़ी गई है।
अनधिकृत एडमिनिस्ट्रेटर निर्माण: इन जाँचों को बाईपास करने के बाद, wp_insert_user() फ़ंक्शन हमलावर द्वारा प्रदान किए गए "administrator" भूमिका तर्क के साथ निष्पादित होता है। परिणामस्वरूप, एक बिना प्रमाणीकृत उपयोगकर्ता द्वारा सिस्टम पर एक नया एडमिनिस्ट्रेटर खाता बनाया जाता है, जो प्लगइन के इच्छित उद्देश्य के विपरीत है।
एक्सप्लॉइट कोड का तार्किक प्रवाह निम्नलिखित Python स्क्रिप्ट एक प्रूफ-ऑफ-कॉन्सेप्ट है, जो दर्शाती है कि इस भेद्यता का कैसे शोषण किया जा सकता है। यह कोड सभी आवश्यक चरणों को स्वचालित करके काम करता है।