声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
文章原文:https://gugesay.com/archives/3457
不想错过任何消息?设置星标↓ ↓ ↓
目录
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 Files\Common Files\Apple\Mobile Device Support\AppleMobileDeviceService.exe 容易受到本地权限升级漏洞攻击。
一言蔽之
简单的概括,漏洞是由于C:\ProgramData\Apple*路径中的用户权限管理不善而导致的。
这允许本地组“用户”的成员在该路径中写入任意文件,当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:\ProgramData\Apple\Lockdown* 路径,并将删除所有不属于该路径的文件夹和文件。
对于本地测试,可以使用 ProcessHacker2 强制重新启动服务以检查程序行为,观察到的行为是,以 SYSTEM 身份运行的服务将查询该目录及其中的所有子目录,然后它将运行CreateFile操作,并启用Delete On Close选项,这意味着 SYSTEM 服务将查询 C:\ProgramData\Apple\Lockdown* 路径并递归查询该目录中的子文件夹和文件并将其删除。
路径中存在的用户权限问题:C:\ProgramData\Apple*
Windows Sysinternals https://learn.microsoft.com/en-us/sysinternals/ accesschk64.exe 可用于检查特定文件夹的访问权限。
本地组“Users”的成员具有写入权限 C:\ProgramData\Apple\Lockdown\ 文件夹,可以使低权限用户可以在该文件夹中写入任意文件。
任意文件/文件夹删除
因为可以在锁定路径中写入任意文件,并且系统进程将在服务重新启动时删除它们,所以可以创建任意文件/文件夹删除原语。
为了说明这一点,我们在 Lockdown 文件夹中创建了两个子文件夹。子文件夹a 和子文件夹a 中的子文件夹b。看起来像这样:C:\ProgramData\Apple\Lockdown\a\b 。
在子文件夹a中有一个名为aa.txt的文本文件,在子文件夹b中有一个名为bb.txt的文本文件:
C:\ProgramData\Apple\Lockdown\a\aa.txt
C:\ProgramData\Apple\Lockdown\a\b\bb.txt
从上面的屏幕截图中可以看出,“CreateFile”操作正在运行,并且 aa.txt 上的“Delete On Close”选项将其删除。
当 SYSTEM 进程对aa.txt和bb.txt运行CreateFile操作并使用文件上的Delete On Close选项时,SYSTEM 进程AppleMobileDeviceService.exe将删除这些文件。
现在我们可以在 Lockdown 文件夹中创建任意文件,并删除它们,这将引导我们进行下一个巧妙的利用。
NTFS 连接点
在 Windows 中,可以使用 NTFS 连接将文件夹定向到其他位置。在某种程度上,这类似于 Linux 中的符号链接。
为了说明这一点,可以在C:\ProgramData\Apple\Lockdown文件夹中创建一个指向桌面上文件夹的 NTFS 连接(符号链接)。
可以使用 PowerShell 自行实现此目的 New-Item -Type Junction -Path whatever -Target "C:\Users\user\Desktop\AAyes" ,或者使用 ZDI 提供的工具集-FilesystemEoPs:
运行以下命令将 Lockdown 文件夹中的 NTFS 连接点指向桌面上的“目标”:
.\FolderContentsDeleteToFolderDelete.exe /target "C:\Users\user\Desktop\AAyes" /initial "C:\ProgramData\Apple\Lockdown"
当服务重新启动时,新创建的 NTFS 连接将指向位于桌面上的AAyes 。
由于服务以 SYSTEM 身份运行带有Delete On Close选项的CreateFile操作,因此文件将被删除。
因为该操作是使用 SYSTEM 权限运行的,所以就有了一个任意文件夹或文件删除原语,这意味着可以在主机上以 SYSTEM 身份执行代码。
注:由于文件名/文件夹名称限制,需要在FolderContentsDeleteToFolderDelete 项目中进行某些源代码编辑,文件名/文件夹名称必须非常短才能进行删除。
其背后的原因目前尚不清楚。
FolderContentsDeleteToFolderDelete源代码编辑
EXP开发
由于该服务将递归地遵循任何连接点(符号链接),因此可以使用易受攻击的 Apple 服务(该服务将遵循 NTFS 连接点)以 SYSTEM 身份任意删除系统上的文件。
由于易受攻击的服务方便地允许非特权用户使用 Windows GUI 使用“应用程序 -> 安装的应用程序 -> Apple 移动设备支持 -> 修改 -> 修复”技巧来重新启动服务,因此可以随意触发该漏洞利用。
一旦服务重新启动,它将遵循 NTFS 连接,而确定的程序行为决定了服务将删除用户选择指向的文件或文件夹。
换句话说,由用户决定该服务将删除哪些文件或文件夹,因为它作为 SYSTEM 运行,所以我们几乎可以删除系统上的任何文件(无需 TrustedInstaller 权限的文件)。
我们可以精心设计一系列事件来执行以下操作:
准备 oplock 在方便的时候停止进程,以便准备利用步骤
重启服务, oplock被触发,进程被停止
使用FolderOrFileDeleteToSystem.exe准备MSI回滚技巧
使用FolderContentsDeleteToFolderDelete.exe 准备 NTFS 连接,将文件删除原语指向由 MSI 回滚技巧步骤准备的 Config.MSI
释放oplock
PoC
在 C:\ProgramData\Apple\Lockdown\ 上设置 Oplock
.\SetOpLock.exe C:\ProgramData\Apple\Lockdown\
触发服务重新启动 应用程序 -> 已安装的应用程序 -> Apple 移动设备支持 -> 修改 -> 修复
准备MSI回滚技巧
.\FolderOrFileDeleteToSystem.exe
准备 Windows 连接(符号链接)步骤,将服务任意文件夹/文件删除原语指向 MSI 安装程序
.\FolderContentsDeleteToFolderDelete.exe /target 'C:\Config.Msi' /initial "C:\ProgramData\Apple\Lockdown"
释放oplock
当 Oplock 在第五步中释放时,监视FolderContentsDeleteToFolderDelete 进程,以验证是否遵循 NTFS junciton 以及位于 C:\ 中的 Config.MSI 是否已正确删除。
然后,监视FolderOrFileDeletionToSystem.exe 进程,以验证我们是否赢得了竞争条件,以及是否写入了包含修改后的回滚脚本的“恶意”Config.MSI 文件夹。
如果一切顺利,可以按 CTRL+ALT+DELETE,打开右下角的辅助功能菜单,然后打开屏幕键盘。
因为已经使用恶意回滚脚本覆盖了 C:\Program Files\Common Files\microsoft shared\ink\HID.DLL 中的 HID.DLL,所以 CMD shell 将作为 SYSTEM 弹出来完成我们的利用。
执行和监视FolderContentsDeleteToFolderDelete.exe。
执行和监视FolderOrFileDeleteToSystem.exe。
弹出 SYSTEM Shell。
以上内容由骨哥翻译并整理。
原文:https://github.com/mbog14/CVE-2024-44193
加入星球,随时交流:
(前50位成员):99元/年
(后续会员统一定价):128元/年
感谢阅读,如果觉得还不错的话,欢迎分享给更多喜爱的朋友~
====正文结束====