【0day】通过 iTunes 实现 Windows 本地提权

admin 2024年10月9日13:38:46评论23 views字数 4538阅读15分7秒阅读模式
声明:

文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

 

目录

  • CVE-2024–44193
  • 一言蔽之
  • 工具
    • Oplock
    • FilesystemEoPs
  • Writeup
    • FolderContentsDeleteToFolderDelete源代码编辑
    • 漏洞服务AppleMobileDeviceService.exe简介
    • 路径中存在的用户权限问题:C:ProgramDataApple*
    • 任意文件/文件夹删除
    • NTFS 连接点
  • EXP开发
  • PoC

CVE-2024–44193

这是一篇关于 CVE-2024-44193 的文章,是 iTunes 版本 12.13.2.3 中的本地权限提升漏洞。

Apple 已于 2024 年 9 月 12 日修复了该漏洞。Apple 安全建议链接详见:https://support.apple.com/en-us/121328

iTunes 版本 12.13.2.3 在安装 Apple 设备发现服务:C:Program FilesCommon FilesAppleMobile Device SupportAppleMobileDeviceService.exe 容易受到本地权限升级漏洞攻击。

一言蔽之

简单的概括,漏洞是由于C:ProgramDataApple*路径中的用户权限管理不善而导致的。

这允许本地组“用户”的成员在该路径中写入任意文件,当AppleMobileDeviceService.exe服务重新启动时(可由非特权用户触发),可以任意删除文件夹/文件,从而以 SYSTEM 权限在系统上执行任意代码。

工具

如果你已经熟悉以下工具,可跳过本小节内容。

Oplock

Oplock工具是Windows中使用“opportunistic lock”的工具。该工具允许我们通过锁定文件来“停止”进程,直到满足某些要求,但它也可以用于出于恶意目的“停止”进程,例如为我们的漏洞利用获得足够的时间。

  • 文件夹内容删除到文件夹删除

FilesystemEoPs

FolderContentsDeleteToFolderDelete 工具的工作原理是自动创建一个包含文件的文件夹,然后在文件上设置 oplock 以停止该进程,当进程停止时,文件将从文件夹中移出。

然后,该文件夹将被删除,并重新创建为目标目的地的 NTFS 连接。

当oplock被取消并且进程继续时,文件/文件夹删除将遵循新创建的 NTFS 连接到目标目的地,并在继续执行之前删除该文件。

  • 文件夹或文件删除到系统

扩展阅读:滥用任意文件删除来提升权限和其它绝招

Writeup

漏洞服务AppleMobileDeviceService.exe简介

安装 iTunes 后,还会安装一项服务:AppleMobileDeviceService.exe ,该服务会以 SYSTEM 权限运行。当使用 Windows Sysinternals Process Monitor (Procmon) 调查该服务时,会发现了一些令人担忧的行为。

该服务将递归地遍历该目录中的所有文件 C:ProgramDataAppleLockdown* 路径,并将删除所有不属于该路径的文件夹和文件。

对于本地测试,可以使用 ProcessHacker2 强制重新启动服务以检查程序行为,观察到的行为是,以 SYSTEM 身份运行的服务将查询该目录及其中的所有子目录,然后它将运行CreateFile操作,并启用Delete On Close选项,这意味着 SYSTEM 服务将查询 C:ProgramDataAppleLockdown* 路径并递归查询该目录中的子文件夹和文件并将其删除。

【0day】通过 iTunes 实现 Windows 本地提权

路径中存在的用户权限问题:C:ProgramDataApple*

Windows Sysinternals https://learn.microsoft.com/en-us/sysinternals/ accesschk64.exe 可用于检查特定文件夹的访问权限。

本地组“Users”的成员具有写入权限 C:ProgramDataAppleLockdown 文件夹,可以使低权限用户可以在该文件夹中写入任意文件。

【0day】通过 iTunes 实现 Windows 本地提权

任意文件/文件夹删除

因为可以在锁定路径中写入任意文件,并且系统进程将在服务重新启动时删除它们,所以可以创建任意文件/文件夹删除原语。

为了说明这一点,我们在 Lockdown 文件夹中创建了两个子文件夹。子文件夹a 和子文件夹a 中的子文件夹b。看起来像这样:C:ProgramDataAppleLockdownab 。

在子文件夹a中有一个名为aa.txt的文本文件,在子文件夹b中有一个名为bb.txt的文本文件:

C:ProgramDataAppleLockdownaaa.txt

C:ProgramDataAppleLockdownabbb.txt

【0day】通过 iTunes 实现 Windows 本地提权

从上面的屏幕截图中可以看出,“CreateFile”操作正在运行,并且 aa.txt 上的“Delete On Close”选项将其删除。

当 SYSTEM 进程对aa.txt和bb.txt运行CreateFile操作并使用文件上的Delete On Close选项时,SYSTEM 进程AppleMobileDeviceService.exe将删除这些文件。

现在我们可以在 Lockdown 文件夹中创建任意文件,并删除它们,这将引导我们进行下一个巧妙的利用。

NTFS 连接点

在 Windows 中,可以使用 NTFS 连接将文件夹定向到其他位置。在某种程度上,这类似于 Linux 中的符号链接。

