Thales SafeNet Sentinel HASP LDK本地提权漏洞(CVE-2024-0197)分析与复现

漏洞描述

Thales SafeNet Sentinel HASP LDK是一个软件保护和许可管理解决方案,用于帮助软件开发者保护其应用程序免受盗版和未经授权使用,由Thales SafeNet公司开发并提供支持。

该工具的msi安装程序在执行修复模式/fa时,存在DLL劫持漏洞。导致本地普通用户可以劫持%temp%下的安装程序,以system权限执行任意代码,实现本地权限提升。

影响范围

Thales SafeNet Sentinel HASP LDK < 9.16

复现环境

**操作系统:**Win7x64 sp1

**分析工具:**Procmon、Procexp

初识MSI文件

MSI 文件是 Windows Installer 包的文件扩展名,它通常用于安装、升级和卸载 Windows 程序。MSI 文件包含了程序安装所需的所有信息,如文件、注册表项、启动服务等。

MSI 文件运行时,Windows Installer 服务会以系统权限启动msiexec.exe 程序。然后msiexec.exe 将根据 MSI 文件中指定的安装步骤和条件,可能会多次以系统权限或用户权限启动其他程序或脚本来完成安装或卸载操作。这些额外的程序或脚本可能包含在 MSI 文件中,也可能来自外部引用。

漏洞分析

Windows Installer程序msiexec.exe,运行时支持多个参数。比如这个漏洞相关的参数:/fa,这是修复选项,表示强制重新安装所有文件,如下图所示。

下载安装包Sentinel HASP LDK,下载地址:https://archive.org/details/isocd-sentinel_ldk_msi_run-time_install_api.rar,此安装包的版本为6.25。根据公开的漏洞描述,尝试使用修复选项"/fa"执行安装程序,但是提示错误,如下图所示。

此错误提示执行修复选项前需要先安装。所以先双击安装包文件HASP_Setup.msi进行安装。

安装成功后,使用Procmon监控msiexec.exe的行为,然后再次执行修复选项。从Procmon监控日志中可以看出,执行修复选项时,msiexec.exe在%temp%目录下释放了haspdinst_x64.exe程序,并创建进程运行,如下图所示。

此时从procexp进程管理工具中可以看出,haspdinst_x64.exe进程的用户名为SYSTEM。

查看haspdinst_x64.exe加载DLL的监控日志,发现存在fltlib.dll,newdev.dll等DLL劫持,如下图所示。

利用haspdinst_x64.exe存在的DLL劫持,可以实现本地权限提升。

复现步骤

isocd-sentinel_ldk_msi_run-time_install_api.rar安装包解压后双击HASP_Setup.msi文件进行安装。

编写DLL劫持程序,在DllMain中将当前进程名,命令行参数,用户名等信息记录到C:\users\Public\poc.txt文件中,如下图所示。

编译成功后将得到的DLL文件重命名fltlib.dll,复制到%temp%目录下,运行修复选项命令:msiexec.exe /fa HASP_Setup.msi,如下图所示。

从生成的文件C:\users\Public\poc.txt可以看出,运行haspdinst_x64.exe时的用户为SYSTEM,提权漏洞复现成功,如下图所示。

当然也可以在DllMain中创建cmd进程,利用此漏洞获取SYSTEM权限的cmd,如下图所示。

参考链接

https://www.ddpoc.com/DVB-2024-6338.html

https://github.com/ewilded/CVE-2024-0197-POC

相关推荐
bohu832 天前
sentinel学习笔记7-熔断降级
笔记·sentinel·熔断降级·degradeslot·circuitbreaker
suweijie7682 天前
SpringCloudAlibaba | Sentinel从基础到进阶
java·大数据·sentinel
向阳12183 天前
sentinel来源访问控制(黑白名单)
java·sentinel
bohu833 天前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口
一个儒雅随和的男子3 天前
微服务详细教程之nacos和sentinel实战
微服务·架构·sentinel
bohu833 天前
sentinel学习笔记5-资源指标数据统计
笔记·sentinel·statisticslot
bohu834 天前
Sentinel 学习笔记3-责任链与工作流程
笔记·sentinel·责任链·processorslot
mengml_smile5 天前
Sentinel一分钟
java·开发语言·sentinel
LightOfNight13 天前
【Sentinel Go】新手指南、流量控制、熔断降级和并发隔离控制
开发语言·golang·sentinel
XMYX-013 天前
使用 Kubernetes 部署 Redis 主从及 Sentinel 高可用架构(未做共享存储版)
redis·kubernetes·sentinel