freeBuf
主站

分类

漏洞 工具 极客 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 关注者
文章目录