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

admin 2023年6月28日18:28:27评论435 views字数 1275阅读4分15秒阅读模式
受影响的产品:

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中)

腾讯QQTIM是深圳腾讯计算机系统有限公司开发的两款即时通讯软件。它们都有一个名为QQProtect.exe的组件,位于%ProgramFiles(x86)%Common FilesTencentQQProtectbin

QQProtect.exe作为一个名为QPCoreWindows服务安装,并在系统启动时自动以NT AuthoritySYSTEM身份运行

QQProtect.exe组件及其依赖的DLL QQProtectEngine.dll都存在任意地址写入漏洞

低权限的攻击者可以通过结合这两个漏洞,在QQProtect.exe进程中加载恶意DLL,并获得NT AuthoritySYSTEM 权限 shell

漏洞

第一个漏洞是 QQProtect.exe+0x40c9f8 的代码:

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

其中 a2 是一个可以被攻击者控制的指针,dword_41a740 是一个全局变量,其值为 0x00000001。因此,攻击者可以在任意地址写入 DWORD(1) 的值

第二个漏洞是QQProtectEngine.dll+0x3B4F6处的代码:

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

其中 v3 是一个可以被攻击者控制的指针。因此,攻击者可以在任意给定的地址 ptr 处写入 std::bit_cast<DWORD>(ptr) + 4 的值

攻击者可以篡改 QQProtect.exe 中的一个函数指针,并使用 ROP 链轻松执行任意代码,因为 QQProtect.exe 没有 ASLR 保护

证明

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

targetreleasetinyxml.dll
targetreleaseevil.dll

然后把上面的两个 Dll%ProgramFiles(x86)%Common FilesTencentQQProtectbinQQProtect.exe 放在一个文件夹里

最后用一条命令获得NT AuthoritySYSTEM 权限 shell:

$ QQProtect.exe <PATH TO evil.dll>

示范

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

项目地址:

https://github.com/vi3t1/qq-tim-elevation

原文始发于微信公众号(晴天组织):腾讯QQ/TIM本地特权提升(CVE-2023-34312)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月28日18:28:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   腾讯QQ/TIM本地特权提升(CVE-2023-34312)https://cn-sec.com/archives/1840481.html

发表评论

匿名网友 填写信息