查看原文
其他

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

刨洞技术交流 刨洞安全团队 2023-11-08

受影响的产品:

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 Files\Tencent\QQProtect\bin

QQProtect.exe作为一个名为QPCoreWindows服务安装,并在系统启动时自动以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破解版



加我微信好友,邀请你进交流群





往期推荐



某CDN疑似被投毒!

微信小程序Mac版抓包

某ehr-sql注入漏洞利用GetShell

微信电脑版小程序抓包方法

RdViewer远控隐蔽利用及钓鱼攻击

记一次从linux打进域控

红队标准手册

某国zf的一次渗透

可能要被封号了!

备用号,欢迎关注


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存