
Код доказательства концепции для CVE-2023-32353: локальное повышение привилегий через iTunes в Windows
MSI-установщик музыкального плеера Apple iTunes содержал уязвимость, позволяющую обычному пользователю с низкими привилегиями на компьютере под управлением Microsoft Windows получить повышенные разрешения в контексте NT AUTHORITY/SYSTEM. Этот репозиторий содержит доказательство концепции (PoC), демонстрирующее, как это можно было бы эксплуатировать, а также дополнительную информацию для исследователей безопасности и разработчиков, желающих узнать больше об этом типе уязвимости. Однако применимость этого ограничена, как вы можете прочитать в разделе «Вопросы и ответы».
Я не получил оболочку SYSTEM. Что я сделал не так?
Поскольку это доказательство концепции, о незаметности особо не заботились. Для использования вам следует запустить установку Windows 10 HOME Edition версии до «Version 10.0.19041.572», так как в этой версии данная уязвимость была исправлена. Я проводил тестирование на Windows 10 1909. Также вам следует перейти в «Безопасность Windows» и отключить всё, связанное с Microsoft Defender/Защитником Windows, поскольку они, похоже, блокируют создание симлинка в \RPC Control с помощью защиты в реальном времени (которая автоматически включается при каждой перезагрузке, помните об этом!)
Стоит ли мне бояться использовать iTunes сейчас?
Нет, просто обновитесь до последней версии iTunes, и всё будет в порядке.
Могу ли я запустить PoC, не собирая его самостоятельно?
Хотя я настоятельно рекомендую никому не запускать .exe файлы из интернета, запуск Privilege-Escalation-using-Music-Player.exe из папки ./x64/Release/ на виртуальной машине должен сработать. Если нет, попробуйте установить последнюю версию распространяемого пакета VC из ссылок, предоставленных Microsoft.
В чём заключается сама уязвимость?
Во время восстановления MSI установщик создаёт папку с низкими привилегиями под названием «SC Info» внутри C:\ProgramData\Apple Computer\iTunes. Если быть точным, каталог C:\ProgramData\Apple Computer\iTunes не даёт всем полного контроля. Однако подпапка «SC Info» предоставляет всем (включая пользователей с низкими привилегиями/обычных пользователей) полный контроль. Если вручную удалить всё содержимое папки C:\ProgramData\Apple Computer\iTunes\ (в зависимости от того, запускали ли вы iTunes раньше, там может быть больше папок, чем просто «SC Info»), то пользователь с низкими привилегиями сможет создать точку монтирования из C:\ProgramData\Apple Computer\iTunes\ в любой другой каталог, доступный для записи NT AUTHORITY/SYSTEM. В этом доказательстве концепции использовалась техника «wermgr.exe.local», которая уже устранена в текущих версиях Windows 10 и, насколько мне известно, применима только к Windows 10 HOME edition. Таким образом, если создать точку монтирования из C:\ProgramData\Apple Computer\iTunes\ в \RPC Control, а затем симлинк из \RPC Control\SC Info (напомним, SC Info — это имя папки, которую установщик создаёт внутри папки iTunes) в ??\c:\windows\system32\wermgr.exe.local, а затем использовать опцию восстановления MSI установщика iTunes, вы фактически создадите каталог с именем wermgr.exe.local внутри C:\Windows\System32, который даёт полный контроль всем. Это эффективно перенаправит создание папки SC Info в \RPC Control, а сам \RPC Control перенаправит создание папки в каталог System32. Оттуда (опять же, это не часть самой уязвимости, а лишь завершение цепочки повышения привилегий) вы можете создать специально названную подпапку с поддельной DLL, которую служба, работающая как NT AUTHORITY/SYSTEM, загрузит и выполнит команды, даже если она вызвана запланированной задачей от имени пользователя с низкими привилегиями (например, cmd, работающая как NT AUTHORITY/SYSTEM). Для получения более подробной информации обратитесь к самому коду или к разделу «Шаги для ручного воспроизведения» ниже.
Поскольку это доказательство концепции, отключите Защитник Windows/Microsoft Defender (также прочитайте раздел «Вопросы и ответы»)
Установите iTunes версии ниже 12.12.9 (например, 12.12.4.1)
Удалите всё содержимое C:\ProgramData\Apple Computer\iTunes, но оставьте саму папку iTunes
Создайте точку монтирования из «C:\ProgramData\Apple Computer\iTunes» в «\RPC Control», например, с помощью утилит symboliclink-testing-tools от James Forshaw:
CreateMountPoint.exe "C:\ProgramData\Apple Computer\iTunes" "\RPC Control"
Создайте симлинк из «\RPC Control\SC Info» в «??\c:\windows\system32\wermgr.exe.local»
CreateDosDeviceSymlink.exe "\RPC Control\SC Info" "??\c:\windows\system32\wermgr.exe.local"
Используя MSI-установщик iTunes/EXE-установщик iTunes, «восстановите» вашу установку iTunes (если у вас больше нет установщика, вы можете найти «iTunes64.msi» в этой папке: C:\ProgramData\Apple Computer\Installer Cache\iTunes <версия>)
Перейдите в c:\windows\system32\wermgr.exe.local\
Создайте подпапку с именем «amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.18362.418_none_e6c6b287130d565d» (на вашей системе это может отличаться; используйте имя последней папки, начинающейся с «amd64_microsoft.windows.common-controls_», из каталога C:\Windows\WinSxS)
Поместите DLL-файл с именем «comctl32.dll» внутрь папки amd64_microsoft.windows.common-controls_*
Выполните эту команду:
schtasks.exe /Run /TN "\Microsoft\Windows\Windows Error Reporting\QueueReporting"
Действие, которое вы указали внутри вашего comctl32.dll, теперь будет выполнено в контексте NT AUTHORITY/SYSTEM, например, откроется окно cmd.