Unquoted Service Paths提权

前言:都写出来记录下吧

当系统管理员配置Windows服务时,他们必须指定要执行的命令,或者运行可执行文件的路径。

当Windows服务运行时,会发生以下两种情况之一。

第一种:如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。

第二种:如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。


不带引号的服务路径查看方法:

wmic service get name,displayname,pathname,startmode |findstr /i "Auto" |findstr /i /v "C:Windows\" |findstr /i /v """

例如这个服务的可执行路径为:C:Program Files (x86)SangforSSLPromoteSangforPromoteService.exe

那么服务启动的时候运行的可执行文件就会有如下几种:

C:Program.exe
C:Program Files (x86)SangforSSLPromoteSangforPromoteService.exe

我们第一个实验:调用system函数进行执行分别来标识system("whoami >> whoami.exe")

然后我们可以尝试运行C:Program Files (x86)SangforSSLPromoteSangforPromoteService.exe

发现C:会多出whoami.exetxt的文件


第二个实验:我们将Program Files当作一个完整的路径,那么也就是用双引号进行包裹

运行C:"Program Files" (x86)SangforSSLPromoteSangforPromoteService.exe

运行C:Program Files.exe


总结:

1、在msf中exploit/windows/local/trusted_service_path,这个模块也可以进行相应的利用,但是如果要更加隐蔽的话,大家还是参考上面的wmic的命令吧!

2、比较鸡肋,因为大家都知道C: 目录默认是不让写的,但是大家可以去了解下什么叫Weak File Permissions,能帮助到你进行深一步的提权!

3、对于路径配置的提权,我们所需要的权限只需要能写!

参考文章:https://tulpa-security.com/2016/10/20/unquoted-service-paths/

原文地址:https://www.cnblogs.com/zpchcbd/p/12232710.html