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

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

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 خارج الوجهة.

المعرّفلا يوجد 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. وجهة المختبر /work/vbox-copy. كتب المختبر /work/oracle/VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS. المحتوى يختاره الضيف (إشعار قراءة ملف).

تُتخطى أسماء المجلدات . و .. الحرفية ولا تكتب. أما الملف الذي يحتوي اسمه على .. فيُخزَّن ويُدمج.

السلامة (مُستنتجة، ليست في هذا المختبر)

الطريقةالمَصبّالامتياز
نفس النسخ من الضيف. يسرد الضيف ../../../.ssh/authorized_keys (أو نمط DOS ..\..\...) بينما وجهة المضيف هي /tmp/vbox-copy / C:\Temp\vbox-copy.نفس الدمج + RTFileOpen.إنشاء أو استبدال أي مسار مضيف يمكن لذلك المعرّف الكتابة فيه. الأسماء المتداخلة --recursive تتقدم أكثر.

الاستطلاع

لا شيء يتجاوز الوجهة التي اختارها المضيف بالفعل. لا يتعلم الضيف مسارات مضيف إضافية من هذا المتبقي.

التوافر (مُستنتج)

استبدال ملفات يمكن لمعرّف المستخدم VBox الكتابة فيها. ليس متبقيًا يؤدي إلى انهيار. CVSS A:N.

ما لا يمنحه هذا المتبقي

  • نواة المضيف. أجهزة افتراضية أخرى. VBoxSVC.
  • ملف واحد fileCopyFromGuest: الوجهة محددة بالكامل من المضيف؛ الضيف يوفّر البايتات فقط إلى ذلك المسار.
  • النسخ إلى الضيف: الوجهة على الضيف. AddDirFromHost يتخطى . / .. في قائمة المضيف.
  • الملفات التي لا يستطيع مستخدم VBox الكتابة إليها (/etc كمستخدم عادي، أو مجلد منزل مستخدم آخر).
  • رمز Windows المقيّد / AppContainer. هذه عملية مستخدم VBox تكتب، وليست تجاوزًا لتقوية الأمان.
  • حقن الضيف لـ HOST_MSG_*. svcCall يوزّع فقط GUEST_MSG_*.
  • مُطهّر المسارات في guestCtrlValidateDirEntryEx. ذلك الفحص خاص بـ UTF-8/الحجم، وليس ...

يتطلب Guest Additions (أو عميل HGCM بديل يملك الجلسة) و نسخًا من مجلد يبدأ من المضيف. لا 3D. لا VRDP. ليس PUEL. وكيل مُلتبس: مستخدم المضيف ينسخ من ضيف معادٍ.

كيف وجدته

ثبّتت VirtualBox/virtualbox عند v7.2.20 (f2792cf44). مطاردة Guest Control H04. من الضيف إلى المضيف فقط. TOCTOU للمجلد المشترك (P0 1037) فئة شقيقة على خدمة مختلفة وهي مغلقة عند هذا التثبيت (RTPathStartsWith بعد abs المعجمي). النسخ من Guest Control يَدمج أسماء DIR_NOTIFY، وليس أسماء SHFL.

AddDirFromGuest يبني strEntry من Name الخاص بالضيف ويتخطى فقط . / .. المطابقين تمامًا:

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. هذا الاستدعاء يقع فقط على جذر الوجهة (GuestSessionImplTasks.cpp:1685-1686). أسماء الإدخالات الفردية لا تمر عبره أبدًا. Translate (GuestCtrlPrivate.cpp:2129-2208) يغيّر نمط الشرطة المائلة ويجمع //. وهو لا يرفض ...

المنعطفات الخاطئة المسجّلة سلفًا: التعامل مع تخطي . / .. الدقيق كمعقّم للمسارات؛ افتراض أن Translate يقوم بالتقنين (canonicalization)؛ تطبيق فحص جذر الوجهة على كل إدخال؛ إقلاع جهاز ظاهري بدلًا من حزمة اختبار مصدرية؛ الادعاء بأن هذا هروب من نواة المضيف؛ اعتبار النسخ من الوجهة لملف واحد أو النسخ إلى الضيف هو المتبقي. المسرح: صدفة عكسية. الـ oracle هو ملف شاهد خارج الوجهة.

المختبر

cd lab
./run.sh

إنشاء مشروع vbox-guestctrl-copyfrom-dotdot. Loopback 127.0.0.1:19220. حزمة اختبار المصدر الخاصة بـ pin v7.2.20 peel f2792cf44: تخطي . / .. الدقيقين، GuestPath::Translate (نمط الشرطة المائلة فقط)، CopyFrom::Run دمج dest+sep+entry ثم الكتابة/الإنشاء، رفض DOTDOT في جذر الوجهة BuildDestinationPath. لا يقوم بتشغيل VirtualBox أو Guest Additions. اربطه بـ loopback.

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

الإصلاح

مرّر كل مسار وجهة مدمج عبر GuestPath::BuildDestinationPath (أو RTPathParse مع RTPATH_PROP_DOTDOT_REFS، أو RTPathAbsEx مع RTPATHABS_F_STOP_AT_BASE مقابل الوجهة). ارفض أسماء القوائم التي تتضمن مكوّناتها ..، وليس فقط . و .. المطابقين تمامًا. أبقِ على فحص جذر الوجهة. فهو غير كافٍ بحد ذاته.

المراجع

تنزيل الأداة