Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
vbox-guestctrl-copyfrom-dotdot — VirtualBox 7.2.20 — высокий уровень — локальная — запись в файл — Guest Control copy-from DOTDOT | Kitploit
Инструменты/GitHubGitHub/abraxas/vbox-guestctrl-copyfrom-dotdot
Повышение привилегийАнализ уязвимостейАнализ КодаЭксплуатацияВиртуализация для безопасностиСтатьи и ИсследованияЛаборатории и Практика
GitHub

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
abraxas/vbox-guestctrl-copyfrom-dotdot

vbox-guestctrl-copyfrom-dotdot

VirtualBox 7.2.20 — высокий уровень — локальная — запись в файл — Guest Control copy-from DOTDOT

Репозиторий
33 дней назадЕщё не проверено

Abraxas Labs - vbox-guestctrl-copyfrom-dotdot

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

vbox-guestctrl-copyfrom-dotdot

Класс: запись файлов Достижимость: локальный (гостевой) confused-deputy

Oracle VM VirtualBox OSS 7.2.20 (f2792cf44) — Oracle

Хост-метод IGuestSession::directoryCopyFromGuest / VBoxManage guestcontrol copyfrom конкатенирует имена гостевых DIR_NOTIFY к пути назначения. FsList::AddDirFromGuest пропускает только точные . и ... GuestPath::Translate использует слэш-стиль и сворачивание двойных слэшей. BuildDestinationPath отклоняет RTPATH_PROP_DOTDOT_REFS на корне назначения, указанном хостом, а не на именах отдельных записей.

Гость, отвечающий на инициированное хостом копирование каталога именами, содержащими .., записывает файлы от имени UID VBox за пределами каталога назначения.

IDCVE пока нет
КлассЗапись файлов (выход за пределы каталога назначения на хосте)
ДостижимостьЛокальный (гостевой) confused-deputy. Хост инициирует копирование. Гость задаёт имена файлов.
CWECWE-22
CVSSВысокий: 8.2 CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
ПродуктOracle VM VirtualBox OSS
Затронуто7.2.20 (f2792cf44f663989818507e36d3db5f978523c5e)
АутентификацияGuest Additions (или заменяющий клиент HGCM) плюс инициированное хостом копирование каталога
ЛицензияGNU Affero GPL v3.0
ЛабораторияТолько 127.0.0.1. Исходный стенд. VirtualBox не загружает.

Что может сделать атакующий

Guest Control по своей природе работает от хоста к гостю. Остаточная уязвимость — обратная: пользователь хоста копирует гостевой каталог, а гость отвечает на HOST_MSG_DIR_READ именами GUEST_MSG_DIR_NOTIFY / GUEST_DIR_NOTIFYTYPE_READ. Main конкатенирует эти имена к пути назначения и открывает их.

Целостность (доказано в лаборатории)

МетодТочка срабатыванияПривилегия
Хост-метод IGuestSession::directoryCopyFromGuest / VBoxManage guestcontrol copyfrom для гостевого каталога. Имя в листинге гостя ../oracle/VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS.CopyFrom::Run выполняет strDstAbs = dest + native_sep + pEntry->strPath, затем GuestPath::Translate, затем fileCopyFromGuest -> RTFileOpen(RTFILE_O_WRITE | RTFILE_O_OPEN_CREATE).Создание/перезапись файла на хосте за пределами каталога назначения от имени UID VBox. Каталог назначения в лаборатории /work/vbox-copy. Лаборатория записала /work/oracle/VBOX-GUESTCTRL-COPYFROM-DOTDOT-WITNESS. Содержимое выбирает гость (уведомление о чтении файла).

Точные имена каталогов . и .. пропускаются и не приводят к записи. Файл, имя которого содержит .., сохраняется и присоединяется.

Целостность (предположительно, не в этой лаборатории)

МетодТочка срабатыванияПривилегия
То же копирование. Гость перечисляет ../../../.ssh/authorized_keys (или DOS-вариант ..\..\...), при этом каталог назначения на хосте — /tmp/vbox-copy / C:\Temp\vbox-copy.То же присоединение + RTFileOpen.Создание или перезапись любого пути на хосте, доступного для записи этому UID. Вложенные имена с --recursive проходят дальше.

Разведка

Ничего сверх каталога назначения, уже выбранного хостом. Из этой остаточной уязвимости гость не узнаёт дополнительных путей на хосте.

Доступность (предположительно)

Перезапись файлов, доступных для записи UID VBox. Это не краш-уязвимость. CVSS A:N.

Чего эта остаточная уязвимость не даёт

  • Ядро хоста. Другие ВМ. VBoxSVC.
  • Однофайловый fileCopyFromGuest: место назначения полностью задаётся хостом; гость лишь поставляет байты в этот путь.
  • Копирование в гостя: место назначения находится в госте. AddDirFromHost пропускает . / .. в листинге хоста.
  • Файлы, в которые UID VBox не может писать (/etc для обычного пользователя, домашний каталог другого пользователя).
  • Windows restricted token / AppContainer. Здесь пишет процесс пользователя VBox, а не обход механизмов защиты.
  • Инъекция гостем HOST_MSG_*. svcCall диспетчеризует только GUEST_MSG_*.
  • Санитайзер путей в guestCtrlValidateDirEntryEx. Эта проверка касается UTF-8/размера, а не ...

Требуются Guest Additions (или заменяющий их клиент HGCM, владеющий сессией) и инициированное хостом копирование каталога из гостя. Без 3D. Без VRDP. Не PUEL. Confused-deputy: пользователь хоста копирует из враждебного гостя.

Как я это нашёл

Я зафиксировал VirtualBox/virtualbox v7.2.20 (f2792cf44). Охота на Guest Control H04. Только гость-в-хост. TOCTOU общей папки (P0 1037) — родственный класс на другом сервисе, и на этой фиксации он закрыт (RTPathStartsWith после лексической абсолютизации). Копирование из гостя в Guest Control конкатенирует имена DIR_NOTIFY, а не имена SHFL.

AddDirFromGuest строит strEntry из гостевого Name и пропускает только точные . / ..:

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 затем присоединяет сохранённый путь к dest и только переводит:

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 документирует: «Каталоги с точками запрещены по соображениям безопасности» и отклоняет RTPATH_PROP_DOTDOT_REFS. Этот вызов выполняется только для корня назначения (GuestSessionImplTasks.cpp:1685-1686). Имена отдельных записей никогда через него не проходят. Translate (GuestCtrlPrivate.cpp:2129-2208) меняет стиль слэшей и сворачивает //. Он не отклоняет ...

Уже зафиксированные неверные пути: трактовка точного пропуска . / .. как санитайзера путей; предположение, что Translate выполняет канонизацию; применение проверки корня назначения к каждой записи; загрузка виртуальной машины вместо исходного стенда; утверждение, что это побег на уровне ядра хоста; трактовка копирования из назначения или копирования в гостя для одного файла как остаточной уязвимости. Театральщина: обратная оболочка. Оракул — файл-свидетель вне назначения.

Лаборатория

cd lab
./run.sh

Соберите проект vbox-guestctrl-copyfrom-dotdot. Loopback 127.0.0.1:19220. Исходный harness пина v7.2.20 peel f2792cf44: пропуск точных . / .., GuestPath::Translate (только slash-стиль), CopyFrom::Run объединение dest+sep+entry, затем write/create, отклонение DOTDOT в dest-root BuildDestinationPath. Не загружает VirtualBox или Guest Additions. Привяжите его к loopback.

Скачать инструмент