] यह लेख GO में विशेषाधिकारों को छोड़ने के मुद्दे की पड़ताल करता है और एक समाधान प्रदान करता है।
के पहले संस्करणों में, syscall.setuid () का उपयोग करने के लिए विशेषाधिकारों को छोड़ने के लिए "समर्थित नहीं होगा।" एक विकल्प के रूप में, कोई भी Iptables का उपयोग करके एक गैर-निजीकृत पोर्ट पर पोर्ट 80 को पुनर्निर्देशित कर सकता है। हालाँकि, यह समाधान गैर-रूट प्रक्रियाओं को वेब सर्वर को लागू करने की अनुमति देकर सुरक्षा कमजोरियों को खोलता है।
समाधान GO की नेटवर्किंग और सिस्टम कॉल क्षमताओं के संयोजन का उपयोग करने में निहित है। विशेषाधिकार प्राप्त पोर्ट को खोलने और यूआईडी का निर्धारण करने के बाद, हम वांछित उपयोगकर्ता की पहचान कर सकते हैं, उनके यूआईडी प्राप्त कर सकते हैं, और यूआईडी और जीआईडी दोनों को GLIBC फ़ंक्शंस सेटगिड () और सेटुइड () का उपयोग करके सेट कर सकते हैं। पोर्ट को बांधने के तुरंत बाद इस कोड को निष्पादित करना महत्वपूर्ण है, लेकिन http.serve पर कॉल करने से पहले। प्रदान किया गया कोड स्निपेट इस दृष्टिकोण को प्रदर्शित करता है। यह पहले आवश्यक टीएलएस प्रमाणपत्र लोड करता है और एक विशेषाधिकार प्राप्त पोर्ट पर सुनता है। यदि एप्लिकेशन रूट के रूप में चल रहा है, तो यह GLIBC कॉल का उपयोग करके UID और GID सेट करके एक निर्दिष्ट उपयोगकर्ता को डाउनग्रेड करता है। इसके बाद, यह आने वाले अनुरोधों के लिए सुनता है और वेब सामग्री परोसता है। यह सुरक्षा से समझौता किए बिना सुरक्षित और मजबूत कस्टम वेब सर्वर के निर्माण की अनुमति देता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3