Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
vbox-ovf-href-dest-escape — VirtualBox 7.2.20 – Hoch – Lokal – Dateischreiben – OVF-href-Ziel-Escape | Kitploit
Tools/GitHubGitHub/abraxas/vbox-ovf-href-dest-escape
Privilege EscalationSchwachstellenanalyseCode-AnalyseExploitationSicherheitsvirtualisierungPapers & ForschungLabs & Praxis
GitHubabraxas/vbox-ovf-href-dest-escape

vbox-ovf-href-dest-escape

VirtualBox 7.2.20 – Hoch – Lokal – Dateischreiben – OVF-href-Ziel-Escape

Repository anzeigen
2vor 2 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

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

Klasse: Dateischreiben Reichweite: Lokal (Host) UI:R

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44) - Oracle

Ein Host-Benutzer, der eine feindliche OVF/OVA importiert, schreibt Disk-Image-Bytes außerhalb des neuen VM-Ordners. ovf:href ist der Ziel-Dateiname. RTPathAbsExCxx verwendet nicht RTPATHABS_F_STOP_AT_BASE. Der Unique-Path-Helfer fügt _%i vor dem Suffix ein und entfernt nicht den Basename.

IDnoch keine CVE
KlasseDateischreiben (OVF/OVA-Zielpfad)
ReichweiteLokal (Host) UI:R (Opfer importiert eine feindliche Appliance)
CWECWE-22
CVSSHoch: 7.8 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
ProduktOracle VM VirtualBox OSS
Betroffen7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
Authkeine bei VirtualBox. Der Host-Benutzer öffnet Datei/Importieren oder VBoxManage import.
LizenzGNU Affero GPL v3.0
Labnur 127.0.0.1. Source-Harness. VirtualBox wird nicht gebootet.

Was ein Angreifer tun kann

Ein OVF-Verzeichnis oder eine OVA ausliefern. ../irgendwo/disk.vmdk oder einen absoluten Pfad /path/disk.iso in ovf:href setzen. Der Operator, der es importiert, schreibt diese Disk-Image-Bytes per CREATE_REPLACE als importierende UID, einschließlich übergeordneter Verzeichnisse, die nicht existierten. Suffix erforderlich (vmdk / iso / andere MediumFormat-Erweiterungen). Dies ist kein suffixfreies Ablegen von authorized_keys.

PrivilegMethode + SinkWas es gewährtProvenienz
IntegritätIAppliance::read kopiert File/href ohne Basename-Strip (ovfreader.cpp). Appliance::interpret() setzt dest = di.strHref (ApplianceImplImport.cpp 802-851).Der Ziel-Dateiname wird vom Angreifer gewählt, einschließlich ../ und absoluter Pfade.Lab-bestätigt (relative und absolute hrefs)
Integritäti_ensureUniqueImageFilePath (ApplianceImpl.cpp 1126-1160) ruft RTPathAbsExCxx(strAbsName, aMachineFolder, aName) ohne RTPATHABS_F_STOP_AT_BASE auf. Bei Kollision wird _%i vor dem Suffix von aName eingefügt, nicht als Basename.Eindeutiges Ziel verlässt weiterhin den Maschinenordner. ../oracle/WITNESS.vmdk wird zu ../oracle/WITNESS_1.vmdk.Lab-bestätigt (unique-keeps-dotdot=yes)
IntegritätImport i_importOneDiskImage AbsEx erneut (ApplianceImplImport.cpp 4169-4171). i_importCreateAndWriteDestinationFile (1043-1053) mkdir-parents dann RTFILE_O_CREATE_REPLACE.Disk-Image-Bytes landen außerhalb des VM-Ordners. Absoluter href ignoriert den Maschinenordner. Kontrolle disk.vmdk bleibt im Ordner.Lab-bestätigt (relative-escape=yes absolute-href=yes control-in-folder=yes)
ReconImport-Assistent / VBoxManage import --dry-run zeigt das Ziel.Pfad ist sichtbar. Kein Geheimnisleck an sich.Abgeleitet
VerfügbarkeitRelatives Ziel, das auf der Disk einer anderen VM landet.Diese Datei als importierende UID überschreiben.Abgeleitet (gleicher CREATE_REPLACE-Schreibvorgang)
GeschlossenZiel ohne MediumFormat-SuffixImport wirft has no extension. Kein suffixfreies Schreiben von authorized_keys / crontab.Geschlossen
GeschlossenNVRAM-ZielErzwungen zu {vmname}.nvram unter dem Maschinenordner.Geschlossen
GeschlossenVM-Name ..sanitiseMachineFilename verfälscht ihn.Geschlossen
GeschlossenShared Folders / ExtraData / serielle RawFileAuf dem vbox:Machine-Pfad bereinigt.Geschlossen
GeschlossenHost-Kernel, Gast-zu-HostNicht dieser Überrest. Kein VM-Start erforderlich. Gleiche UID wie der Importeur.Geschlossen

OVA ist der saubere Weg: Das tar-Mitglied liefert die Bytes, href liefert das escapte Ziel. Kein 3D, keine Guest Additions, kein VRDP, kein PUEL.

Wie ich es gefunden habe

Ich saß auf Tag v7.2.20 (f2792cf44) nach der CPU vom Sep 2026 und las den OVF-Import. ExtraData, Shared Folders, NVRAM-Ziel und serielles RawFile sind bereits entfernt. Das Disk-Ziel nicht. interpret() kopiert di.strHref direkt in den VBox-Wert von HardDiskImage:

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 vervollständigt diesen Namen gegen den Maschinenordner ohne RTPATHABS_F_STOP_AT_BASE und verändert dann aName direkt:

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 wiederholt AbsEx auf dem weiterhin relativen Ziel (ApplianceImplImport.cpp 4169-4171) und CREATE_REPLACE-Schreibvorgängen. IPRT-Tests dokumentieren dieselbe Zusammenführung: Das absolute zweite Argument gewinnt; /VirtualBox/Machines plus ../VirtualBox.xml ergibt /VirtualBox/VirtualBox.xml.

Bereits festgehaltene Fehlwege: einen suffixfreien authorized_keys-Schreibvorgang als Überbleibsel zu behandeln (Import wirft eine Ausnahme); NVRAM-Ziel (zwangsweise im Ordner); VM-Name .. (Sanitizer); Shared Folders / ExtraData / serielles RawFile (bereits bereinigt). Theater: Host-Kernel, Gast-zu-Host. Das Orakel ist eine Zeugenzeile außerhalb des Maschinenordners plus eine Kontroll-disk.vmdk, die an Ort und Stelle blieb.

Lab

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

oder

cd lab
./run.sh

Quell-Harness für interpret dest-join, unique-path und den Import CREATE_REPLACE write. Docker compose, Loopback, keine VirtualBox-Binärdatei. Maschinenordner /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

Die Behebung

ovf:href vor der Umwandlung in ein Ziel (dest) vom Basename befreien oder RTPATHABS_F_STOP_AT_BASE übergeben (und absolute Namen ablehnen). RTPATH_PROP_DOTDOT_REFS ablehnen. Unique-Path sollte den Basename verändern, nicht den relativen String.

Referenzen

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

Lizenz

Tool herunterladen