
PoC для LPE с QlikView
Затронутое приложение: QlikView Платформа: Windows Проблема: локальное повышение привилегий через установщик MSI (гонка при DLL-хиджинге) Обнаружено и сообщено: Pawel Karwowski и Julian Horoszkiewicz (Eviden Red Team)
Подробности: На системах с установленным QuikView12 обычные пользователи могут запустить установщик в режиме «восстановление», выполнив следующую команду: msiexec.exe /fa PATH_TO_INSTALLER_FILE.msi
Это запускает службу msiexec, которая выполняет процесс восстановления, запуская множество действий и, среди прочего, создаёт файлы в каталоге C:\Users\pk\AppData\Local\Temp, имена которых генерируются динамически по следующему шаблону: "wac<четыре случайные буквы или цифры>.tmp", например, wac98DF.tmp.
Затем процесс использует сгенерированный файл wac****.tmp (исполняемый), работающий как NT AUTHORITY/SYSTEM, для записи и загрузки своего образа.
Поскольку каталог C:\Users\pk\AppData\Local\ принадлежит обычному пользователю, каталог C:\Users\pk\AppData\Local\Temp\ наследует эти разрешения, что позволяет обычному пользователю вмешиваться в содержимое каталога, например, перезаписывая динамически создаваемые DLL-файлы. Это создаёт состояние гонки. Если пользователю удаётся найти DLL-файл, он может попытаться перезаписать его собственным файлом. Если замена будет выполнена в правильном (очень узком) временно́м окне — сразу после того, как установщик записал исходный файл и закрыл файловый дескриптор, но до того, как установщик вызовет LoadLibrary() для этого файла, — злоумышленник сможет добиться выполнения собственного DLL-файла с правами NT AUTHORITY/SYSTEM, что приводит к локальному повышению привилегий.
Эксплуатация осуществляется с помощью powershell-скрипта, который запускает .MSI-файл, проверяет наличие и создание интересующего нас легитимного EXE-файла и многократно копирует исполняемый файл Proof of Concept в каталог Appdata\Local\Temp, фактически перезаписывая легитимный EXE-файл. После загрузки EXE-файл PoC создаёт файл poc.txt в C:\Users\Public, вместе с командной строкой, которая его вызвала, и выводом whoami.
Контрольная сумма SHA256 MSI-файла: 0267324393384ED2B0746D6CEBDD0FD7D8DBD26853BDA58F875F20F40EBBB898