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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
vbox-hgcm-ssm-cparms — VirtualBox 7.2.20 - उच्च - स्थानीय - हीप ओवरफ़्लो - HGCM SSM cParms रैप | Kitploit
उपकरण/GitHubGitHub/abraxas/vbox-hgcm-ssm-cparms
मेमोरी फोरेंसिकभेद्यता विश्लेषणशोषणसुरक्षा वर्चुअलाइजेशनपेपर और शोधबाइनरी शोषणलैब और अभ्यास
GitHubabraxas/vbox-hgcm-ssm-cparms

vbox-hgcm-ssm-cparms

VirtualBox 7.2.20 - उच्च - स्थानीय - हीप ओवरफ़्लो - HGCM SSM cParms रैप

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

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

सभी देखें →

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

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

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

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

Abraxas Labs - vbox-hgcm-ssm-cparms

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vbox-hgcm-ssm-cparms

vbox-hgcm-ssm-cparms

वर्ग: हीप ओवरफ़्लो पहुँच: स्थानीय (होस्ट)

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44) - Oracle

लाइव HGCM अभी भी cParms > 32 को अस्वीकार करता है। सेव्ड-स्टेट लोड नहीं करता। vmmdevR3HgcmLoadState बिना किसी VMMDEV_MAX_HGCM_PARMS सीमा के .sav से cParms पढ़ता है, फिर uint32_t cbCmd से कमांड का आकार निर्धारित करता है। cParms = 0x4000000 पर वह गुणनफल sizeof(VBOXHGCMCMD) (~120) पर रैप हो जाता है। पहला enmType स्टोर पहले से ही ब्लॉक से परे 4-बाइट लेखन है।

एक होस्ट उपयोगकर्ता जो शत्रुतापूर्ण सेव्ड स्टेट को पुनर्स्थापित करता है, VM-प्रोसेस हीप को ओवरफ़्लो कर देता है। कोई गेस्ट इसे Save के माध्यम से नहीं रोपित कर सकता।

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

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

ऑपरेटर को एक VM फ़ोल्डर सौंपें जिसकी सेव्ड स्टेट में एक लंबित VMMDev HGCM CALL है। वे सेव्ड VM पर Start क्लिक करते हैं, स्नैपशॉट पुनर्स्थापित करते हैं, या .sav को अपनाते हैं। कंसोल पुनर्स्थापन SSMR3 से होकर vmmdevR3LoadExec में और फिर vmmdevR3HgcmLoadState में जाता है। यह UI:R है। शेष बचा हुआ पार्सर है, गेस्ट हाइपरकॉल नहीं।

VMMDev डिफ़ॉल्ट रूप से चालू है। कोई 3D नहीं। कोई Guest Additions नहीं। कोई VRDP नहीं। PUEL नहीं।

विधि और सिंक

चरणकहाँयह क्या प्रदान करता है
पुनर्स्थापनहोस्ट UI / सेव्ड VM पर VBoxManage startvmहोस्ट उपयोगकर्ता शत्रुतापूर्ण .sav खोलता है। यही एकमात्र आवश्यक क्लिक है।
SSM यूनिटVMMDev vmmdevR3HgcmLoadState (VMMDevHGCM.cpp:2043-2091)SSMGetU32 से cParms में, बिना किसी VMMDEV_MAX_HGCM_PARMS (32) सीमा के।
एलोक रैपvmmdevR3HgcmCmdAlloc (VMMDevHGCM.cpp:376-381)uint32_t cbCmd = sizeof(VBOXHGCMCMD) + cParms * (40+24)। cParms = 0x4000000 ~120 पर रैप हो जाता है। उस आकार का RTMemAllocZ हीप बजट के विरुद्ध सफल होता है।
पहला स्टोरलोड लूप paGuestParms[i].enmType (VMMDevHGCM.cpp:2085-2091)paGuestParms वह pCmd + sizeof(VBOXHGCMCMD) है, जो रैप के बाद पहले से ही एलोक का अंत है। पहला टाइप dword एक 4-बाइट OOB लेखन है। स्ट्रीम को केवल CALL हेडर और एक पैरामीटर टाइप की आवश्यकता होती है। इसे 67 मिलियन रिकॉर्ड की आवश्यकता नहीं है।

विशेषाधिकार

