
लेखक: Thomas Stern
दिनांक: 26/01-2023
आयात भाषाओं की कार्यक्षमता के माध्यम से एक मनमाना फ़ाइल अपलोड करना संभव है। यह फ़ाइल एक वेबशेल हो सकती है जो सर्वर पर कोड निष्पादन की अनुमति देगी।
इस भेद्यता के परीक्षण के लिए एक Sitecore 10.3 उदाहरण एक स्थानीय मशीन पर डॉकर के माध्यम से तैयार किया गया था। इस भेद्यता का Sitecore के पिछले संस्करणों पर परीक्षण नहीं किया गया है, लेकिन पुराने संस्करण उसी तकनीक के लिए असुरक्षित हो सकते हैं।
होस्ट: Windows 11 डॉकर फॉर डेस्कटॉप चल रहा है Sitecore 10.3
चूंकि यह एक प्रमाणीकृत भेद्यता है, इसलिए क्रेडेंशियल्स का एक वैध सेट आवश्यक है। इस परीक्षण उदाहरण के लिए admin/b का उपयोग किया गया
टूलबॉक्स Sitecore के कंट्रोल पैनल में पाया जाता है
अब भाषा आयात चुनें
ब्राउज़ चुनकर शुरू करें
इसके बाद टेम्प फ़ोल्डर चुनें 'यह शेल के लिए गंतव्य भी होगा।
परीक्षण के लिए उपयोग किया गया कोड https://github.com/tennc/webshell/blob/master/fuzzdb-webshell/asp/cmdasp.aspx से डाउनलोड किया गया एक सरल वेबशेल दिखाया गया है, ध्यान दें कि डिफ़ॉल्ट cmd के बजाय powershell चलाने के लिए एक छोटा संशोधन किया गया था।
अपलोड बटन चुनें और अपना शेल चुनें और अगला दबाएं
आपका शेल अब अपलोड हो जाना चाहिए
अपलोड किए गए शेल "https://sitename/temp/shell.aspx" पर नेविगेट करके शुरू करें शेल अपलोड होने के साथ अब सिस्टम पर पूर्ण कोड निष्पादन संभव है
भाषा फ़ाइलों को अपलोड करने के लिए कोड को अपलोड की जा रही फ़ाइलों को मान्य करना चाहिए और केवल aspx, exe और अधिक जैसी निष्पादन योग्य फ़ाइलों की अनुमति देनी चाहिए। साथ ही, भाषा फ़ाइलों को केवल ऐसे निर्देशिका में अपलोड किया जाना चाहिए जो कोड निष्पादन की अनुमति न दे। ऐसा करने का एक तरीका web.config में नीचे दिए गए अनुसार एक ब्लॉक नियम जोड़ना है। ध्यान दें कि यह दोनों फ़ाइलों के सभी अनुरोधों को ब्लॉक करेगा।
<rule name="BlockFileUpload" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" />
<conditions logicalGrouping="MatchAny">
<add input="{URL}" pattern="*sitecore/shell/Applications/Files/FileBrowser.aspx" />
<add input="{URL}" pattern="*sitecore/shell/Applications/Dialogs/Upload/Upload2.aspx" />
</conditions>
<action type="CustomResponse" statusCode="404" statusReason="File or directory not found." statusDescription="The resource you are looking for might have been removed, had its name changed, or is temporarily unavailable." />
</rule>