क्यों "नोड" में / etc / fstab इतना महत्वपूर्ण है? हैकिंग के लिए चरित्र उपकरणों का उपयोग कैसे किया जा सकता है?


19

मैं लिनक्स सुरक्षा के बारे में सीख रहा हूं और यह समझने के लिए संघर्ष कर रहा हूं कि क्यों इस पर एक चरित्र उपकरण के साथ एक यूएसबी स्टिक संभावित खतरनाक है।

अगर मेरे पास एक bash निष्पादक के साथ USB स्टिक है, जिस पर रूट सेट किया गया है, तो खतरा स्पष्ट है: अगर मेरे पास कोई प्रविष्टि है तो ऐसी USB स्टिक वाला कोई भी व्यक्ति मेरे कंप्यूटर पर रूट विशेषाधिकार प्राप्त कर सकता है

/dev/sdb1 /media/usbstick auto defaults 0 0

मेरे में /etc/fstabक्योंकि defaultsशामिल suid

लेकिन चरित्र उपकरणों के बारे में क्या? मैं एक चरित्र डिवाइस का उपयोग कैसे करता है, तो उस पर एक चरित्र उपकरण के साथ एक यूएसबी स्टिक के साथ घुड़सवार हो जाता है रूट विशेषाधिकारों या तोड़ सामान हासिल करने के लिए कर सकते हैं devया defaults?

जवाबों:


31

क्योंकि अंतर्निहित डिवाइस तक पहुंच केवल डिफ़ॉल्ट रूप से फ़ाइल अनुमतियों द्वारा नियंत्रित की जाती है, इसलिए यदि आपके यूएसबी स्टिक में सिस्टम में वास्तविक डिवाइस के अनुरूप एक विश्व-लिखने योग्य डिवाइस नोड के साथ एक पॉसिक्स फाइलसिस्टम है, तो आप संबंधित तक पहुंचने के लिए उस डिवाइस नोड का उपयोग कर सकते हैं। डिवाइस एक "सादे" उपयोगकर्ता के रूप में। एक ऑडियो डिवाइस, आपके वेब कैमरा, /dev/sda(जो एक चरित्र डिवाइस के बजाय एक ब्लॉक डिवाइस है, लेकिन तर्क समान है) के अनुरूप डिवाइस की कल्पना करें ...

यहां चीजों को स्पष्ट करने के लिए एक उदाहरण दिया गया है। कहो कि आप एक्सेस करना चाहते हैं /dev/sda(तब आप डिस्क की सामग्री के साथ बहुत कुछ कर सकते हैं, जिसमें एक प्रोग्राम रोपण भी शामिल है जो आपको बनने देगा root। यह एक ब्लॉक डिवाइस है लेकिन समस्या चरित्र उपकरणों के साथ समान है)। आपके लक्ष्य प्रणाली पर, ls -l /dev/sdaदिखाता है

brw-rw----  1 root disk      8,   0 Sep  8 11:25 sda

इसका अर्थ /dev/sdaहै एक ब्लॉक डिवाइस ( bलाइन की शुरुआत में), जिसमें प्रमुख संख्या 8 और छोटी संख्या 0 ( 8, 0लाइन के मध्य में) है। डिवाइस केवल root(पढ़ने / लिखने) और diskसमूह के सदस्यों (पढ़ने / लिखने) के लिए ही सुलभ है ।

अब इस प्रणाली की कल्पना करें जो आप नहीं बन सकते हैं rootलेकिन किसी कारण से आप बिना उपयोगकर्ता के रूप में यूएसबी स्टिक माउंट कर सकते हैं nodev। एक अन्य प्रणाली पर, जहाँ आप हैं root, आप अपने USB कुंजी पर एक विशेष फ़ाइल बना सकते हैं:

mknod -m 666 usersda b 8 0

यह एक विशेष फ़ाइल बनाएगा usersda, जिसे सभी द्वारा पढ़ा जा सकता है।

अपने लक्ष्य प्रणाली पर कुंजी माउंट करें और हे presto, आप usersdaउसी तरह से डिवाइस का उपयोग कर सकते हैं /dev/sda, लेकिन कोई एक्सेस प्रतिबंध नहीं ...

(यह एन्क्रिप्टेड फ़ाइल सिस्टम के साथ भी काम करेगा, जब तक आप डिक्रिप्ट किए गए मैपर डिवाइस तक पहुंचने में सक्षम होते हैं: डिवाइस बनाएं जो उपयुक्त /dev/mapperप्रविष्टि से मेल खाता है ।)


यह दिलचस्प लगता है! लेकिन मुझे यकीन नहीं है कि मैं इसे समझता हूं। एक डिवाइस एक फाइल है और फाइल इनोड के माध्यम से एक्सेस की जाती है। मेरे USB स्टिक पर नकली डिवाइस का एक अलग इनकोड होगा और इसलिए यह एक अलग डिवाइस होगा, है ना?
रोजी

7
एक डिवाइस एक विशेष फ़ाइल है, जिसमें एक बड़ी और छोटी संख्या होती है; यदि आप करते हैं तो आप देख सकते हैं ls -l /dev, वे दो नंबर हैं जो फ़ाइल आकार के बजाय दिखाई देते हैं। कर्नेल उन नंबरों का उपयोग करते हुए ड्राइवर के साथ एक डिवाइस विशेष फ़ाइल से मेल खाता है, इसलिए आपके पास कई फाइलें हो सकती हैं जो एक ही कर्नेल ड्राइवर और डिवाइस को इंगित करती हैं। विशेष फ़ाइलों का उपयोग कर बनाया जाता है mknod
स्टीफन किट

ध्यान दें कि /dev/tty*डिवाइस कैरेक्टर डिवाइस हैं, और आपके टर्मिनल सत्रों और / या सिस्टम कंसोल तक पूर्ण पढ़ने / लिखने की सुविधा प्राप्त करने वाला एक घुसपैठिया, जो टर्मिनल एमुलेटर सुविधाओं के साथ संयुक्त है, सभी प्रकार के
नॉटी

1
@ बहुत बहुत, हाँ। यह थोड़ा और सामान्य है; मैं कहता हूं कि "व्याख्या" का अर्थ है "डिवाइस फ़ाइलों को डिवाइस नोड्स के रूप में व्यवहार करें, न कि सादे फ़ाइलें"।
स्टीफन किट

1
@ n00b आप माउंट नहीं कर सकते usersda, लेकिन आप कम से कम इसका उपयोग अंतर्निहित डिस्क से बिना किसी प्रतिबंध के पढ़ने के लिए कर सकते हैं, और संभवतः इसे भी लिख सकते हैं। आप सभी डिस्क की सामग्री को आसानी से कॉपी कर सकते हैं, और उपकरण जैसे कि debuge2fs, अधिलेखित /etc/shadowआदि
स्टीफन किट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.