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-guestctrl-copyfrom-dotdot — VirtualBox 7.2.20 – Hoch – Lokal – Dateischreiben – Guest Control copy-from DOTDOT | Kitploit
Tools/GitHubGitHub/abraxas/vbox-guestctrl-copyfrom-dotdot
Privilege EscalationSchwachstellenanalyseCode-AnalyseExploitationSicherheitsvirtualisierungPapers & ForschungLabs & Praxis
GitHubabraxas/vbox-guestctrl-copyfrom-dotdot

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

vbox-guestctrl-copyfrom-dotdot

VirtualBox 7.2.20 – Hoch – Lokal – Dateischreiben – Guest Control copy-from DOTDOT

Repository anzeigen
3vor 3 TagenNoch nicht geprüft

Abraxas Labs - vbox-guestctrl-copyfrom-dotdot

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vbox-guestctrl-copyfrom-dotdot

vbox-guestctrl-copyfrom-dotdot

Klasse: Dateischreiben Reichweite: Lokal (Gast) Confused-Deputy

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44) - Oracle

Host IGuestSession::directoryCopyFromGuest / VBoxManage guestcontrol copyfrom verkettet Gast-DIR_NOTIFY-Namen an das Ziel. FsList::AddDirFromGuest überspringt nur exakt . und ... GuestPath::Translate ist Slash-Stil plus Doppel-Slash-Zusammenfassung. BuildDestinationPath lehnt RTPATH_PROP_DOTDOT_REFS am vom Host benannten Ziel-Root ab, nicht an den Namen pro Eintrag.

Ein Gast, der auf ein vom Host initiiertes Verzeichnis-Copy-From mit Namen antwortet, die .. enthalten, schreibt Dateien als die VBox-UID außerhalb des Ziels.

IDnoch keine CVE
KlasseDateischreiben (Host-Ziel-Escape)
ReichweiteLokal (Gast) Confused-Deputy. Host startet die Kopie. Gast benennt die Dateien.
CWECWE-22
CVSSHoch: 8.2 CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
ProduktOracle VM VirtualBox OSS
Betroffen7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
AuthGuest Additions (oder ein ersetzender HGCM-Client) plus ein vom Host initiiertes Verzeichnis-Copy-From
LizenzGNU Affero GPL v3.0
LabNur 127.0.0.1. Quell-Harness. Startet VirtualBox nicht.

Was ein Angreifer tun kann

Guest Control ist von Natur aus Host-zu-Gast. Der Überrest ist die Umkehrung: Der Host-Benutzer kopiert ein Gast-Verzeichnis, und der Gast antwortet auf HOST_MSG_DIR_READ mit GUEST_MSG_DIR_NOTIFY / GUEST_DIR_NOTIFYTYPE_READ-Namen. Main verkettet diese Namen an das Ziel und öffnet sie.

Integrität (im Lab nachgewiesen)

MethodeSinkPrivileg
Host IGuestSession::directoryCopyFromGuest / VBoxManage guestcontrol copyfrom eines Gast-Verzeichnisses. Gast-Listing-Name ../oracle/VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS.CopyFrom::Run führt strDstAbs = dest + native_sep + pEntry->strPath aus, dann GuestPath::Translate, dann fileCopyFromGuest -> RTFileOpen(RTFILE_O_WRITE | RTFILE_O_OPEN_CREATE).Erstellen/Überschreiben einer Host-Datei außerhalb des Ziels als die VBox-UID. Lab-Ziel /work/vbox-copy. Lab schrieb /work/oracle/VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS. Inhalt ist vom Gast gewählt (File-Read-Notify).

Exakte .- und ..-Verzeichnisnamen werden übersprungen und schreiben nicht. Eine Datei, deren Name .. enthält, wird gespeichert und verkettet.

Integrität (abgeleitet, nicht in diesem Lab)

MethodeSinkPrivileg
Gleiches Copy-From. Gast listet ../../../.ssh/authorized_keys (oder DOS ..\..\...), während das Host-Ziel /tmp/vbox-copy / C:\Temp\vbox-copy ist.Gleiche Verkettung + RTFileOpen.Erstellen oder Überschreiben eines beliebigen Host-Pfads, den die UID schreiben kann. Verschachtelte --recursive-Namen laufen weiter.

