
音楽プレーヤーApple iTunesのMSIインストーラには、Microsoft Windowsコンピュータ上の通常の低権限ユーザーがNT AUTHORITY/SYSTEMのコンテキストで昇格した権限を取得できる脆弱性が存在しました。このリポジトリには、この脆弱性をどのように悪用できるかを示す概念実証(PoC)と、このタイプの脆弱性についてさらに学びたいセキュリティ研究者や開発者のための追加情報が含まれています。ただし、Q&Aセクションで説明されているように、その適用範囲は限られています。
SYSTEMシェルが得られませんでした。何が間違っていたのでしょうか?
これは概念実証であるため、検出を回避することについてはあまり考慮されていません。これを使用するには、リリース「Version 10.0.19041.572」より前のWindows 10 HOME Editionのインストールを実行する必要があります。このバージョンではこの脆弱性が修正されているからです。テストはWindows 10 1909で行いました。また、「Windows セキュリティ」に移動し、Microsoft Defender/Windows Defenderに関連するすべてを無効にする必要があります。リアルタイム保護によって\RPC Controlへのシンボリックリンク作成がブロックされる可能性があるためです(再起動のたびに自動的に再有効化されることを忘れないでください!)
今すぐiTunesを使うのが怖いですか?
いいえ、iTunesを最新バージョンにアップデートすれば問題ありません。
自分でビルドしなくてもPoCを実行できますか?
インターネットから.exeファイルを実行することは強くお勧めしませんが、仮想マシン内で./x64/Release/ディレクトリからPrivilege-Escalation-using-Music-Player.exeを実行することは動作するはずです。動作しない場合は、Microsoftが提供するリンク から最新のVC再頒布可能パッケージをインストールしてみてください。
実際の脆弱性は何ですか?
MSI修復中に、インストーラはC:\ProgramData\Apple Computer\iTunes\ 内に「SC Info」という低権限フォルダを作成します。正確には、ディレクトリ C:\ProgramData\Apple Computer\iTunes は全員にフルコントロールを許可していません。しかし、「SC Info」というサブフォルダはEveryone(低権限/標準ユーザーを含む)にフルコントロールを付与します。C:\ProgramData\Apple Computer\iTunes\ フォルダの内容をすべて手動で削除すると(iTunesを以前に実行したことがあるかどうかによって、「SC Info」以外にもフォルダがある可能性があります)、低権限ユーザーはC:\ProgramData\Apple Computer\iTunes\ からNT AUTHORITY/SYSTEMが書き込み可能な任意のディレクトリへのマウントポイントを作成できます。この概念実証では、「wermgr.exe.local」テクニックが使用されました。これは現在のWindows 10のバージョンではすでに緩和されており、私の知る限りWindows 10 HOMEエディションにのみ適用されます。したがって、C:\ProgramData\Apple Computer\iTunes\ から \RPC Control へのマウントポイントを作成し、次に \RPC Control\SC Info から ??\c:\windows\system32\wermgr.exe.local へのシンボリックリンクを作成し、iTunesインストーラのMSI修復オプションを使用すると、C:\Windows\System32 内に wermgr.exe.local というディレクトリが効果的に作成され、Everyoneにフルコントロールが付与されます。これにより、SC Infoフォルダの作成が\RPC Controlにリダイレクトされ、さらにRPC Control自体がフォルダ作成をSystem32ディレクトリにリダイレクトします。そこから先は(繰り返しますが、これは実際の脆弱性の一部ではなく、特権昇格の脆弱性チェーンを完了するためのものにすぎません)、低権限ユーザーがスケジュールタスクを使用して呼び出しても、NT AUTHORITY/SYSTEMとして実行されるサービスが読み込んで実行する、細工されたDLLを含む特定の名前のサブフォルダを作成できます(例:NT AUTHORITY/SYSTEMとして実行されるcmd)。詳細については、実際のコードまたは以下の「手動で再現する手順」セクションを参照してください。
これは概念実証であるため、Windows Defender/Microsoft Defenderをオフにします(Q&Aセクションもお読みください)。
バージョン12.12.9より前のiTunes(例:12.12.4.1)をインストールします。
C:\ProgramData\Apple Computer\iTunes の内容をすべて削除しますが、iTunesフォルダ自体は残します。
「C:\ProgramData\Apple Computer\iTunes」から「\RPC Control」へのマウントポイントを作成します。例として、James Forshawの symboliclink-testing-tools を使用します:
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"
iTunes MSI/iTunesインストーラEXEを使用して、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」という名前のサブフォルダを作成します(これはシステムによって異なる場合があります。C:\Windows\WinSxS\ ディレクトリから「amd64_microsoft.windows.common-controls_」で始まる最新のフォルダの名前を使用してください)。
amd64_microsoft.windows.common-controls_* フォルダ内に「comctl32.dll」という名前のDLLファイルを配置します。
次のコマンドを実行します:
schtasks.exe /Run /TN "\Microsoft\Windows\Windows Error Reporting\QueueReporting"
comctl32.dllファイル内で指定したアクションが、NT AUTHORITY/SYSTEMのコンテキストで実行されます。例:cmdウィンドウが開きます。