
PoC for LPE with QlikView
Aplicação afetada: QlikView Plataforma: Windows Problema: Escalação Local de Privilégio via instalador MSI (condição de corrida de sequestro de DLL) Descoberto e reportado por: Pawel Karwowski e Julian Horoszkiewicz (Eviden Red Team)
Detalhes: Em sistemas com QuikView12 instalado, é possível para usuários comuns acionar o instalador no modo "reparo", emitindo o seguinte comando: msiexec.exe /fa PATH_TO_INSTALLER_FILE.msi
Isso aciona o serviço msiexec, que realiza o processo de reparo, executando múltiplas ações e, entre outras, cria arquivos dentro do diretório C:\Users\pk\AppData\Local\Temp, que têm seus nomes gerados dinamicamente, no seguinte modelo: "wac<quatro letras ou números aleatórios>.tmp", por exemplo, wac98DF.tmp.
O processo então usa o arquivo wac****.tmp gerado (executável) executando como NT AUTHORITY/SYSTEM para escrever e carregar uma imagem de si mesmo.
Como o diretório C:\Users\pk\AppData\Local\ é de propriedade do usuário comum, o diretório C:\Users\pk\AppData\Local\Temp\ herda as permissões, tornando possível para o usuário comum interferir com o conteúdo do diretório, por exemplo, sobrescrevendo os arquivos DLL gerados dinamicamente. Isso cria uma condição de corrida. Se conseguir localizar o arquivo DLL, eles podem tentar sobrescrevê-los com seu próprio arquivo. Se conseguirem realizar a substituição na janela de tempo correta (muito estreita) - logo após o arquivo original ter sido escrito pelo instalador e o descritor de arquivo ter sido fechado, mas antes do instalador chamar LoadLibrary() nele, eles podem fazer com que seu próprio arquivo DLL seja executado como NT AUTHORITY/SYSTEM, criando uma Escalação Local de Privilégio.
A exploração é feita com o uso de um script PowerShell que executa o arquivo .MSI, verifica a presença e criação do nosso EXE legítimo de interesse, e copia repetidamente meu EXE de Prova de Conceito para o diretório Appdata\Local\Temp, efetivamente sobrescrevendo o arquivo EXE legítimo. Após ser carregado, o arquivo EXE PoC cria um arquivo poc.txt em C:\Users\Public, juntamente com a linha de comando que o chamou e a saída whoami.
Soma SHA256 do arquivo MSI: 0267324393384ED2B0746D6CEBDD0FD7D8DBD26853BDA58F875F20F40EBBB898