为了说明这一点,可以在C:ProgramDataAppleLockdown文件夹中创建一个指向桌面上文件夹的 NTFS 连接(符号链接)。

可以使用 PowerShell 自行实现此目的 New-Item -Type Junction -Path whatever -Target "C:UsersuserDesktopAAyes" ,或者使用 ZDI 提供的工具集-FilesystemEoPs:

运行以下命令将 Lockdown 文件夹中的 NTFS 连接点指向桌面上的“目标”:

.FolderContentsDeleteToFolderDelete.exe /target "C:UsersuserDesktopAAyes" /initial "C:ProgramDataAppleLockdown"

当服务重新启动时,新创建的 NTFS 连接将指向位于桌面上的AAyes 。

由于服务以 SYSTEM 身份运行带有Delete On Close选项的CreateFile操作,因此文件将被删除。

因为该操作是使用 SYSTEM 权限运行的,所以就有了一个任意文件夹或文件删除原语,这意味着可以在主机上以 SYSTEM 身份执行代码。

【0day】通过 iTunes 实现 Windows 本地提权

注:由于文件名/文件夹名称限制,需要在FolderContentsDeleteToFolderDelete 项目中进行某些源代码编辑,文件名/文件夹名称必须非常短才能进行删除。

其背后的原因目前尚不清楚。

FolderContentsDeleteToFolderDelete源代码编辑

const wchar_t folder2path[] = L"C:\d";
const wchar_t exploitFileName[] = L"e.txt";

// It was required to shorten the two consstants: “folder2path” and “exploitFileName”
// They where changed to: L"C:\d" and L"e.txt" because it seemed that file and folder name length had a meaningful impact on exploit functionality.

[...]

// We also needed to edit the “folder1path” value to L”c” in order to shorten it.
folder1path += L"c";

EXP开发

由于该服务将递归地遵循任何连接点(符号链接),因此可以使用易受攻击的 Apple 服务(该服务将遵循 NTFS 连接点)以 SYSTEM 身份任意删除系统上的文件。

由于易受攻击的服务方便地允许非特权用户使用 Windows GUI 使用“应用程序 -> 安装的应用程序 -> Apple 移动设备支持 -> 修改 -> 修复”技巧来重新启动服务,因此可以随意触发该漏洞利用。

一旦服务重新启动,它将遵循 NTFS 连接,而确定的程序行为决定了服务将删除用户选择指向的文件或文件夹。

换句话说,由用户决定该服务将删除哪些文件或文件夹,因为它作为 SYSTEM 运行,所以我们几乎可以删除系统上的任何文件(无需 TrustedInstaller 权限的文件)。

我们可以精心设计一系列事件来执行以下操作:

  1. 准备 oplock 在方便的时候停止进程,以便准备利用步骤
  2. 重启服务, oplock被触发,进程被停止
  3. 使用FolderOrFileDeleteToSystem.exe准备MSI回滚技巧
  4. 使用FolderContentsDeleteToFolderDelete.exe 准备 NTFS 连接,将文件删除原语指向由 MSI 回滚技巧步骤准备的 Config.MSI
  5. 释放oplock

PoC

  1. 在 C:ProgramDataAppleLockdown 上设置 Oplock
    .SetOpLock.exe C:ProgramDataAppleLockdown

【0day】通过 iTunes 实现 Windows 本地提权

  1. 触发服务重新启动 应用程序 -> 已安装的应用程序 -> Apple 移动设备支持 -> 修改 -> 修复
  2. 准备MSI回滚技巧

.FolderOrFileDeleteToSystem.exe

  1. 准备 Windows 连接(符号链接)步骤,将服务任意文件夹/文件删除原语指向 MSI 安装程序

.FolderContentsDeleteToFolderDelete.exe /target 'C:Config.Msi' /initial "C:ProgramDataAppleLockdown"

  1. 释放oplock

当 Oplock 在第五步中释放时,监视FolderContentsDeleteToFolderDelete 进程,以验证是否遵循 NTFS junciton 以及位于 C: 中的 Config.MSI 是否已正确删除。

然后,监视FolderOrFileDeletionToSystem.exe 进程,以验证我们是否赢得了竞争条件,以及是否写入了包含修改后的回滚脚本的“恶意”Config.MSI 文件夹。

如果一切顺利,可以按 CTRL+ALT+DELETE,打开右下角的辅助功能菜单,然后打开屏幕键盘。

因为已经使用恶意回滚脚本覆盖了 C:Program FilesCommon Filesmicrosoft sharedinkHID.DLL 中的 HID.DLL,所以 CMD shell 将作为 SYSTEM 弹出来完成我们的利用。

【0day】通过 iTunes 实现 Windows 本地提权

执行和监视FolderContentsDeleteToFolderDelete.exe。

【0day】通过 iTunes 实现 Windows 本地提权

执行和监视FolderOrFileDeleteToSystem.exe。

【0day】通过 iTunes 实现 Windows 本地提权

弹出 SYSTEM Shell。

以上内容由骨哥翻译并整理。

原文始发于微信公众号(骨哥说事):【0day】通过 iTunes 实现 Windows 本地提权

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月9日13:38:46
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【0day】通过 iTunes 实现 Windows 本地提权https://cn-sec.com/archives/3245467.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息