Apache-Solr-RCE-via-Velocity-template
संदर्भ लिंक
भेद्यता उत्पन्न होने के कारण:
- जब कोई हमलावर सीधे Solr कंसोल तक पहुंच सकता है, तो वह /节点名/config जैसे POST अनुरोध भेजकर उस नोड की कॉन्फ़िगरेशन फ़ाइल में बदलाव कर सकता है।
- Apache Solr डिफ़ॉल्ट रूप से VelocityResponseWriter प्लगइन को एकीकृत करता है। इस प्लगइन के प्रारंभिकरण पैरामीटर में मौजूद params.resource.loader.enabled विकल्प यह नियंत्रित करता है कि क्या पैरामीटर संसाधन लोडर को Solr अनुरोध पैरामीटर में टेम्पलेट निर्दिष्ट करने की अनुमति है; डिफ़ॉल्ट मान false है। जब params.resource.loader.enabled को true पर सेट किया जाता है, तो उपयोगकर्ता को अनुरोध में पैरामीटर सेट करके संबंधित संसाधनों के लोडिंग को निर्दिष्ट करने की अनुमति मिलती है, जिसका अर्थ है कि हमलावर एक खतरनाक अनुरोध बनाकर सर्वर पर कमांड निष्पादन कर सकता है।
भेद्यता पुनरुत्पादन : आवर्ती भेद्यता
विधि 1: मैन्युअल जाँच
मुख्य इंटरफ़ेस में प्रवेश करने के लिए http://x.x.x.x:8983/solr/#/ पर जाएं, बाईं ओर स्थित Core Selector पर क्लिक करके संग्रह का नाम देखें।

निम्नलिखित दो payload का उपयोग करें
-
संग्रह सेटिंग्स संशोधित करें

-
कमांड निष्पादन
कमांड सफलतापूर्वक निष्पादित हुआ!
विधि 2: स्क्रिप्ट के माध्यम से जाँच


भेद्यता सुधार सुझाव:
- नेटवर्क सेटिंग्स केवल विश्वसनीय ट्रैफ़िक को Solr के साथ संचार करने की अनुमति दें, ऐसा सुनिश्चित करने की अनुशंसा की जाती है।
यह अनुशंसा की जाती है कि नेटवर्क सेटिंग्स केवल विश्वसनीय ट्रैफ़िक को Solr के साथ संचार करने की अनुमति दें।
- params.resource.loader.enabled को false पर सेट करें, फिर कॉन्फ़िगरेशन फ़ाइल को केवल-पठनीय बनाएं।
params.resource.loader.enabled को false के रूप में निर्दिष्ट करें, फिर कॉन्फ़िगरेशन फ़ाइल को केवल-पठनीय बनाएं।
डिफ़ॉल्ट रूप से, params.resource.loader.enabled false होने पर कोई कॉन्फ़िगरेशन फ़ाइल नहीं होती है। यदि आप इसका संबंधित मान बदलना चाहते हैं या जबरन बदलना चाहते हैं, तो आपको कॉन्फ़िगरेशन फ़ाइल की आवश्यकता होती है।
डिफ़ॉल्ट रूप से, params.resource.loader.enabled false है। कोई कॉन्फ़िगरेशन फ़ाइल नहीं है। यदि आप इसके संबंधित मान को संशोधित करना चाहते हैं या जबरन संशोधन करना चाहते हैं, तो आपको फ़ाइल कॉन्फ़िगर करने की आवश्यकता है।
डिफ़ॉल्ट रूप से, node की कॉन्फ़िगरेशन फ़ाइल configoverlay.json में पढ़ने-लिखने की अनुमति होती है।
डिफ़ॉल्ट रूप से, node कॉन्फ़िगरेशन फ़ाइल configoverlay.json एक पढ़ने-लिखने की अनुमति वाली कॉन्फ़िगरेशन फ़ाइल है।
कॉन्फ़िगरेशन फ़ाइल पथ: (वास्तविक स्थिति के अनुसार)
पथ: (वास्तविक स्थिति पर निर्भर करता है)
./example/example-DIH/solr/db/conf/configoverlay.json:
./example/example-DIH/solr/mail/conf/configoverlay.json:
./example/example-DIH/solr/solr/conf/configoverlay.json:
सभी configoverlay.json में params.resource.loader.enabled को false पर सेट करें। यदि configoverlay.json मौजूद नहीं है, तो मैन्युअल रूप से एक बनाने और फिर उसकी अनुमति को केवल-पठनीय (read-only) पर सेट करने की अनुशंसा की जाती है।
सभी configoverlay.json में params.resource.loader.enabled को false पर सेट करें। यदि configoverlay.json नहीं है, तो मैन्युअल रूप से एक बनाने और फिर उसकी अनुमतियों को केवल पढ़ने के लिए सेट करने की अनुशंसा की जाती है।
EXP विवरण:
- हमें node खोजने की आवश्यकता है और यह पता लगाने के लिए ट्रैवर्स करना होगा कि कौन से node POST किए जा सकते हैं।
हमें nodes खोजने की आवश्यकता है और उन nodes का पता लगाना है जिन पर POST किया जा सकता है।
- हमें ऑपरेटिंग सिस्टम संस्करण का पता लगाना होगा और कमांड दर्ज करके ऑपरेशन निष्पादित करना होगा।
इसके अलावा, हमें ऑपरेटिंग सिस्टम संस्करण का निर्धारण करना होगा और ऑपरेशन करने के लिए कमांड दर्ज करने का निर्णय लेना होगा।