c++ 与windows服务的通讯_Windows操作系统之不带引号的服务路径提权

25232bb66b83cb9c078b307484512e24.png

BINARY_PATH_NAME 如果没有加双引号的话,在启用服务过程中查询路径的时候,遇上空格会造成截断,那么利用思路就出来了,在C:Program Files(程序路径,我本机是安装在C盘)这个目录的同级目录 也就是C: 放置一个Program的程序,启用服务的过程中是不是就加载了这个程序呢?

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

当Windows服务运行时,会发生以下两种情况之一。如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的二进制路径未包含在引号中,则操作系统将会执行找到的空格分隔的服务路径的第一个实例。

这可能有点不直观,所以让我们来看一个实际的例子。假设服务配置类似于以下存在bug的示例服务:

C:Program FilesVulnerable ServiceSub Directoryservice.exe

Windows命令解释程序可能会遇到名称中的空格,并且希望通过将字符串包装在引号中来对它们进行转义。在上面的示例中,如果系统运行该服务,它将尝试运行以下可执行文件:

C:Program.exe

C:Program FilesVulnerable.exe

C:Program FilesVulnerable ServiceSub.exe

C:Program FilesVulnerable ServiceSub Directoryservice.exe

为了讲清楚这个漏洞,定义一个名为example.exe的程序,这是一个简单打印出自己名称的正常二进制文件:

#include

void main(int argc, char *argv[])

{

printf("[*] Executed %s", argv[0]);

}

考虑当从命令行通过其绝对路径执行此程序时会发生什么,在引号内:

C:>"C:ExampleSub Directoryexample.exe"

[*] Executed C:ExampleSub Directoryexample.exe

eb29bc263c389992b4dbee0f696b660b.png

C:>

or:

63f8502d33ffeac066004b7eed89c745.png

C:>C:ExampleSub Directoryexample.exe

'C:ExampleSub' is not recognized as an internal or external command, operable program or batch file.

3a8690dfbb29c976c23a7c47857d3bc5.png

C:>

这意味着如果服务路径不加引号,我们可以放置一个与第一个名称相同的恶意二进制文件作为文件系统对象,并在其名称中包含空格,并且当服务尝试执行其二进制文件时会将它运行。我们所需要的只是对路径中目录的写权限。

通过隐藏example.exe来利用上述示例,C:ExampleSub.exe在没有空格的情况下调用上面的示例,如易受攻击的服务:

C:>C:ExampleSub Directoryexample.exe

[*] Executed C:ExampleSub

2ab7486947f65cfba9f1764cd40c2a53.png

C:>

写入我们的木马Sub.exe

成功上线

ff2e46be259a921d6f539c82794e1f31.png

一条命令找到这些错误配置:

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

d7b5f2f3cb770dd23bee361fb4134012.png

总结:

1、在msf中exploit/windows/local/trusted_service_path,这个模块也可以进行相应的利用

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值