CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升




CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

版本:Lenovo 更新程序版本 <= 5.08.01.0009

测试操作系统:Windows 10 22H2 (x64)

漏洞:Lenovo System Updater 通过任意文件写入进行本地权限提升

漏洞概述

Lenovo System Update 应用程序旨在允许非管理员检查更新并将其应用到其工作站。在检查更新的过程中,特权 Lenovo Update 应用程序会尝试利用文件系统上不存在的C:SSClientCommonHelloLevel_9_58_00.xml 。由于任何低权限用户都可以在C:驱动器的根目录中创建目录,因此可以向特权 Lenovo System Update 应用程序提供特制的HelloLevel_9_58_00.xml文件,该文件位于C:SSClientCommon。此自定义 XML 文件包含源文件路径和目标文件路径,Lenovo System Update 应用程序在用户检查更新时解析该路径。解析后,特权 Lenovo System Update 应用程序会将源文件移动到目标位置,并允许任意文件写入原语,从而导致特权提升到NT AUTHORITYSYSTEM。 

漏洞演练

当用户通过 Lenovo System Update 应用程序检查 Lenovo 更新时,Tvsukernel.exe将以用户Lenovo_tmp_<randomCharacters>在特权、高完整性上下文中启动。执行后,Tvsukernel.exe会检查C:SSClientCommon中的HelloLevel_9_58_00.xml,如下图 01 所示。

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

图 01 – 缺少目录和 XML 文件

默认情况下,所有版本的 Windows 都允许低权限用户在C:驱动器的根目录中创建目录。攻击者可以手动创建目录C:SSClientCommon,然后将HelloLevel_9_58_00.xml放入其中,如下图 02 所示。

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

图 02 — C: 驱动器根目录中的目录和 XML 创建

创建C:SSClientCommon后,攻击者可以创建所需的子目录C:SSClientCommonUTS,其中将包含攻击者的恶意二进制文件。攻击的目录结构类似于下面的图 03:

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

图 03:最终文件夹和文件结构

由于HelloLevel_9_58_00.xml驻留在攻击者可以控制的位置,因此可以制作一个自定义 XML 文件,允许攻击者将文件从一个位置移动到另一个位置。这是可能的,因为自定义 XML 定义了“执行”操作,提供了“源”和“目标”路径。“SourcePath”元素定义位于C:SSClientCommonUTS中的可移植可执行 (PE) 文件- 在本例中为C:SSClientCommonUTSpoc2.exe。

“DestinationPath”节点定义了源文件要复制到的位置,如下图 04 所示:

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

图 04 – 自定义 XML 源和目标路径

Lenovo System Update 应用程序启动并检查更新后,特权进程(即Tvsukernel.exe)将检查C:SSClientCommonHelloLevel_9_58_00.xml是否存在。由于已创建路径并植入自定义 XML 文件,Tvsukernel.exe会将自定义HelloLevel_9_58_00.xml文件移动到C:ProgramDataLenovoSystemUpdatesessionSEsystemSSClientCommonHelloLevel_9_58_00.xml,如图 05 所示:

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

图 05:将自定义 XML 写入 ProgramData

移动 XML 文件后,Tvsukernel.exe会调用Client.dll中的 ParseUDF() 函数,以解析位于C:ProgramDataLenovoSystemUpdatesessionSEsystemSSClientCommonHelloLevel_9_58_00.xml中的 XML 文件。当Tvsukernel.exe解析 XML 时,它会在 XML 中包含的 DestinationPath 前面添加C:ProgramDataLenovoSystemUpdatesessionSE,如图 06 所示:

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

图 06:ParseUDF() 中的 XML 解析

在攻击者控制的自定义 XML 文件中,可以使用目录遍历来突破替换的C:ProgramDataLenovoSystemUpdatesessionSE DestinationPath 值。攻击者可以利用它来选择操作系统上的任何位置,从而导致任意文件写入原语。在本例中,使用目录遍历将 DestinationPath 值设置为C:Program Files (x86)LenovoSystem UpdateSUService.exe,如图 07 所示。这是因为 Lenovo Updater 尝试每次启动 Lenovo System Updater 时,以NT AUTHORITYSYSTEM 身份启动此应用程序。

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

图 07:自定义 XML 中的目录遍历

创建自定义 XML 并将其放置在C:SSClientCommonHelloLevel_9_58_00.xml中,并将恶意二进制文件放置在C:SSClientCommonUTSpoc2.exe中,攻击者只需打开 Lenovo System Update 应用程序并检查更新即可。执行后,Tvsukernel.exe会将恶意C:SSClientCommonHelloLevel_9_58_00.xml移动到C:ProgramDataLenovoSystemUpdatesessionSEsystemSSClientCommonHelloLevel_9_58_00.xml,解析它,然后移动C:SSClientCommonUTS poc2.exe到C:Program Files (x86)LenovoSystem UpdateSUService.exe;覆盖SUService.exe二进制文件,如下图 08 所示:

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

图 08:覆盖 Lenovo SUService.exe 服务二进制文件

通过使用自定义应用程序覆盖 Lenovo 的SUService.exe二进制文件,攻击者可以关闭并重新打开 Lenovo System Update 应用程序,这将导致攻击者的应用程序以NT AUTHORITYSYSTEM 身份执行。在本例中,poc2.exe获取当前执行用户的用户名并将其写入C:WindowsPOCOutput.txt,如图 09 所示:

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

图 09:以 NT AUTHORITYSYSTEM 身份执行代码

该漏洞已在最新版本的 Lenovo System Updater 应用程序中修复。




感谢您抽出

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

.

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

.

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

来阅读本文

CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

点它,分享点赞在看都在这里

原文始发于微信公众号(Ots安全):CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升

版权声明:admin 发表于 2023年10月30日 下午12:34。
转载请注明:CVE-2023-4632:LENOVO SYSTEM UPDATER 中的本地权限提升 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...