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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
vbox-guestctrl-copyfrom-dotdot — VirtualBox 7.2.20 - उच्च - स्थानीय - फ़ाइल लेखन - Guest Control copy-from DOTDOT | Kitploit
उपकरण/GitHubGitHub/abraxas/vbox-guestctrl-copyfrom-dotdot
विशेषाधिकार वृद्धिभेद्यता विश्लेषणकोड विश्लेषणशोषणसुरक्षा वर्चुअलाइजेशनपेपर और शोधलैब और अभ्यास
GitHubabraxas/vbox-guestctrl-copyfrom-dotdot

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

सभी देखें →

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

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

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

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

vbox-guestctrl-copyfrom-dotdot

VirtualBox 7.2.20 - उच्च - स्थानीय - फ़ाइल लेखन - Guest Control copy-from DOTDOT

रिपॉजिटरी देखें
35 दिन पहलेअभी तक समीक्षित नहीं

Abraxas Labs - vbox-guestctrl-copyfrom-dotdot

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vbox-guestctrl-copyfrom-dotdot

vbox-guestctrl-copyfrom-dotdot

वर्ग: फ़ाइल लेखन पहुँच: स्थानीय (गेस्ट) भ्रमित-डिप्टी

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44) - Oracle

होस्ट IGuestSession::directoryCopyFromGuest / VBoxManage guestcontrol copyfrom गेस्ट DIR_NOTIFY नामों को गंतव्य पर जोड़ता है। FsList::AddDirFromGuest केवल सटीक . और .. को छोड़ता है। GuestPath::Translate स्लैश शैली और दोहरे-स्लैश संकुचन है। BuildDestinationPath गंतव्य रूट पर RTPATH_PROP_DOTDOT_REFS को अस्वीकार करता है जिसे होस्ट ने नामित किया, प्रति-प्रविष्टि नामों पर नहीं।

एक गेस्ट जो होस्ट-आरंभित निर्देशिका कॉपी-फ्रॉम का उत्तर .. वाले नामों के साथ देता है, गंतव्य के बाहर VBox UID के रूप में फ़ाइलें लिखता है।

IDअभी तक कोई CVE नहीं
वर्गफ़ाइल लेखन (होस्ट गंतव्य पलायन)
पहुँचस्थानीय (गेस्ट) भ्रमित-डिप्टी। होस्ट कॉपी शुरू करता है। गेस्ट फ़ाइलों के नाम देता है।
CWECWE-22
CVSSउच्च: 8.2 CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
उत्पादOracle VM VirtualBox OSS
प्रभावित7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
प्रमाणीकरणGuest Additions (या एक प्रतिस्थापन HGCM क्लाइंट) तथा एक होस्ट-आरंभित निर्देशिका कॉपी-फ्रॉम
लाइसेंसGNU Affero GPL v3.0
लैबकेवल 127.0.0.1। स्रोत हार्नेस। VirtualBox को बूट नहीं करता।

एक हमलावर क्या कर सकता है

Guest Control डिज़ाइन से होस्ट-से-गेस्ट है। शेष विपरीत है: होस्ट उपयोगकर्ता एक गेस्ट निर्देशिका की प्रतिलिपि बनाता है, और गेस्ट HOST_MSG_DIR_READ का उत्तर GUEST_MSG_DIR_NOTIFY / GUEST_DIR_NOTIFYTYPE_READ नामों के साथ देता है। Main उन नामों को गंतव्य पर जोड़ता है और उन्हें खोलता है।

अखंडता (लैब-प्रमाणित)

विधिसिंकविशेषाधिकार
होस्ट IGuestSession::directoryCopyFromGuest / VBoxManage guestcontrol copyfrom द्वारा गेस्ट निर्देशिका की प्रतिलिपि। गेस्ट लिस्टिंग नाम ../oracle/VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS।CopyFrom::Run करता है strDstAbs = dest + native_sep + pEntry->strPath, फिर GuestPath::Translate, फिर fileCopyFromGuest -> RTFileOpen(RTFILE_O_WRITE | RTFILE_O_OPEN_CREATE)।VBox UID के रूप में गंतव्य के बाहर होस्ट फ़ाइल बनाएँ/अधिलेखित करें। लैब गंतव्य /work/vbox-copy। लैब ने /work/oracle/VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS लिखा। सामग्री गेस्ट-चयनित है (फ़ाइल-पठन सूचना)।

सटीक . और .. निर्देशिका नाम छोड़े जाते हैं और नहीं लिखते। एक फ़ाइल जिसके नाम में .. है, संग्रहीत और जोड़ी जाती है।

अखंडता (अनुमानित, इस लैब में नहीं)

विधिसिंकविशेषाधिकार
वही कॉपी-फ्रॉम। गेस्ट ../../../.ssh/authorized_keys (या DOS ..\..\...) सूचीबद्ध करता है जबकि होस्ट गंतव्य /tmp/vbox-copy / C:\Temp\vbox-copy है।वही जोड़ + RTFileOpen।कोई भी होस्ट पथ बनाएँ या अधिलेखित करें जिसे वह UID लिख सकता है। नेस्टेड --recursive नाम और आगे चलते हैं।

टोह

होस्ट द्वारा पहले से चुने गए गंतव्य के अतिरिक्त कुछ नहीं। गेस्ट इस शेष से अतिरिक्त होस्ट पथ नहीं सीखता।

उपलब्धता (अनुमानित)

उन फ़ाइलों का अधिलेखन जिन्हें VBox UID लिख सकता है। क्रैश शेष नहीं। CVSS A:N।