Recon

Nichts über das Ziel hinaus, das der Host bereits gewählt hat. Der Gast erfährt durch diesen Überrest keine zusätzlichen Host-Pfade.

Verfügbarkeit (abgeleitet)

Überschreiben von Dateien, die die VBox-UID schreiben kann. Kein Crash-Überrest. CVSS A:N.

Was dieser Überrest nicht gewährt

  • Host-Kernel. Andere VMs. VBoxSVC.
  • Einzeldatei-fileCopyFromGuest: Das Ziel ist vollständig vom Host vorgegeben; der Gast liefert nur Bytes in diesen Pfad.
  • Copy-to-Guest: Das Ziel befindet sich auf dem Gast. AddDirFromHost überspringt . / .. im Host-Listing.
  • Dateien, die die VBox-UID nicht schreiben kann (/etc als normaler Benutzer, das Home-Verzeichnis eines anderen Benutzers).
  • Windows Restricted Token / AppContainer. Hier schreibt der VBox-Benutzerprozess, es handelt sich nicht um eine Umgehung der Härtung.
  • Gast-Injektion von HOST_MSG_*. svcCall dispatcht nur GUEST_MSG_*.
  • Pfad-Sanitizer in guestCtrlValidateDirEntryEx. Diese Prüfung betrifft UTF-8/Größe, nicht ...

Benötigt Guest Additions (oder einen Ersatz-HGCM-Client, der die Sitzung besitzt) und ein host-initiiertes Verzeichnis-Copy-from. Kein 3D. Kein VRDP. Kein PUEL. Confused Deputy: Der Host-Benutzer kopiert von einem feindlichen Gast.

Wie ich es gefunden habe

Ich habe VirtualBox/virtualbox auf v7.2.20 (f2792cf44) gepinnt. Guest-Control-Hunt H04. Nur Gast-zu-Host. Shared-Folder-TOCTOU (P0 1037) ist eine verwandte Klasse auf einem anderen Dienst und ist bei diesem Pin geschlossen (RTPathStartsWith nach lexikalischem Abs). Guest-Control-Copy-from verkettet DIR_NOTIFY-Namen, nicht SHFL-Namen.

AddDirFromGuest baut strEntry aus dem Gast-Name und überspringt nur exakt . / ..:

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 hängt dann den gespeicherten Pfad an dest an und führt nur Translates aus:

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 dokumentiert „Dotdot directories are forbidden for security reasons" und lehnt RTPATH_PROP_DOTDOT_REFS ab. Dieser Aufruf erfolgt nur auf dem Ziel-Root (GuestSessionImplTasks.cpp:1685-1686). Pro-Eintrag-Namen durchlaufen ihn nie. Translate (GuestCtrlPrivate.cpp:2129-2208) ändert den Slash-Stil und fasst // zusammen. Es lehnt .. nicht ab.

Bereits festgehaltene Irrwege: das exakte Überspringen von . / .. als Pfad-Sanitizer zu behandeln; anzunehmen, dass Translate kanonisiert; die Ziel-Root-Prüfung auf jeden Eintrag anzuwenden; eine VM statt einer Source-Harness zu booten; zu behaupten, dies sei eine Host-Kernel-Escape; die Einzeldatei-Kopie von Ziel oder Kopie zum Gast als das Übriggebliebene zu behandeln. Theater: eine Reverse Shell. Das Orakel ist eine Witness-Datei außerhalb des Ziels.

Lab

cd lab
./run.sh

Compose-Projekt vbox-guestctrl-copyfrom-dotdot. Loopback 127.0.0.1:19220. Quell-Harness von Pin v7.2.20 Peel f2792cf44: Überspringen von exakt . / .., GuestPath::Translate (nur Slash-Stil), CopyFrom::Run Ziel+Sep+Eintrag-Zusammenfügung, dann Schreiben/Erstellen, Ziel-Root BuildDestinationPath DOTDOT-Ablehnung. Startet weder VirtualBox noch Guest Additions. Binde es an 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

Die Behebung

Tool herunterladen