音乐播放器 Apple iTunes 的 MSI 安装程序存在一个漏洞,允许 Microsoft Windows 计算机上的普通低权限用户以 NT AUTHORITY/SYSTEM 上下文获取提升的权限。此仓库包含一个概念验证(PoC),展示如何利用此漏洞,并为安全研究人员和希望了解更多此类漏洞的开发者提供更多信息。然而,其适用性有限,您可以在问答部分了解原因。
我没有获得 SYSTEM shell。我哪里做错了?
由于这是一个概念验证,并未过多考虑不被检测的问题。要使用此 PoC,您应该运行 Windows 10 家庭版,版本低于 'Version 10.0.19041.572',因为在该版本中此漏洞已被修补。我使用 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 家庭版。因此,如果您创建从 C:\ProgramData\Apple Computer\iTunes\ 到 \RPC Control 的挂载点,然后创建从 \RPC Control\SC Info(请记住,SC Info 是安装程序在 iTunes 文件夹内创建的文件夹名称)到 ??\c:\windows\system32\wermgr.exe.local 的符号链接,然后使用 iTunes 安装程序的 MSI 修复选项,您实际上会在 C:\Windows\System32 内创建一个名为 wermgr.exe.local 的目录,该目录授予 Everyone 完全控制权。这会将 SC Info 文件夹的创建重定向到 \RPC Control,而 RPC Control 本身又将文件夹创建重定向到 System32 目录。从此开始(再次说明,这不是实际漏洞的一部分,仅用于完成权限提升漏洞链),您可以创建一个具有特定名称的子文件夹,其中包含一个精心制作的 DLL,当作为 NT AUTHORITY/SYSTEM 运行的服务(即使由低权限用户通过计划任务调用)加载并执行其中的命令时,该 DLL 将被加载执行(例如,以 NT AUTHORITY/SYSTEM 身份运行的 cmd)。有关更多详细信息,请参阅实际代码或下面的“手动复现步骤”部分。
由于这是一个概念验证,请关闭 Windows Defender/Microsoft Defender(另请阅读问答部分)
安装版本低于 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_”开头的最新文件夹名称)
将名为“comctl32.dll”的 DLL 文件放入 amd64_microsoft.windows.common-controls_* 文件夹中
运行以下命令:
schtasks.exe /Run /TN "\Microsoft\Windows\Windows Error Reporting\QueueReporting"
您指定的 comctl32.dll 文件中的操作现在将在 NT AUTHORITY/SYSTEM 上下文中执行,例如,打开一个 cmd 窗口