Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

الخلاصاتاتصالالخصوصية© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
vbox-ovf-href-dest-escape — VirtualBox 7.2.20 - عالية - محلية - كتابة ملف - هروب وجهة href في OVF | Kitploit
أدوات/GitHubGitHub/abraxas/vbox-ovf-href-dest-escape
تصعيد الامتيازاتتحليل الثغرات الأمنيةتحليل الكودالاستغلالالمحاكاة الافتراضية للأمانالأوراق والأبحاثمختبرات وتدريب عملي
GitHubabraxas/vbox-ovf-href-dest-escape

vbox-ovf-href-dest-escape

VirtualBox 7.2.20 - عالية - محلية - كتابة ملف - هروب وجهة href في OVF

عرض المستودع
2منذ 2 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Abraxas Labs - vbox-ovf-href-dest-escape

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vbox-ovf-href-dest-escape

vbox-ovf-href-dest-escape

الفئة: كتابة ملف الوصول: محلي (المضيف) UI:R

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44) - Oracle

مستخدم مضيف يستورد ملف OVF/OVA خبيثًا يكتب بايتات صورة القرص خارج مجلد الجهاز الظاهري الجديد. ovf:href هو اسم ملف الوجهة. لا يأخذ RTPathAbsExCxx الخيار RTPATHABS_F_STOP_AT_BASE. تُدرج أداة المسار الفريد _%i قبل اللاحقة ولا تُزيل اسم الأساس.

المعرّفلا يوجد CVE بعد
الفئةكتابة ملف (مسار وجهة OVF/OVA)
الوصولمحلي (المضيف) UI:R (الضحية يستورد جهازًا افتراضيًا خبيثًا)
CWECWE-22
CVSSعالٍ: 7.8 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
المنتجOracle VM VirtualBox OSS
المتأثر7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
المصادقةلا شيء على VirtualBox. يفتح مستخدم المضيف File/Import أو VBoxManage import.
الترخيصGNU Affero GPL v3.0
المختبر127.0.0.1 فقط. أداة اختبار المصدر. لا يتم إقلاع VirtualBox.

ما يمكن للمهاجم فعله

أرسل دليل OVF أو ملف OVA. ضع ../somewhere/disk.vmdk أو مسارًا مطلقًا /path/disk.iso في ovf:href. يقوم المشغّل الذي يستورده بكتابة بايتات صورة القرص تلك عبر CREATE_REPLACE بصلاحيات المستخدم المستورد، بما في ذلك الأدلة الأصلية غير الموجودة. اللاحقة مطلوبة (vmdk / iso / امتدادات MediumFormat الأخرى). هذا ليس إسقاطًا بلا لاحقة لملف authorized_keys.

الصلاحيةالطريقة + نقطة الوصولما تمنحهالمصدر
السلامةIAppliance::read ينسخ File/href دون إزالة اسم الأساس (ovfreader.cpp). Appliance::interpret() يضبط الوجهة = di.strHref (ApplianceImplImport.cpp 802-851).اسم ملف الوجهة يختاره المهاجم، بما في ذلك ../ والمسارات المطلقة.مُثبت مختبريًا (روابط href نسبية ومطلقة)
السلامةi_ensureUniqueImageFilePath (ApplianceImpl.cpp 1126-1160) يستدعي RTPathAbsExCxx(strAbsName, aMachineFolder, aName) دون RTPATHABS_F_STOP_AT_BASE. التصادم يُدرج _%i قبل لاحقة aName، وليس اسم الأساس.الوجهة الفريدة لا تزال تخرج عن مجلد الجهاز. يصبح ../oracle/WITNESS.vmdk هو ../oracle/WITNESS_1.vmdk.مُثبت مختبريًا (unique-keeps-dotdot=yes)
السلامةالاستيراد i_importOneDiskImage AbsEx مرة أخرى (ApplianceImplImport.cpp 4169-4171). i_importCreateAndWriteDestinationFile (1043-1053) ينشئ الدليل الأصلي ثم RTFILE_O_CREATE_REPLACE.بايتات صورة القرص تستقر خارج مجلد الجهاز. رابط href المطلق يتجاهل مجلد الجهاز. ملف التحكم disk.vmdk يبقى داخل المجلد.مُثبت مختبريًا (relative-escape=yes absolute-href=yes control-in-folder=yes)
الاستطلاعمعالج الاستيراد / VBoxManage import --dry-run يُظهر الوجهة.المسار مرئي. ليس تسريبًا لسر بحد ذاته.مُستنتج
التوافروجهة نسبية تستقر على قرص جهاز ظاهري آخر.الكتابة فوق ذلك الملف بصلاحيات المستخدم المستورد.مُستنتج (نفس كتابة CREATE_REPLACE)
مغلقوجهة بلا لاحقة MediumFormatالاستيراد يرمي has no extension. ليس كتابة بلا لاحقة لـ authorized_keys / crontab.مغلق
مغلقوجهة NVRAMتُفرض إلى {vmname}.nvram تحت مجلد الجهاز.مغلق
مغلقاسم الجهاز ..sanitiseMachineFilename يشوّهه.مغلق
مغلقالمجلدات المشتركة / ExtraData / serial RawFileمُعقّمة على مسار vbox:Machine.مغلق
مغلقنواة المضيف، من الضيف إلى المضيفليس هذه البقايا. لا يلزم بدء الجهاز. نفس UID الخاص بالمستورد.مغلق

