
प्रमाण-अवधारणा जो Matomo के SiteContentDetector में एक प्रमाणित ब्लाइंड SSRF का प्रदर्शन करती है, जो निर्मित साइट URL के माध्यम से आंतरिक नेटवर्क की टोह लेने और आंतरिक सेवाओं को अनुरोध भेजने की अनुमति देती है।
नाम: CYBER-SEC
संपर्क: [email protected]
Matomo एक प्रमाणित साइट व्यवस्थापक को साइट के main_url को आंतरिक पते के साथ कॉन्फ़िगर करने की अनुमति देता है। कोई भी प्रमाणित उपयोगकर्ता जिसके पास व्यू एक्सेस है, बाद में getTrackingMethodsForSite ट्रिगर कर सकता है, जिससे सर्वर कॉन्फ़िगर किए गए URL पर एक ब्लाइंड HTTP अनुरोध करता है।
गंतव्य को केवल होस्टनाम-आधारित सुरक्षा के साथ मान्य किया जाता है और रिज़ॉल्यूशन के बाद लूपबैक, RFC1918, या लिंक-लोकल पतों को ठीक से अस्वीकार नहीं करता है। परिणामस्वरूप, एप्लिकेशन का दुरुपयोग आंतरिक सेवाओं के लिए ब्लाइंड सर्वर-साइड अनुरोध करने के लिए किया जा सकता है।
उत्पाद: Matomo
प्रभावित संस्करण: 5.11.2 सत्यापित
घटक: SiteContentDetector / SitesManager
वेक्टर: CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:L/I:N/A:N
आधार स्कोर: 5.8 मध्यम
enable_internet_features सक्षम होना चाहिए।main_url सेट करने के लिए एक प्रमाणित साइट व्यवस्थापक की आवश्यकता होती है।यह मुद्दा निम्नलिखित प्रवाह से संबंधित है:
स्रोत:
SitesManager.updateSite बुनियादी URL सत्यापन के बाद main_url संग्रहीत करता है।
ट्रिगर:
GET /index.php?module=SitesManager&action=getTrackingMethodsForSite&idSite=<id>
सिंक:
SiteContentDetector::requestSiteResponse()
-> Http::sendHttpRequestBy()
कार्यान्वयन आंतरिक गंतव्यों जैसे कि निम्नलिखित को ठीक से अस्वीकार नहीं करता है:
127.0.0.0/8
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
169.254.0.0/16
::1
fc00::/7
fe80::/10
रीडायरेक्ट लक्ष्यों को भी पुनः मान्य किया जाना चाहिए, क्योंकि होस्टनाम-आधारित फ़िल्टरिंग को बायपास किया जा सकता है यदि प्रारंभिक अनुमत होस्टनाम किसी आंतरिक पते पर रीडायरेक्ट करता है।
अधिकृत लैब वातावरण में अपने नियंत्रण वाले लिसनर का उपयोग करें:
python3 -m http.server 8088
एक प्रमाणित साइट व्यवस्थापक के रूप में, साइट के main_url को नियंत्रित आंतरिक लिसनर की ओर इंगित करने के लिए कॉन्फ़िगर करें:
http://<controlled-internal-listener>:8088/ssrf-test
तृतीय-पक्ष सिस्टम या क्लाउड मेटाडेटा एंडपॉइंट के विरुद्ध परीक्षण न करें जब तक कि आप उस वातावरण के स्वामी न हों और उसका परीक्षण करने के लिए अधिकृत न हों।
व्यू अनुमति वाले प्रमाणित उपयोगकर्ता के रूप में, ट्रिगर करें:
GET /index.php?module=SitesManager&action=getTrackingMethodsForSite&idSite=1
नियंत्रित लिसनर को Matomo सर्वर से एक सर्वर-साइड HTTP अनुरोध प्राप्त होता है।
उदाहरण लिसनर आउटपुट:
GET /ssrf-test HTTP/1.1
Host: <controlled-internal-listener>:8088
User-Agent: Matomo
Matomo getTrackingMethodsForSite ट्रिगर होने पर कॉन्फ़िगर किए गए main_url पर एक सर्वर-साइड GET अनुरोध करता है।
यह एक आंतरिक लूपबैक/आंतरिक HTTP लिसनर का उपयोग करके सत्यापित किया गया था जो बाहरी रूप से पहुंच योग्य नहीं था, जो ब्लाइंड SSRF व्यवहार की पुष्टि करता है।
एक प्रमाणित हमलावर इस व्यवहार का दुरुपयोग निम्नलिखित के लिए कर सकता है:
चूंकि SSRF ब्लाइंड है, हमलावर को Matomo के माध्यम से HTTP प्रतिक्रिया निकाय सीधे प्राप्त नहीं होता है। हालांकि, केवल अनुरोध वितरण भी आंतरिक नेटवर्क और क्लाउड वातावरण में सुरक्षा-प्रासंगिक हो सकता है।
अनुशंसित सुधार:
अनुरोध करने से पहले होस्टनाम को IP पतों में रिज़ॉल्व करें।
DNS रिज़ॉल्यूशन के बाद निजी, लूपबैक, लिंक-लोकल, मल्टीकास्ट और अन्यथा असुरक्षित IP रेंज को अस्वीकार करें।
रीडायरेक्ट का अनुसरण करने से पहले प्रत्येक रीडायरेक्ट लक्ष्य को पुनः मान्य करें।
होस्टनाम ब्लैकलिस्ट के बजाय अनुमत आउटबाउंड डोमेन की सख्त अनुमतिसूची को प्राथमिकता दें।
SSRF सुरक्षाओं को केवल साइट URL कॉन्फ़िगरेशन के दौरान नहीं, बल्कि अंतिम HTTP अनुरोध सिंक पर लगातार लागू करें।
getTrackingMethodsForSite या SiteContentDetector ट्रिगर को उच्च-विशेषाधिकार वाले उपयोगकर्ताओं तक सीमित करने पर विचार करें।
साइट कॉन्फ़िगरेशन द्वारा ट्रिगर किए गए आउटबाउंड सर्वर-साइड अनुरोधों के लिए ऑडिट लॉगिंग जोड़ें।
स्रोत कोड को संशोधित किए बिना आधिकारिक Matomo 5.11.2 Docker छवि के विरुद्ध सत्यापित किया गया।
यह मुद्दा CYBER-SEC द्वारा रिपोर्ट किया गया था।