腾讯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
漏洞
第一个漏洞是 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
保护
证明
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
关注公众号后台回复 0001
领取域渗透思维导图,0002
领取VMware 17永久激活码,0003
获取SGK地址,0004
获取在线ChatGPT地址,0005
获取 Windows10渗透集成环境,0006
获取 CobaltStrike 4.8破解版
加我微信好友,邀请你进交流群
往期推荐
备用号,欢迎关注