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

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

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

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

دليل الأدوات

الفئات

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

vbox-ovf-nat-tftp-prefix

VirtualBox 7.2.20 - عالية - محلية - قراءة ملف - OVF NAT TFTP بادئة فارغة

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

الأكثر شعبية

عرض الكل →

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

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

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

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

Abraxas Labs - vbox-ovf-nat-tftp-prefix

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vbox-ovf-nat-tftp-prefix

vbox-ovf-nat-tftp-prefix

الفئة: قراءة ملفات الوصول: محلي (من الضيف) بعد استيراد يتطلب UI:R

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44) - Oracle

يقوم استيراد vbox:Machine OVF بتعقيم ExtraData والمجلدات المشتركة ومسار NVRAM وserial RawFile. لكنه لا يمس أبدًا enable-tftp الخاص بـ NAT ولا @prefix الخاص بـ TFTP. يعطّل libslirp بروتوكول TFTP فقط عندما يكون tftp_prefix مساويًا لـ NULL. يبقى g_strdup("") في DrvNAT غير NULL. طلب RRQ من الضيف لـ etc/passwd مع بادئة / أو بادئة فارغة يصبح /etc/passwd. لا يزال ../ في اسم الضيف مرفوضًا.

استيراد NAT TFTP ببادئة فارغة أو / يتيح للضيف إرسال RRQ لملفات المضيف بصلاحيات UID الخاص بـ VBox. ليس كتابة. ليس نواة المضيف. ليس من بقايا فحص ../ المغلق.

المعرّفلا يوجد CVE بعد
الفئةقراءة ملفات (RRQ عبر TFTP من الضيف لمسارات المضيف)
الوصولمحلي (من الضيف) بعد استيراد UI:R لملف vbox:Machine OVF، ثم تشغيل الآلة الافتراضية
CWECWE-22 من بقايا فئة البادئة CVE-2022-21394
CVSSعالٍ: 7.7 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:C/C:H/I:N/A:N
المنتجOracle VM VirtualBox OSS
المتأثر7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
المصادقةلا شيء في الضيف؛ يجب على مستخدم المضيف أن يستورد ثم يشغّل
الترخيصGNU Affero GPL v3.0
المختبرأداة اختبار من المصدر؛ compose على loopback؛ لا يتم إقلاع VirtualBox

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

تسليم ملف vbox:Machine OVF/OVA تحتوي كتلة NAT فيه على enable-tftp وبادئة TFTP تساوي / أو فارغة، بالإضافة إلى قرص ضيف يُصدر طلبات TFTP RRQ إلى بوابة NAT (10.0.2.2:69). يستورد مستخدم المضيف الملف (File / Import أو VBoxManage import) ثم يشغّل الآلة الافتراضية. يمسح الاستيراد ExtraData والمجلدات المشتركة وserial RawFile ومسار NVRAM. تبقى حقول TFTP. عند التشغيل، يُدرج ConsoleImplConfigCommon قيمة EnableTFTP. تُحذف البادئة الفارغة من CFGM؛ عندها يجعل DrvNAT القيمة الافتراضية لـ TFTPPrefix مساوية لـ "" ويطبّق عليها g_strdup. يعامل libslirp ذلك على أنه مفعّل.

هذه هي مجموعة الصلاحيات الكاملة. لا يوجد هنا أي كتابة على المضيف، ولا أي بدائية heap في عملية الآلة الافتراضية، ولا أي هروب من النواة.

الاستطلاع (RRQ عبر TFTP من الضيف)

الطريقةالموقعالصلاحية
RRQ عبر TFTP لـ oracle/VBOX-OVF-NAT-TFTP-PREFIX-WITNESS مع بادئة مستوردة ""tftp_handle_rrq في libslirp ثم RTFileOpen للبادئة + / + اسم الضيفمُثبت مختبريًا. تبقى البادئة الفارغة غير NULL. المسار المبني هو /oracle/VBOX-OVF-NAT-TFTP-PREFIX-WITNESS. أعاد الفتح للقراءة فقط بايتات الشاهد.
RRQ عبر TFTP للاسم نفسه مع بادئة مستوردة /نفسهمُثبت مختبريًا. المسار المبني هو //oracle/...، وهو مطابق POSIX لـ /oracle/.... أُعيدت بايتات الشاهد.
نظير المسار فقط لطلب RRQ من الضيف لـ etc/passwd مع بادئة فارغة"" + "/" + "etc/passwd"بناء مسار مُثبت مختبريًا. النتيجة هي /etc/passwd. لا يفتح المختبر /etc الخاص بالمضيف.
RRQ عبر TFTP لأي اسم نسبي يستطيع UID الخاص بـ VBox فتحه (مفاتيح home، VirtualBox.xml، /etc الخاص بالمضيف، جذر القرص الحالي في Windows)نفس RTFileOpenمُستنتج. نفس الدمج. تبقى الملفات التي لا تستطيع العملية فتحها مغلقة (File not found).

السلامة والتوافر

