腾讯QQ/TIM本地特权提升(CVE-2023-34312)

2024-06-09 15:04

本文主要是介绍腾讯QQ/TIM本地特权提升(CVE-2023-34312),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

受影响的产品:

QQ 9.7.1.28940 ~ 9.7.8.29039
TIM 3.4.5.22071 ~ 3.4.7.22084


受影响的组件:

QQProtect.exe 4.5.0.9424(在 TIM 3.4.5.22071 中)
QQ权限.exe 4.5.0.9426(QQ 9.7.1.28940 中)
QQProtectEngine.dll 4.5.0.9424(在 TIM 3.4.5.22071 中)
QQ引擎.dll 4.5.0.9426(QQ 9.7.1.28940中)

⼀、总结
腾讯QQ和TIM是深圳市腾讯计算机系统有限公司开发的两款即时通讯软件。它们都有⼀个组件QQProtect.exe,位
于 %ProgramFiles(x86)%\Common Files\Tencent\QQProtect\bin . QQProtect.exe作为名为**QPCore的
Windows 服务安装,并 NT Authority\SYSTEM 在系统启动时⾃动运⾏。组件QQProtect.exe及其依赖的DLL
QQProtectEngine.dll均存在任意地址写⼊漏洞。低权限攻击者可以结合这两个漏洞在QQProtect.exe进程中加载恶
意DLL并获取 NT Authority\SYSTEM shell。

2. 漏洞
第⼀个漏洞是QQProtect.exe+0x40c9f8处的代码:
其中 a2 是⼀个可以被攻击者控制的指针, dword_41a740 是⼀个全局变量,其值为 0x00000001 。因此攻击者可
以在任何地址写⼊该值 DWORD(1) 。

第⼆个漏洞是QQProtectEngine.dll+0x3B4F6处的代码:
其中 v3 是可以被攻击者控制的指针。因此攻击者可以 std::bit_cast<DWORD>(ptr) + 4 在任何给定地址写⼊该
值 ptr 。
QQProtect.exe 由于 QQProtect.exe 没有ASLR保护,攻击者可以轻易篡改驻留的函数指针并利⽤ROP链执⾏任
意代码。

3. 概念证明
 poc代码是⽤Rust语⾔编写的。您应该使⽤ i686-pc-windows-msvc ⼯具链来编译它。

cd poc
cargo +stable-i686-pc-windows-msvc build --release --config "build.rustflags = [\"-C\",
\"target-feature=+crt-static\"]"

你将得到两个 DLL:

target\release\tinyxml.dll
target\release\evil.dll


然后将上⾯的两个Dll放在 %ProgramFiles(x86)%\Common Files\Tencent\QQProtect\bin\QQProtect.exe ⼀
个⽂件夹中。


NT Authority\SYSTEM 最后⽤⼀个命令获取shell:

$ QQProtect.exe <PATH TO evil.dll>

参考链接
https://github.com/vi3t1/qq-tim-elevation

这篇关于腾讯QQ/TIM本地特权提升(CVE-2023-34312)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1045510

相关文章

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Maven项目打包时添加本地Jar包的操作步骤

《Maven项目打包时添加本地Jar包的操作步骤》在Maven项目开发中,我们经常会遇到需要引入本地Jar包的场景,比如使用未发布到中央仓库的第三方库或者处理版本冲突的依赖项,本文将详细介绍如何通过M... 目录一、适用场景说明​二、核心操作命令​1. 命令格式解析​2. 实战案例演示​三、项目配置步骤​1

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基