यह शेष क्या प्रदान नहीं करता

  • होस्ट कर्नेल। अन्य VM। VBoxSVC।
  • एकल-फ़ाइल fileCopyFromGuest: गंतव्य पूरी तरह होस्ट-निर्दिष्ट है; अतिथि केवल उस पथ में बाइट्स प्रदान करता है।
  • अतिथि में प्रतिलिपि: गंतव्य अतिथि पर है। AddDirFromHost होस्ट लिस्टिंग में . / .. को छोड़ देता है।
  • वे फ़ाइलें जिन्हें VBox UID लिख नहीं सकता (/etc एक सामान्य उपयोगकर्ता के रूप में, किसी अन्य उपयोगकर्ता का होम)।
  • Windows प्रतिबंधित टोकन / AppContainer। यह VBox उपयोगकर्ता प्रक्रिया द्वारा लेखन है, कोई हार्डनिंग बायपास नहीं।
  • HOST_MSG_* का अतिथि द्वारा इंजेक्शन। svcCall केवल GUEST_MSG_* को डिस्पैच करता है।
  • guestCtrlValidateDirEntryEx में पथ सैनिटाइज़र। वह जाँच UTF-8/आकार है, .. नहीं।

इसके लिए Guest Additions (या एक प्रतिस्थापन HGCM क्लाइंट जो सत्र का स्वामी हो) और होस्ट-आरंभित निर्देशिका copy-from की आवश्यकता होती है। कोई 3D नहीं। कोई VRDP नहीं। PUEL नहीं। Confused-deputy: होस्ट उपयोगकर्ता एक शत्रुतापूर्ण अतिथि से प्रतिलिपि बनाता है।

मैंने इसे कैसे खोजा

मैंने VirtualBox/virtualbox v7.2.20 (f2792cf44) को पिन किया। Guest Control हंट H04। केवल अतिथि-से-होस्ट। Shared-folder TOCTOU (P0 1037) एक भिन्न सेवा पर एक सहोदर वर्ग है और इस पिन पर बंद है (लेक्सिकल abs के बाद RTPathStartsWith)। Guest Control copy-from DIR_NOTIFY नामों को जोड़ता है, SHFL नामों को नहीं।

AddDirFromGuest अतिथि Name से strEntry बनाता है और केवल सटीक . / .. को छोड़ता है:

Utf8Str strEntry = strPathSub + Utf8Str(bstrName);
switch (enmObjType)
{
    case FsObjType_Directory:
    {
        if (   bstrName.equals(".")
            || bstrName.equals(".."))
        {
            break;
        }
        vrc = AddDirFromGuest(strPath, strEntry);
        break;
    }
    case FsObjType_File:
        vrc = AddEntryFromGuest(strEntry, fsObjInfo->i_getData());
        break;
}

CopyFrom::Run फिर संग्रहीत पथ को dest पर जोड़ता है और केवल अनुवाद करता है:

strDstAbs += PATH_STYLE_SEP_STR(PATH_STYLE_NATIVE);
strDstAbs += pEntry->strPath;
vrc = GuestPath::Translate(strDstAbs, mSession->i_getGuestPathStyle(), PATH_STYLE_NATIVE);
/* directoryCreateOnHost / fileCopyFromGuest -> RTFileOpen WRITE|OPEN_CREATE */

GuestPath::BuildDestinationPath दस्तावेज़ करता है कि "Dotdot directories are forbidden for security reasons" और RTPATH_PROP_DOTDOT_REFS को अस्वीकार करता है। वह कॉल केवल dest root पर है (GuestSessionImplTasks.cpp:1685-1686)। प्रति-प्रविष्टि नाम कभी उससे नहीं गुज़रते। Translate (GuestCtrlPrivate.cpp:2129-2208) slash शैली बदलता है और // को संकुचित करता है। यह .. को अस्वीकार नहीं करता।

पहले से दर्ज गलत मोड़: सटीक . / .. छोड़ने को path sanitizer मानना; यह मानना कि Translate canonicalize करता है; dest-root जाँच को प्रत्येक प्रविष्टि पर लागू करना; source harness के बजाय VM बूट करना; इसे host-kernel escape बताना; single-file copy-from dest या copy-to-guest को बचा हुआ मानना। Theatre: एक reverse shell। Oracle dest के बाहर एक witness फ़ाइल है।

Lab

cd lab
./run.sh

Compose प्रोजेक्ट vbox-guestctrl-copyfrom-dotdot। Loopback 127.0.0.1:19220। pin v7.2.20 peel f2792cf44 का सोर्स हार्नेस: सटीक . / .. का skip, GuestPath::Translate (केवल slash शैली), CopyFrom::Run dest+sep+entry join फिर write/create, dest-root BuildDestinationPath DOTDOT reject। VirtualBox या Guest Additions को boot नहीं करता। इसे loopback से bind करें।

SUCCESS vbox-guestctrl-copyfrom-dotdot skip-dot=yes translate-keeps-dotdot=yes escaped-write=yes dest-root-check-unused-per-entry=yes VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS

समाधान

प्रत्येक जोड़े गए dest को GuestPath::BuildDestinationPath (या RTPathParse RTPATH_PROP_DOTDOT_REFS, या dest के विरुद्ध RTPATHABS_F_STOP_AT_BASE के साथ RTPathAbsEx) के माध्यम से चलाएँ। उन लिस्टिंग नामों को अस्वीकार करें जिनके घटकों में .. शामिल है, केवल सटीक . और .. ही नहीं। dest-root जाँच रखें। यह अपने आप में पर्याप्त नहीं है।

संदर्भ

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