प्रकारउद्गमहमलावर को क्या मिलता है
रेकॉनकोई नहींओवरफ़्लो बाइट्स sav-चयनित होते हैं। यह लीक नहीं है। हीप की सामग्री फ़ाइल को वापस नहीं लौटाई जाती।
अखंडताlab-provencParms=0x4000000 uint32_t cbCmd को 120 तक रैप कर देता है। एक i=0 enmType स्टोर एक 0xA5 कैनरी को तोड़ देता है। canary0=56424f58 VBOX-HGCM-SSM-CPARMS-WITNESS का VBOX प्रीफ़िक्स है। नियंत्रण cParms=2 कैनरी को अक्षुण्ण छोड़ता है।
अखंडताअनुमानितआगे के sav-नियंत्रित parm रिकॉर्ड (प्रकार dword के साथ-साथ 32/64-बिट या pointer-desc फ़ील्ड) VirtualBoxVM / VBoxHeadless में ~120-बाइट RTMemAllocZ से रैखिक रूप से लिखते हैं। यह VM प्रक्रिया में एक राइट प्रिमिटिव है, QEMU migration memcorr के समान श्रेणी का। यह पैक इंस्ट्रक्शन-पॉइंटर नियंत्रण प्रदर्शित नहीं करता।
उपलब्धताअनुमानितयदि तोड़फोड़ को नियंत्रित राइट में नहीं बदला जाता तो VBoxVM क्रैश हो जाता है। हार्नेस एक कैनरी स्मैश है, VirtualBox प्रक्रिया क्रैश नहीं।

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

  • गेस्ट-टू-होस्ट नहीं। लाइव vmmdevR3HgcmCallAlloc अभी भी cParms > 32 को अस्वीकार करता है (VMMDevHGCM.cpp:921-926)। कोई गेस्ट वैध Save के माध्यम से रैप को रोप नहीं सकता।
  • होस्ट कर्नेल। अन्य VM। VBoxSVC।
  • होस्ट फ़ाइलें। Windows restricted-token / AppContainer। Project Zero IDispatch 544666386 सार्वजनिक है और यह इस अवशेष का हिस्सा नहीं है।
  • लाइव HGCM आर्ग्युमेंट-साइज़ रैप (CVE-2013-5892 लाइव सिंक)। वह प्रविष्टि इस पिन पर बंद है (VMMDEV_MAX_HGCM_PARMS 32, VMMDEV_MAX_HGCM_DATA_SIZE 128MiB)।
  • पूर्ण होने पर सहोदर offValue / cbValue memcpy एक दूसरा होस्ट-हीप राइट है केवल तब जब HGCM क्लाइंट उसी sav में रिस्टोर करें। यह इस लैब का हिस्सा नहीं है।

पूर्ण होस्ट-यूज़र / होस्ट-कर्नेल के लिए अभी भी एक हार्डनिंग अवशेष की आवश्यकता है। इस स्मैश को सार्वजनिक IDispatch बायपास के साथ जोड़ना खारिज कर दिया गया है।

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

मैंने VirtualBox/virtualbox टैग v7.2.20 पील f2792cf44 को पिन किया। लाइव HGCM पहला पठन था क्योंकि CVE-2013-5892 इसी श्रेणी का था: आर्ग्युमेंट-साइज़ रैप से VBOXHGCMCMD में। लाइव पथ में अभी भी सीमा है:

ASSERT_GUEST_STMT_RETURN(   cParms <= (cbHGCMCall - sizeof(VMMDevHGCMCall)) / cbHGCMParmStruct
                         && cParms <= VMMDEV_MAX_HGCM_PARMS,
                         LogRelMax(50, ("VMMDev: request packet with invalid number of HGCM parameters: ...")),
                         VERR_INVALID_PARAMETER);

लोड नहीं करता। vmmdevR3HgcmLoadState sav से cParms लेता है और उसी allocator को कॉल करता है:

const uint32_t cbCmd = sizeof(VBOXHGCMCMD) + cParms * (sizeof(VBOXHGCMGUESTPARM) + sizeof(VBOXHGCMSVCPARM))
                     + (enmCmdType == VBOXHGCMCMDTYPE_CONNECT ? sizeof(HGCMServiceLocation) : 0);

AssertCompile की इस पिन पर टिप्पणियाँ CMD को 120, guestparm को 40, svcparm को 24 पर रखती हैं। cParms = 0x4000000 64-बिट गुणनफल को 0x100000000 + 120 बनाता है। uint32_t में स्टोर 120 रखता है। फिर:

for (i = 0; i < cParms; ++i)
{
    VBOXHGCMGUESTPARM * const pGuestParm = &pCmd->u.call.paGuestParms[i];
    rc = pHlp->pfnSSMGetU32(pSSM, &u32);
    pGuestParm->enmType = (HGCMFunctionParameterType)u32;

paGuestParms, pCmd + sizeof(VBOXHGCMCMD) पर स्थित है। रैप के बाद वह alloc का अंत है। पहला स्टोर पहले से ही OOB है।

पहले से दर्ज गलत रास्ते: लाइव HGCM को अवशेष मानना (यह अभी भी 32 पर सीमित है); harness में 67 मिलियन स्टोर्स पर चलना (पहला dword ही प्रमाण है); यह दावा करना कि कोई guest इसे Save के माध्यम से लगा सकता है; VM-प्रोसेस heap smash को host-kernel escape तक बढ़ाना; सार्वजनिक IDispatch को चेन करना।

नाटक: एक reverse shell, एक .sav parser, VirtualBox को बूट करना। oracle रैप के साथ-साथ VBOX-HGCM-SSM-CPARMS-WITNESS का canary smash है।

Lab

cd lab
./run.sh

या पैक रूट से:

python3 vbox-hgcm-ssm-cparms-Abraxas-Labs.py

लूपबैक 127.0.0.1:19210 पर स्रोत हार्नेस। Compose प्रोजेक्ट vbox-hgcm-ssm-cparms। gadget.c पिन आकारों, uint32_t cbCmd सूत्र, लाइव 32 कैप, और एक लोड-पाथ enmType स्टोर की प्रतिलिपि करता है। यह VirtualBox को बूट नहीं करता और यह .sav को पार्स नहीं करता। इसे लूपबैक से बाइंड करें।

SUCCESS vbox-hgcm-ssm-cparms wrap=yes oob=yes live-cap=32 canary-smashed=yes VBOX-HGCM-SSM-CPARMS-WITNESS

समाधान

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