freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

记一次对CVE-2024-20656(VS提权漏洞)的复现与分析
2025-02-25 16:31:40
所属地 北京

一、漏洞简介:

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>

1740471895_67bd7e579edb5a1a3dc73.png!small?1740471897025

分析服务配置时,我们会发现该服务被配置为按需运行模式。这种配置方式通常会采用某种进程间通信(IPC)机制作为服务启动的触发器。别担心,我们会说到这一点——剧透警告:它是COM!
在分析任何软件的文件操作漏洞时,建议首先按照其预期用途运行软件,并仔细观察其行为,尤其是特权服务的运行状况。这是一个很好的分析起点。
以Sysinternals的Procmon工具为例,我们可以将其用于实时监控特定进程的行为。具体来说,我们可以将进程名称过滤器设置为"StandardCollector.Service.exe",以此来实时跟踪该服务的文件操作行为,从而更深入地了解其运行机制。

1740471968_67bd7ea07c787aacdf42e.png!small?1740471970335

三、POC编译过程

首先进行文件配置。用到了runasc这个工具。

1740471951_67bd7e8f62aa9ced22d8b.png!small?1740471953322


3.1 配置vs环境

1740471929_67bd7e79004fbbef5d57c.png!small?1740471930868


3.2 利用过程

创建一个虚拟目录,VSStandardCollectorService150将在其中写入文件。
创建一个指向新创建目录的连接目录。
通过创建新的诊断会话来触发VSStandardCollectorService150服务。
等待<GUID>.scratch目录创建并创建Report.<GUID>.diagsession指向的新对象管理器符号链接C:\\ProgramData。
停止诊断会话。
等待Report.<GUID>.diagsession文件移动到父目录并切换连接目录以指向\\RPC Control我们的符号链接正在等待的位置。
睡眠 5 秒(不是很重要,但就留在那里)。
切换连接目录以指向虚拟目录。
开始新的诊断会话。
等待<GUID>.scratch目录创建并创建Report.<GUID&g
# 渗透测试 # 网络安全 # web安全 # 系统安全 # 数据安全
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录