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

news/2024/6/16 9:58:22/文章来源:https://blog.csdn.net/C20220511/article/details/137258085

漏洞描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1034959.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【随笔】Git 高级篇 -- 分离 HEAD(十一)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

SpringBoot实现邮箱验证

目录 1、开启邮箱IMAP/SMTP服务&#xff0c;获取授权码 2、相关代码 1、使用配置Redis&#xff08;用于存储验证码&#xff0c;具有时效性&#xff09; 2、邮箱依赖和hutool&#xff08;用于随机生成验证码&#xff09; 3、配置Redis和邮箱信息 4、开启Redis服务 5、编写发送…

《QT实用小工具·四》屏幕拾色器

1、概述 源码放在文章末尾 该项目实现了屏幕拾色器的功能&#xff0c;可以根据鼠标指定的位置识别当前位置的颜色 项目功能包含&#xff1a; 鼠标按下实时采集鼠标处的颜色。 实时显示颜色值。 支持16进制格式和rgb格式。 实时显示预览颜色。 根据背景色自动计算合适的前景色…

1,static 关键字.Java

目录 1.概述 2.定义格式和使用 2.1 静态变量及其访问 2.2 实例变量及其访问 2.3 静态方法及其访问 2.4 实例方法及其访问 3.小结 1.概述 static表示静态&#xff0c;是Java中的一个修饰符&#xff0c;可以修饰成员方法&#xff0c;成员变量。被static修饰后的&#xff…

(八)Gateway服务网关

Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 Spring 5.0&#xff0c;Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关&#xff0c;它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。…

openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint

文章目录 openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint254.1 功能描述254.2 语法格式254.3 参数说明254.4 示例 openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint 254.1 功能描述 指明子链接块的名称。…

设计模式20--迭代器模式

定义 案例一 案例二 优缺点

C++的静态绑定和动态绑定、虚函数表的理解

C的静态绑定和动态绑定、虚函数表的理解 概念 在C中&#xff0c;静态绑定&#xff08;Static Binding&#xff09;和动态绑定&#xff08;Dynamic Binding&#xff09;是两种不同的函数调用机制&#xff0c;主要涉及到如何根据对象的类型来选择执行哪个函数的决定过程。这两种…

电商技术揭秘五:电商平台的个性化营销与数据分析

文章目录 引言1. 个性化营销的概念与价值1.1 个性化营销的定义1.1.1 个性化营销的基本概念1.1.2 个性化营销在电商领域的重要性 1.2 个性化营销的核心价值1.2.1 提升用户体验1.2.2 增加转化率和客户忠诚度1.2.3 优化营销资源配置 2. 用户画像与行为分析2.1 用户画像的构建2.1.1…

本地项目上传到GitHub

本文档因使用实际项目提交做为案例&#xff0c;故使用xxx等字符进行脱敏&#xff0c;同时隐藏了部分输出&#xff0c;已实际项目和命令行输出为准 0、 Git 安装与GitHub注册 1&#xff09; 在下述地址下载Git&#xff0c;安装一路默认下一步即可。安装完成后&#xff0c;随便…

道本科技智慧合规助力企业转型升级

在当今这个快速变化的商业世界里&#xff0c;企业合规管理已经从一项基本的监管要求转变为推动企业持续发展的关键动力。合规不仅是避免法律麻烦的盾牌&#xff0c;它还充当着引领企业向更高效、更可靠和更可持续方向发展的催化剂。而在实现这一目标的过程中&#xff0c;智慧合…

Linux中如何修改界面为中文, 设置中文输入法

目录 修改界面为中文方法一方法二方法三(kali中)方法四方法五(kali中) 切换为中文/英文输入法方法一方法二(kali中) 待续、更新中 修改界面为中文 方法一 查看当前系统拥有的中文语言包 locale -a | grep CN zh_CN.utf8 : 简体中文语言包 打开文件locale.conf vi /etc/lo…

完整部署一套k8s-v.1.28.0版本的集群

一、系统情况 虚拟机版本&#xff1a;esxi 6.7 系统版本&#xff1a;centos7.9_2009_x86 配置&#xff1a;4核8G&#xff08;官网最低要求2核2G&#xff09; 192.168.0.137 master节点 192.168.0.139 node2节点 192.168.0.138 node1节点&#xff08;节点扩容练习&#xf…

5.C++:string常用函数及模拟实现

一、resize() void test7() {string s("hello world");s.resize(5); //改变长度s.resize(20,x); //改变空间大小 } int main() {test7();return 0; } 二、string常用函数接口 1.打印 2.、push_back、append 3.迭代器&#xff0c;读写&#xff1b;s.begin()、s.…

Linux虚拟机环境搭建spark

Linux环境搭建Spark分为两个版本&#xff0c;分别是Scala版本和Python版本。 一、 安装Pyspark 本环境以 Python 环境为例。 1、下载spark 下载网址&#xff1a;https://archive.apache.org/dist/spark 下载安装包&#xff1a;根据自己环境选择合适版本&#xff0c;本环境…

爱上数据结构:栈和队列的概念及使用

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;数据结构 ​ 一、栈 1.栈的基本概念 栈&#xff1a;一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;…

数据结构——栈(C语言版)

前言&#xff1a; 在学习完数据结构顺序表和链表之后&#xff0c;其实我们就可以做很多事情了&#xff0c;后面的栈和队列&#xff0c;其实就是对前面的顺序表和链表的灵活运用&#xff0c;今天我们就来学习一下栈的原理和应用。 准备工作&#xff1a;本人习惯将文件放在test.c…

Python基础之pandas:文件读取与数据处理

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、文件读取1.以pd.read_csv()为例&#xff1a;2.数据查看 二、数据离散化、排序1.pd.cut()离散化&#xff0c;以按范围加标签为例2. pd.qcut()实现离散化3.排序4.…

AI复活:商业新风口还是情感禁区?

随着人工智能技术的飞速发展&#xff0c;AI已经渗透到我们生活的方方面面&#xff0c;其中&#xff0c;“AI复活”服务作为新兴的技术应用&#xff0c;正逐渐走进大众视野。然而&#xff0c;这一技术带来的不仅是商业机会&#xff0c;更伴随着伦理和情感的争议。 “AI复活”服务…

深度解析C语言——预处理详解

对C语言有一定了解的同学&#xff0c;相信对预处理一定不会陌生。今天我们就来聊一聊一些预处理的相关知识。预处理是在编译之前对源文件进行简单加工的过程&#xff0c;主要是处理以#开头的命令&#xff0c;例如#include <stdio.h>、#define等。预处理是C语言的一个重要…