Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
vbox-guestctrl-copyfrom-dotdot — VirtualBox 7.2.20 - Élevé - Local - Écriture de fichier - Guest Control copy-from DOTDOT | Kitploit
Outils/GitHubGitHub/abraxas/vbox-guestctrl-copyfrom-dotdot
Escalade de PrivilègesAnalyse des VulnérabilitésAnalyse de CodeExploitationVirtualisation de SécuritéArticles et RechercheLabs et Pratique
GitHub

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
abraxas/vbox-guestctrl-copyfrom-dotdot

vbox-guestctrl-copyfrom-dotdot

VirtualBox 7.2.20 - Élevé - Local - Écriture de fichier - Guest Control copy-from DOTDOT

Voir le dépôt
3il y a 2 joursPas encore vérifié

Abraxas Labs - vbox-guestctrl-copyfrom-dotdot

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

vbox-guestctrl-copyfrom-dotdot

Classe : Écriture de fichier Portée : Confused-deputy local (invité)

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44) - Oracle

Côté hôte, IGuestSession::directoryCopyFromGuest / VBoxManage guestcontrol copyfrom concatène les noms DIR_NOTIFY de l'invité sur la destination. FsList::AddDirFromGuest ignore uniquement les . et .. exacts. GuestPath::Translate utilise le style slash avec effondrement des doubles slashs. BuildDestinationPath rejette RTPATH_PROP_DOTDOT_REFS sur la racine de destination nommée par l'hôte, pas sur les noms par entrée.

Un invité qui répond à une copie de répertoire initiée par l'hôte avec des noms contenant .. écrit des fichiers sous l'UID VBox en dehors de la destination.

IDpas encore de CVE
ClasseÉcriture de fichier (évasion de la destination hôte)
PortéeConfused-deputy local (invité). L'hôte lance la copie. L'invité nomme les fichiers.
CWECWE-22
CVSSÉlevé : 8.2 CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
ProduitOracle VM VirtualBox OSS
Affecté7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
AuthGuest Additions (ou un client HGCM de remplacement) plus une copie de répertoire initiée par l'hôte
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement. Harnais source. Ne démarre pas VirtualBox.

Ce qu'un attaquant peut faire

Guest Control est conçu pour aller de l'hôte vers l'invité. Le résidu est l'inverse : l'utilisateur hôte copie un répertoire invité, et l'invité répond à HOST_MSG_DIR_READ avec des noms GUEST_MSG_DIR_NOTIFY / GUEST_DIR_NOTIFYTYPE_READ. Main concatène ces noms sur la destination et les ouvre.

Intégrité (prouvé en lab)

MéthodePoint de chutePrivilège
Hôte IGuestSession::directoryCopyFromGuest / VBoxManage guestcontrol copyfrom d'un répertoire invité. Nom de listing invité ../oracle/VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS.CopyFrom::Run fait strDstAbs = dest + native_sep + pEntry->strPath, puis GuestPath::Translate, puis fileCopyFromGuest -> RTFileOpen(RTFILE_O_WRITE | RTFILE_O_OPEN_CREATE).Créer/écraser un fichier hôte en dehors de la destination sous l'UID VBox. Destination du lab /work/vbox-copy. Le lab a écrit /work/oracle/VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS. Le contenu est choisi par l'invité (notification de lecture de fichier).

Les noms de répertoire . et .. exacts sont ignorés et n'écrivent pas. Un fichier dont le nom contient .. est stocké et joint.

Intégrité (déduit, absent de ce lab)

MéthodePoint de chutePrivilège
Même copie depuis. L'invité liste ../../../.ssh/authorized_keys (ou DOS ..\..\...) tandis que la destination hôte est /tmp/vbox-copy / C:\Temp\vbox-copy.Même jointure + RTFileOpen.Créer ou écraser tout chemin hôte que l'UID peut écrire. Les noms imbriqués --recursive vont plus loin.

Reconnaissance

Aucune au-delà de la destination déjà choisie par l'hôte. L'invité n'apprend aucun chemin hôte supplémentaire de ce résidu.

Disponibilité (déduit)

Écrasement de fichiers que l'UID VBox peut écrire. Ce n'est pas un résidu de plantage. CVSS A:N.

Ce que ce résidu n'accorde pas

  • Noyau hôte. Autres VM. VBoxSVC.
  • fileCopyFromGuest à fichier unique : la destination est entièrement spécifiée par l'hôte ; l'invité ne fournit que les octets vers ce chemin.
  • Copie vers l'invité : la destination se trouve sur l'invité. AddDirFromHost ignore . / .. dans le listing de l'hôte.
  • Fichiers que l'UID VBox ne peut pas écrire (/etc en tant qu'utilisateur normal, le home d'un autre utilisateur).
  • Jeton restreint Windows / AppContainer. Il s'agit du processus utilisateur VBox qui écrit, pas d'un contournement de durcissement.
  • Injection par l'invité de HOST_MSG_*. svcCall ne distribue que les GUEST_MSG_*.
  • Assainisseur de chemins dans guestCtrlValidateDirEntryEx. Cette vérification porte sur l'UTF-8/la taille, pas sur ...

Nécessite les Guest Additions (ou un client HGCM de remplacement qui possède la session) et une copie de répertoire depuis l'invité initiée par l'hôte. Pas de 3D. Pas de VRDP. Pas de PUEL. Confused-deputy : l'utilisateur hôte copie depuis un invité hostile.

Comment je l'ai trouvé

J'ai épinglé VirtualBox/virtualbox v7.2.20 (f2792cf44). Chasse Guest Control H04. Invité-vers-hôte uniquement. La TOCTOU des dossiers partagés (P0 1037) est une classe sœur sur un service différent et est fermée sur ce pin (RTPathStartsWith après abs lexicale). La copie depuis l'invité de Guest Control concatène les noms DIR_NOTIFY, pas les noms SHFL.

AddDirFromGuest construit strEntry à partir du Name de l'invité et n'ignore que les . / .. exacts :

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 concatène ensuite le chemin stocké sur dest et effectue uniquement une traduction :

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 documente que « les répertoires dotdot sont interdits pour des raisons de sécurité » et rejette RTPATH_PROP_DOTDOT_REFS. Cet appel ne s'applique qu'à la racine de destination (GuestSessionImplTasks.cpp:1685-1686). Les noms par entrée ne passent jamais par lui. Translate (GuestCtrlPrivate.cpp:2129-2208) modifie le style des barres obliques et réduit //. Il ne rejette pas ...

Fausses pistes déjà consignées : traiter le saut exact de . / .. comme un assainisseur de chemin ; supposer que Translate canonicalise ; appliquer la vérification de la racine de destination à chaque entrée ; démarrer une VM au lieu d'un harnais source ; affirmer qu'il s'agit d'une évasion du noyau hôte ; considérer la copie depuis la destination d'un fichier unique ou la copie vers l'invité comme le résidu. Théâtre : un reverse shell. L'oracle est un fichier témoin en dehors de la destination.

Lab

cd lab
./run.sh

Compose project vbox-guestctrl-copyfrom-dotdot. Loopback 127.0.0.1:19220. Harnais source du pin v7.2.20 peel f2792cf44 : saut des . / .. exacts, GuestPath::Translate (style slash uniquement), jointure dest+sep+entry puis write/create de CopyFrom::Run, rejet DOTDOT de la racine de destination BuildDestinationPath. Ne démarre pas VirtualBox ni les Guest Additions. Le lier au loopback.

Télécharger l’outil