【漏洞】腾讯QQ/TIM本地特权提升
2023-6-28 16:15:55 Author: WIN哥学安全(查看原文) 阅读量:28 收藏

1免责声明

请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,作者不为此承担任何责任。工具来自网络,安全性自测。

2漏洞介绍

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

3受影响的产品:

  • QQ 9.7.1.28940 ~ 9.7.8.29039
  • TIM 3.4.5.22071 ~ 3.4.7.22084

4受影响的组件:

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

5漏洞分析

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

其中 是可由攻击者控制的指针,是值为 的全局变量。因此,攻击者可以在任何地址写入该值。a2dword_41a7400x00000001DWORD(1)

第二个漏洞是·QQProtectEngine.dll+0x3B4F6·的代码:其中 是可由攻击者控制的指针。因此,攻击者可以在任何给定地址写入该值。v3std::bit_cast<DWORD>(ptr) + 4ptr

由于没有 ASLR 保护,攻击者可以篡改驻留在中的函数指针并使用 ROP 链轻松执行任意代码。QQProtect.exeQQProtect.exe

6漏洞验证

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

最后用一个命令获取 shell:NT Authority\SYSTEM

$ QQProtect.exe <PATH TO evil.dll>

展示:

Tips:

文章来源:GitHub

作者:作者vi3t1 排版:WIN哥学安全

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

往期精彩

工具获取回复“burp”“awvs”“nessus”“ladon”"Forfity"等可以。

快速攻击全自动化工具JuD

Exp-Tools 1.1.3版本发布

GUI-tools渗透测试工具箱框架

阿波罗自动化攻击评估系统

 微软 Word RCE附PoC

Clash最新远程代码执行漏洞(附POC)

禅道系统权限绕过与命令执行漏洞(附POC)

【附EXP】CVE-2022-40684 & CVE-2022-22954

网络安全应急预案合集

师傅们求点赞,求支持!

文章来源: http://mp.weixin.qq.com/s?__biz=MzkwODM3NjIxOQ==&mid=2247493655&idx=1&sn=32b29775cf04960ae3b684be24fa731e&chksm=c0c849e3f7bfc0f5c5097698c2f26f652eb6ab518c5afd98f97cf6dccac25a21258b12a5ede0#rd
如有侵权请联系:admin#unsafe.sh