Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
vbox-ovf-href-dest-escape — VirtualBox 7.2.20 - Alta - Locale - Scrittura di file - Fuga dalla destinazione href OVF | Kitploit
Strumenti/GitHubGitHub/abraxas/vbox-ovf-href-dest-escape
Escalation di PrivilegiAnalisi delle VulnerabilitàAnalisi del CodiceExploitVirtualizzazione per la SicurezzaPaper e RicercaLab e Pratica
GitHub

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
abraxas/vbox-ovf-href-dest-escape

vbox-ovf-href-dest-escape

VirtualBox 7.2.20 - Alta - Locale - Scrittura di file - Fuga dalla destinazione href OVF

Vedi Repository
22 giorni faNon ancora revisionato

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

Classe: Scrittura di file Portata: Locale (host) UI:R

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44) - Oracle

Un utente host che importa un OVF/OVA ostile scrive byte di immagini disco al di fuori della cartella della nuova VM. ovf:href è il nome file di destinazione. RTPathAbsExCxx non usa RTPATHABS_F_STOP_AT_BASE. L'helper per i percorsi univoci inserisce _%i prima del suffisso e non rimuove il basename.

IDnessuna CVE al momento
ClasseScrittura di file (percorso di destinazione OVF/OVA)
PortataLocale (host) UI:R (la vittima importa un'appliance ostile)
CWECWE-22
CVSSAlto: 7.8 CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N
ProdottoOracle VM VirtualBox OSS
Affetto7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
Autenticazionenessuna su VirtualBox. L'utente host apre File/Importa o VBoxManage import.
LicenzaGNU Affero GPL v3.0
Labsolo 127.0.0.1. Harness sorgente. VirtualBox non viene avviato.

Cosa può fare un attaccante

Distribuire una directory OVF o un OVA. Inserire ../somewhere/disk.vmdk o un percorso assoluto /path/disk.iso in ovf:href. L'operatore che lo importa esegue una scrittura CREATE_REPLACE di quei byte di immagine disco con l'UID dell'importatore, incluse le directory padre che non esistevano. Suffisso obbligatorio (vmdk / iso / altre estensioni MediumFormat). Non si tratta di un rilascio senza suffisso di authorized_keys.

PrivilegioMetodo + sinkCosa concedeProvenienza
IntegritàIAppliance::read copia File/href senza rimozione del basename (ovfreader.cpp). Appliance::interpret() imposta dest = di.strHref (ApplianceImplImport.cpp 802-851).Il nome file di destinazione è scelto dall'attaccante, inclusi ../ e percorsi assoluti.Provato in lab (href relativi e assoluti)
Integritài_ensureUniqueImageFilePath (ApplianceImpl.cpp 1126-1160) chiama RTPathAbsExCxx(strAbsName, aMachineFolder, aName) senza RTPATHABS_F_STOP_AT_BASE. La collisione inserisce _%i prima del suffisso di aName, non di un basename.La destinazione univoca esce comunque dalla cartella della macchina. ../oracle/WITNESS.vmdk diventa ../oracle/WITNESS_1.vmdk.Provato in lab (unique-keeps-dotdot=yes)
IntegritàImport i_importOneDiskImage AbsEx di nuovo (ApplianceImplImport.cpp 4169-4171). i_importCreateAndWriteDestinationFile (1043-1053) crea le directory padre e poi RTFILE_O_CREATE_REPLACE.I byte dell'immagine disco finiscono fuori dalla cartella della VM. Un href assoluto ignora la cartella della macchina. Il controllo disk.vmdk rimane nella cartella.Provato in lab (relative-escape=yes absolute-href=yes control-in-folder=yes)
RicognizioneLa procedura guidata di importazione / VBoxManage import --dry-run mostra la destinazione.Il percorso è visibile. Non è di per sé una fuga di segreti.Dedotto
DisponibilitàDestinazione relativa che finisce sul disco di un'altra VM.Sovrascrive quel file con l'UID dell'importatore.Dedotto (stessa scrittura CREATE_REPLACE)
ChiusoDestinazione senza suffisso MediumFormatL'importazione genera has no extension. Non è una scrittura senza suffisso di authorized_keys / crontab.Chiuso
ChiusoDestinazione NVRAMForzata a {vmname}.nvram nella cartella della macchina.Chiuso
ChiusoNome VM ..sanitiseMachineFilename lo altera.Chiuso
ChiusoCartelle condivise / ExtraData / RawFile serialeSanificati sul percorso vbox:Machine.Chiuso
ChiusoKernel host, guest-to-hostNon questo residuo. Nessun avvio della VM richiesto. Stesso UID dell'importatore.Chiuso

OVA è il percorso pulito: il membro del tar fornisce i byte, href fornisce la destinazione con escape. Niente 3D, niente Guest Additions, niente VRDP, non PUEL.

Come l'ho trovato

Mi sono fermato sul tag v7.2.20 (f2792cf44) dopo la CPU di settembre 2026 e ho letto l'import OVF. ExtraData, cartelle condivise, destinazione NVRAM e seriale RawFile sono già rimossi. La destinazione del disco no. interpret() copia di.strHref direttamente nel valore VBox di 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 completa quel nome rispetto alla cartella della macchina senza RTPATHABS_F_STOP_AT_BASE, poi modifica aName sul posto:

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 ripete AbsEx sulla dest ancora relativa (ApplianceImplImport.cpp 4169-4171) e sulle scritture CREATE_REPLACE. I test IPRT documentano la stessa unione: il secondo argomento assoluto vince; /VirtualBox/Machines più ../VirtualBox.xml è /VirtualBox/VirtualBox.xml.

Vicoli ciechi già registrati: trattare una scrittura authorized_keys senza suffisso come il residuo (l'import genera un'eccezione); destinazione NVRAM (forzata nella cartella); nome VM .. (sanitizzatore); cartelle condivise / ExtraData / RawFile seriale (già sanitizzati). Teatro: kernel host, guest-to-host. L'oracolo è una riga testimone esterna alla cartella della macchina più un disk.vmdk di controllo che è rimasto al suo posto.

Lab

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

o

cd lab
./run.sh

Harness sorgente di interpret dest-join, unique-path e della scrittura import CREATE_REPLACE. Docker compose, loopback, nessun binario VirtualBox. Cartella macchina /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

La correzione

Rimuovere il basename da ovf:href prima che diventi una destinazione, oppure passare RTPATHABS_F_STOP_AT_BASE (e rifiutare i nomi assoluti). Rifiutare RTPATH_PROP_DOTDOT_REFS. Il percorso univoco dovrebbe modificare il basename, non la stringa relativa.

Riferimenti

Scarica lo strumento