
QlikView における LPE の PoC
影響を受けるアプリケーション: 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<ランダムな4文字の英数字>.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として実行させることができ、ローカル権限昇格を引き起こします。
悪用は、.MSIファイルを実行し、対象の正規EXEの存在と生成を監視し、Proof of Concept EXEをAppdata\Local\Tempディレクトリに繰り返しコピーして、正規EXEファイルを実質的に上書きするPowerShellスクリプトを使用して行われます。読み込まれた後、PoC EXEファイルは、それを呼び出したコマンドラインとwhoamiの出力とともに、C:\Users\Publicにpoc.txtファイルを作成します。
MSIファイルのSHA256ハッシュ: 0267324393384ED2B0746D6CEBDD0FD7D8DBD26853BDA58F875F20F40EBBB898