الطريقةالصلاحية
WRQ عبر TFTPمغلق. خادم TFTP هذا مخصص لـ RRQ فقط. لا يوجد معالج كتابة.
الكتابة فوق ملف المضيف / إنشاؤهمغلق. RTFILE_O_READ للقراءة فقط.
heap عملية الآلة الافتراضية، VBoxSVC، آلات افتراضية أخرى، نواة المضيفمغلق. هذه البقايا هي فتح ملف لمسار مبني.
حجب الخدمة عبر TFTPخارج النطاق.

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

  • الأجهزة الافتراضية الجديدة الافتراضية: يكتب Main القيمة fEnableTFTP على false (مُنشئ NATEngine في Settings.cpp).
  • شبكة NAT: يقوم VBoxNetSlirpNAT دائمًا بتعيين tftp_path إلى <VirtualBox home>/TFTP عندما يكون home موجودًا. تبقى طلبات RRQ تحت ذلك البادئة.
  • OVF العام بدون كتلة vbox:Machine لا ينسخ زوج NAT TFTP هذا.
  • اسم ملف الضيف ../ والشرطة المائلة اللاحقة / لا يزالان يُنتجان "Access violation". ذلك هو مسار CVE-2022-21394 المُغلق.
  • يبقى PXE المقصود تحت بادئة غير فارغة محصورًا (/work/tftp/boot.pxe في المختبر).
  • بادئة NULL تعطّل TFTP. لا فتح.
  • لا تزال المجلدات المشتركة وExtraData وserial RawFile ووجهة NVRAM تُعقَّم على مسار الاستيراد هذا.
  • لا 3D، ولا Guest Additions، ولا VRDP، وليس PUEL.

المضيف الحقيقي الذي يستورد هذا الجهاز ويشغّل الآلة الافتراضية يمنح الضيف قراءة أي مسار يستطيع UID الخاص بـ VBox فتحه. المختبر هو أداة مصدرية لتلك المسيرة. لا يتم إقلاع VirtualBox.

كيف وجدته

ثبّتُّ VirtualBox/virtualbox v7.2.20 (f2792cf44). عمليات بحث NAT وOVF. غيّرت 7.2 NAT إلى libslirp 4.9.3 المضمّن. احترام المجلدات المشتركة من .ova يُعامَل بالفعل كخطر ويُجرَّد. لم يكن TFTP على تلك القائمة.

لا يزال Settings.cpp يقرأ NAT enable-tftp وTFTP/@prefix عند استيراد vbox:Machine:

elmMode.getAttributeValue("enable-tftp", nic.nat.fEnableTFTP);
// ...
pelmTFTP->getAttributeValue("prefix", nic.nat.strTFTPPrefix);

ApplianceImplImport.cpp:6147 ينقّي كل ما تذكّروا تنظيفه:

config.sanitizeImportedSerialPorts();
config.sanitizeSharedFolderSettings();
config.sanitizeImportedNvramSettings();
if (!m->optListImport.contains(ImportOptions_KeepExtraData))
    config.sanitizeImportedExtraData();

تلك الكيانات الأربعة لا تذكر strTFTPPrefix أو fEnableTFTP أبدًا.

عند بدء التشغيل، يُدرج ConsoleImplConfigCommon.cpp:2286-2292 المفتاح TFTPPrefix فقط عندما يكون غير فارغ ويُدرج دائمًا EnableTFTP. ويضبط DrvNAT.cpp:1656-1665 القيمة الافتراضية لـ EnableTFTP على true بالنسبة للأجهزة الافتراضية القديمة التي تحذف المفتاح، ثم:

rc = pDrvIns->pHlpR3->pfnCFGMQueryStringAllocDef(pCfg, "TFTPPrefix", &pszTmp, "");
slirpCfg.tftp_path = pszTmp;

slirp.c:698 هو g_strdup. الفارغ يبقى غير NULL. tftp.c:353-357 يعطّل فقط عند NULL. 364-370 يضيف البادئة، /، اسم الضيف. 398-407 يرفض ../. ثم RTFileOpen للمسار المبني.

المنعطفات الخاطئة المسجّلة مسبقًا: معاملة ../ الخاص بالضيف على أنه المتبقي (CVE-2022-21394، لا يزال مرفوضًا)؛ معاملة الأجهزة الافتراضية الجديدة الافتراضية على أنها متأثرة؛ معاملة home/TFTP الخاص بـ NAT Network على أنه هذا المتبقي؛ الادعاء بكتابات WRQ؛ الادعاء بنواة المضيف. المسرح: فتح /etc/passwd الخاص بالمضيف. الأوراكل هو ملف شاهد تحت /oracle.

المختبر

python3 vbox-ovf-nat-tftp-prefix-Abraxas-Labs.py

أو

cd lab
./run.sh

مصدر أداة التثبيت الخاصة بمعقّمات pin، والقيمة الافتراضية للسلسلة الفارغة في DrvNAT، وg_strdup، وtftp_handle_rrq في libslirp. مشروع Docker compose باسم vbox-ovf-nat-tftp-prefix. على loopback فقط. لم يتم إقلاع VirtualBox. تم زرع الشاهد VBOX-OVF-NAT-TFTP-PREFIX-WITNESS في /oracle/.... ملف PXE التحكمي هو /work/tftp/boot.pxe. السطر الأخير:

SUCCESS vbox-ovf-nat-tftp-prefix sanitize-miss=yes null-disable=yes empty-prefix-read=yes slash-prefix-read=yes dotdot-reject=yes VBOX-OVF-NAT-TFTP-PREFIX-WITNESS

الإصلاح

تنزيل الأداة