记一次对CVE-2024-20656(VS提权漏洞)的复现与分析

一、漏洞简介:
Visual Studio 是 Microsoft 开发的一款复杂而强大的 IDE,具有许多从红队角度来看很有趣的功能。
在探讨Visual Studio 用于诊断目的并在NT AUTHORITY\SYSTEM上下文中运行的VSStandardCollectorService150服务,以及如何滥用它来执行任意文件 DACL 重置以提升权限。
二、漏洞检测:
当 Visual Studio 安装有 C/C++ 支持时,将创建VSStandardCollectorService150服务并将其配置为在NT AUTHORITY\SYSTEM上下文中运行,如下所示:
PS C:\\Users\\doom> sc.exe qc VSStandardCollectorService150
[SC] QueryServiceConfig SUCCESS
SERVICE_NAME: VSStandardCollectorService150
TYPE : 10 WIN32_OWN_PROCESS
START_TYPE : 3 DEMAND_START
ERROR_CONTROL : 0 IGNORE
BINARY_PATH_NAME : "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\Common\\DiagnosticsHub.Collection.Service\\StandardCollector.Service.exe"
LOAD_ORDER_GROUP :
TAG : 0
DISPLAY_NAME : Visual Studio Standard Collector Service 150
DEPENDENCIES :
SERVICE_START_NAME : **LocalSystem**
PS C:\\Users\\doom>
分析服务配置时,我们会发现该服务被配置为按需运行模式。这种配置方式通常会采用某种进程间通信(IPC)机制作为服务启动的触发器。别担心,我们会说到这一点——剧透警告:它是COM!
在分析任何软件的文件操作漏洞时,建议首先按照其预期用途运行软件,并仔细观察其行为,尤其是特权服务的运行状况。这是一个很好的分析起点。
以Sysinternals的Procmon工具为例,我们可以将其用于实时监控特定进程的行为。具体来说,我们可以将进程名称过滤器设置为"StandardCollector.Service.exe",以此来实时跟踪该服务的文件操作行为,从而更深入地了解其运行机制。
三、POC编译过程
首先进行文件配置。用到了runasc这个工具。
3.1 配置vs环境
3.2 利用过程
创建一个虚拟目录,VSStandardCollectorService150将在其中写入文件。
创建一个指向新创建目录的连接目录。
通过创建新的诊断会话来触发VSStandardCollectorService150服务。
等待<GUID>.scratch目录创建并创建Report.<GUID>.diagsession指向的新对象管理器符号链接C:\\ProgramData。
停止诊断会话。
等待Report.<GUID>.diagsession文件移动到父目录并切换连接目录以指向\\RPC Control我们的符号链接正在等待的位置。
睡眠 5 秒(不是很重要,但就留在那里)。
切换连接目录以指向虚拟目录。
开始新的诊断会话。
等待<GUID>.scratch目录创建并创建Report.<GUID&g
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
文章目录