OVA هو المسار النظيف: عضو tar يوفّر البايتات، وhref يوفّر الوجهة المُهرَّبة. لا 3D، ولا Guest Additions، ولا VRDP، ولا PUEL.

كيف وجدته

توقفت عند الوسم v7.2.20 (f2792cf44) بعد تحديث CPU لشهر سبتمبر 2026 وقرأت استيراد OVF. إن ExtraData والمجلدات المشتركة ووجهة NVRAM وRawFile التسلسلي مُزالَة بالفعل. أما وجهة القرص فليست كذلك. ينسخ interpret() قيمة di.strHref مباشرةً إلى قيمة HardDiskImage في VBox:

Utf8Str strFilename = di.strHref;
/* ... */
i_ensureUniqueImageFilePath(strMachineFolder, devType, strFilename);
pNewDesc->i_addEntry(VirtualSystemDescriptionType_HardDiskImage,
                     hd.strDiskId,
                     di.strHref,
                     strFilename,
                     di.ulSuggestedSizeMB,
                     strExtraConfig);

ApplianceImpl.cpp 1126-1160 يكمل هذا الاسم مقابل مجلد الجهاز دون RTPATHABS_F_STOP_AT_BASE، ثم يعدّل aName في مكانه:

int vrc = RTPathAbsExCxx(strAbsName, aMachineFolder, aName);
/* ... */
const char *pszSuffix = RTPathSuffix(aName.c_str());
offDashNum = pszSuffix ? (size_t)(pszSuffix - aName.c_str()) : aName.length();
aName.replace(offDashNum, cchDashNum, szTmp, cchTmp);

يُكرِّر Import عملية AbsEx على الـ dest الذي لا يزال نسبيًا (ApplianceImplImport.cpp 4169-4171) وعمليات الكتابة CREATE_REPLACE. توثّق اختبارات IPRT نفس الدمج: الوسيط الثاني المطلق يفوز؛ /VirtualBox/Machines مع ../VirtualBox.xml تصبح /VirtualBox/VirtualBox.xml.

المنعطفات الخاطئة المسجّلة سلفًا: معاملة كتابة authorized_keys الخالية من لاحقة على أنها المتبقي (يرمي Import استثناءً)؛ وجهة NVRAM (مفروضة داخل المجلد)؛ اسم VM .. (المعقّم)؛ المجلدات المشتركة / ExtraData / RawFile التسلسلي (مُعقّمة سلفًا). المسرح: نواة المضيف، من الضيف إلى المضيف. الأوراكل هو سطر شاهد خارج مجلد الآلة بالإضافة إلى disk.vmdk ضابط بقي في مكانه.

المختبر

python3 vbox-ovf-href-dest-escape-Abraxas-Labs.py

أو

cd lab
./run.sh

مصدر اختبار interpret dest-join وunique-path وكتابة الاستيراد CREATE_REPLACE. Docker compose، loopback، بدون ملف VirtualBox التنفيذي. مجلد الجهاز /work/Machines/ImportedVM. Oracle /work/oracle.

SUCCESS vbox-ovf-href-dest-escape relative-escape=yes unique-keeps-dotdot=yes absolute-href=yes control-in-folder=yes VBOX-OVF-HREF-DEST-ESCAPE-WITNESS

الإصلاح

أزل اسم الأساس (basename) من ovf:href قبل أن يصبح مسارًا وجهة (dest)، أو مرّر RTPATHABS_F_STOP_AT_BASE (وارفض الأسماء المطلقة). ارفض RTPATH_PROP_DOTDOT_REFS. يجب أن يعدّل المسار الفريد (unique-path) اسم الأساس، لا السلسلة النسبية.

المراجع

  • github.com/VirtualBox/virtualbox وسم v7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
  • ApplianceImplImport.cpp 802-851، 1043-1053، 4169-4171
  • ApplianceImpl.cpp 1126-1160
  • CWE-22

الترخيص

GNU Affero GPL v3.0. راجع LICENSE. للاستخدام في مختبر loopback فقط. دون أي ضمان.

تنزيل الأداة