windows----鸡肋提权方式

前言:

虽然在实战中很少遇到这些提取方式,但是遇到了也是很吃香的,所以写一篇,供大家一起学习。

正文:

DLL劫持+令牌窃取提权:

这个提权方式比较鸡肋,这个需要目标主机的管理员有使用一些特定的软件(比如ftp,远程访问控制和notepad++等等软件),并且还要经常使用它,因为这样当我们劫持的对方的dll的时候才会启动这个是需要对方配合的。说到这个dll,我们就说一下这个DLL。

DLL为动态链接库文件(他的本质实际上是将可执行文件与库文件分离)。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。而这个DLL劫持就是我们把程序原有会运行的DLL文件替换成我们的后门木马(要配合免杀技术),或者把我们的后门放在他原有会执行的DLL文件前面,让他先执行,为什么要放前面其实在进程尝试加载一个DLL时没有指定DLL的绝对路径,那么Windows会尝试去按照顺序搜索这些特定目录时下查找这个DLL,只要黑客能够将恶意的DLL放在优先于正常DLL所在的目录,就能先运行我们的后门或木马。如果要查找程序运行了那些DLL文件可以用火绒自带的火绒剑,或者用微软的process explorer检查加载的dll文件。下载地址:Process Explorer - Windows Sysinternals | Microsoft Docs

执行顺序:

1.进程对应的应用程序所在目录(可理解为程序安装目录比如C:ProgramFilesuTorrent); 2.系统目录(即%windir%system32) 3.16位系统目录(即%windir%system) 4.Windows目录(即%windir%) 5.当前目录(运行的某个文件所在目录,比如C:DocumentsandSettingsAdministratorDesktoptest) 6.PATH环境变量中的各个目录;

这个是网上说的,但是现在肯定都会有写变化,如果哪位师傅知道,可以说一下。

现在就实操下:

查看进程

 

我们要找未知文件或者数字签名文件等,才可以劫持。

这里我们进行替换原有DLL文件进行劫持。

一:msfvenom 生成window木马

 

通过webshell上传,然后替换原有文件。

 

 

记住替换的成我们的dll要和对方发的文件名相同。

进行监听,并设置参数。

 

就等对方管理员起用他被我们植入后门的常用软件了。

对方管理员启用软件,收到会话。

 

查看权限,并用令牌窃取提权。

令牌窃取命令(三条):

use incognito

list_tokens -u

impersonate_token "NT AUTHORITY\SYSTEM"

 

 

可以看到为system权限。

不带引号路径提权:

当Windows服务运行时,如果给出了可执行文件,并且引用了完整路径,则系统会按字面解释它并执行。但是,如果服务的路径里面包含空格而且还没有双引号来包含的话,那么就会执行前面的文件。

举个例子:

 

可以看到他这里运行进行了双引号处理,而下面一个就没有

 

这个就是window是自带的防护机制。

但是如果没有引号而且又空格的话就会有安全隐患。我们可以通过webshell执行这条命令来查看服务器里面有没有满足这两个条件的。

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

 

可以看到本机还是有很多满足条件的。

我们来利用一下。

 

可以看到这个满足了,当计算机重启的时候他就会运行这条系统程序,他的执行顺序是这样的。

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

这样我们可以上传一个木马或者后面=门,更或者是一条创建管理员账号的命令的program.exe程序到c盘根目录下。或者上传一个macro.exe到c:\program files (x86)\grasssoft目录下。之后就是重启,执行的问题了,要服务器重启方法有很多,ddos等等,

我们只要在kali进行监听就可以了。

我们可以在上传的程序里面写一个可以执行ipconfig(windows)的脚本,并保存为1.txt。

 

package main
import (
        "fmt"
        "io/ioutil"
        "log"
        "os/exec"
)
func main() {
        cmdOutput, err := exec.Command("ipconfig").Output() 
        if err != nil {
                log.Fatal(err)
        }

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

        fmt.Printf("%s", cmdOutput)

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值