受影响的产品:
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)
最新推荐文章于 2024-08-25 10:12:32 发布