CVE-2024-7479 TeamViewer 驱动程序安装的签名验证不当
作者:Marcos Accossatto
仅供演示目的。完整利用代码适用于有漏洞的 TeamViewer Windows 版本。
简介
此利用PoC是Pedro Gabaldon 为 CVE-2024-7479 编写的 PoC 的Python实现。
该脚本包含所有用于处理IPC协议以进行利用的类。
最终利用需要将dbutil_2_3.sys 驱动程序和从BYOVDKit项目编译的可执行文件放在与此脚本相同的本地目录中。
此脚本已在 TeamViewer 15.57.5 上测试过。
脚本利用步骤
此脚本将执行以下步骤来利用漏洞:
- 在 127.0.0.1 及端口 5939 上打开一个套接字。
- 使用以下命令行执行 BYOVDKit.exe 以测试驱动程序是否已安装:
BYOVDKit.exe 1 token 4
- 通过 getClientAuth 函数组装第一个IPC请求并将其发送到服务器。
- 通过 getServerChallengeFromResponse 函数从服务器响应中获取 response_challenge。
- 将 response_challenge 与一个“secret”值拼接,计算其 MD5 哈希值,然后使用该值通过 getClientAuth 函数组装第二个IPC请求。
- 发送第二个请求以完成身份验证。
- 获取 python 进程的 PID,定位并提取 TeamViewer.exe 可执行文件的版本,通过 getControlRequest 函数组装第三个IPC请求并将其发送到服务器。
- 从服务器读取IPC数据包,直到同步配置完成(通常为21个数据包)。
- 将 TeamViewer x64 目录中的 TeamViewerVPN.cat 文件复制到脚本目录。
- 将 TeamViewer x64 目录中的 TeamViewerVPN.inf 文件复制到脚本目录,并将其重命名为一个随机的 inf 文件。
- 将脚本目录中的 dbutil_2_3.sys 文件重命名为 TeamViewerVPN.sys。
- 通过 getInstallDriverRequest 函数组装第三个IPC请求并将其发送到服务器。
- 等待用户点击 仍要安装此驱动程序软件 按钮以完成驱动程序安装,然后按 ENTER 键。
- 删除所有复制/创建/重命名的文件(TeamViewerVPN.cat、TeamViewerVPN.sys 和随机的 .inf 文件)。
- 使用以下命令行执行 BYOVDKit.exe 以以系统权限启动 cmd:
BYOVDKit.exe 1 token 4
使用方法
- 以普通用户身份运行 cmd.exe。
- 使用 whoami 检查用户名。
- 使用 python CVE-2024-7479_PoC.py 运行脚本。
- 当出现安装驱动程序警告时,点击 仍要安装此驱动程序软件 消息以安装驱动程序。
- 返回 cmd 窗口并按 ENTER 键以继续执行脚本。
- 使用 whoami 检查用户名是否为 nt authority\system。

参考资料
希望您觉得有用,如有任何疑问,请联系 [email protected]
祝好!