IPBUF安全漏洞报告
English
CVE-2022-50933 CVSS 7.8 高危

CVE-2022-50933 Cain & Abel 4.9.56未引用服务路径权限提升漏洞

披露日期: 2026-01-13

漏洞信息

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

相关标签

未引用服务路径权限提升本地提权Windows服务漏洞Cain & AbelCVE-2022-50933LocalSystem高危漏洞二进制路径劫持Windows安全

漏洞概述

CVE-2022-50933是发现于Cain & Abel 4.9.56版本软件中的一个高危安全漏洞。该漏洞属于Windows系统中的未引用服务路径(Unquoted Service Path)缺陷,允许本地低权限攻击者在特定条件下实现权限提升,最终以LocalSystem最高权限执行任意恶意代码。Cain & Abel是一款广泛使用的Windows密码恢复和网络嗅探工具,因其强大的网络协议分析能力而被众多安全专业人员和管理员使用。然而,该软件在安装过程中创建的服务配置存在问题,其服务可执行文件路径未使用双引号包裹,导致Windows服务控制管理器在解析服务路径时产生歧义。攻击者可以利用这一特性,在服务路径的中间目录中植入恶意可执行文件,诱导系统以提升的权限执行该恶意程序。此漏洞的CVSS评分达到7.8分,属于高危级别,对系统安全性构成严重威胁。

技术细节

未引用服务路径漏洞是Windows环境中常见的权限提升技术。当Windows服务配置中的Binary PathName未使用双引号包裹且路径中包含空格时,服务控制管理器(SCM)在启动服务时会从左到右解析路径,并在遇到空格时尝试匹配可能的可执行文件。以本漏洞为例,假设服务路径为C:\Program Files\Cain & Abel\cain.exe且未加引号,Windows会首先尝试执行C:\Program.exe,如果不存在则尝试C:\Program Files\cain.exe,最后才执行正确的C:\Program Files\Cain & Abel\cain.exe。攻击者只需在C:\Program Files\目录下创建一个名为Program.exe的恶意可执行文件,当服务重启时,该恶意程序将以LocalSystem权限自动执行。Cain & Abel在安装过程中配置了以系统权限运行的后台服务,而该服务路径恰好存在此问题。攻击者利用此漏洞可绕过普通用户权限限制,获得目标系统的完全控制权,执行任意代码、安装后门、窃取敏感信息或部署恶意软件。

攻击链分析

STEP 1
步骤1
信息收集:攻击者首先识别目标系统中安装的Cain & Abel版本,确认版本号≤4.9.56
STEP 2
步骤2
服务枚举:使用sc query或wmic命令查询Cain服务配置,检查BINARY_PATH_NAME是否存在未引用且包含空格的可执行文件路径
STEP 3
步骤3
路径分析:分析服务路径中的目录结构,识别可能被利用的中间路径(如C:\Program Files\或C:\Program Files\Cain & Abel\)
STEP 4
步骤4
权限检查:确认攻击者当前用户对中间目录具有写权限,通常C:\Program Files\目录默认允许管理员组写入
STEP 5
步骤5
恶意程序部署:在中间目录中创建恶意可执行文件,文件名需与路径解析时尝试的可执行文件名匹配(如Program.exe)
STEP 6
步骤6
触发执行:等待服务重启(系统更新、恶意重启服务或系统重启),Windows服务控制管理器将执行攻击者植入的恶意程序
STEP 7
步骤7
权限提升:恶意程序以LocalSystem最高权限执行,攻击者获得目标系统的完全控制权,可执行任意代码、安装后门或窃取数据

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2022-50933 PoC - Cain & Abel Unquoted Service Path This script demonstrates the unquoted service path vulnerability in Cain & Abel 4.9.56 Note: For educational and authorized testing purposes only """ import os import sys import subprocess def check_vulnerable_service(): """Check if Cain & Abel service has unquoted path vulnerability""" try: # Query Windows service information using sc command result = subprocess.check_output( ['sc', 'qc', 'Cain'], stderr=subprocess.STDOUT, text=True ) print("[+] Cain service configuration:") print(result) # Check if BINARY_PATH_NAME contains spaces and is not quoted if 'BINARY_PATH_NAME' in result: lines = result.split('\n') for line in lines: if 'BINARY_PATH_NAME' in line: path = line.split(':', 1)[1].strip() print(f"[+] Binary Path: {path}") # Check if path is unquoted and contains spaces if not path.startswith('"') and ' ' in path: print("[!] VULNERABLE: Path contains spaces and is not quoted!") return True else: print("[-] NOT vulnerable or service not found") return False except subprocess.CalledProcessError as e: print(f"[-] Service query failed: {e}") return False except Exception as e: print(f"[-] Error: {e}") return False def create_payload_exploit(): """Generate malicious executable for privilege escalation""" # This is a simplified demonstration # In real attack, attacker would create a malicious executable # that executes with LocalSystem privileges # Example: Check if we can write to intermediate path directories vulnerable_paths = [ r'C:\Program.exe', r'C:\Program Files\cain.exe' ] print("\n[*] Checking write permissions to potential exploit locations...") for path in vulnerable_paths: directory = os.path.dirname(path) if os.path.exists(directory): if os.access(directory, os.W_OK): print(f"[!] VULNERABLE: Can write to {directory}") print(f" Attacker could place malicious '{os.path.basename(path)}' here") else: print(f"[-] Protected: Cannot write to {directory}") else: print(f"[-] Directory does not exist: {directory}") def main(): print("=" * 60) print("CVE-2022-50933 Cain & Abel Unquoted Service Path PoC") print("=" * 60) print("\n[*] Target: Cain & Abel <= 4.9.56") print("[*] Vulnerability: Unquoted Service Path leads to EoP\n") if sys.platform != 'win32': print("[-] This script must be run on Windows") sys.exit(1) check_vulnerable_service() create_payload_exploit() print("\n[*] PoC completed") print("[*] Note: Actual exploitation requires creating malicious executable") if __name__ == '__main__': main()

影响范围

Cain & Abel <= 4.9.56

防御指南

临时缓解措施
临时缓解措施包括:1)立即停止使用存在漏洞的Cain & Abel版本,考虑使用替代工具;2)手动修复服务路径,为BINARY_PATH_NAME添加双引号(需管理员权限修改注册表HKLM\SYSTEM\CurrentControlSet\Services\Cain\ImagePath);3)移除C:\Program Files等目录的非管理员写权限,防止攻击者植入恶意程序;4)启用Windows Defender或其他终端防护软件的行为监控功能,检测异常的服务启动行为;5)如果业务允许,可在服务启动前创建占位文件(如在C:\创建Program.exe空文件)阻止恶意文件写入,但这不是根本解决方案。

参考链接

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