Windows提权的一些总结
简介
Windows提权中常用有以下几种:
- Potato家族提权
- 系统错误配置提权
- 令牌窃取
- 内核提权
- 密码收集提权
- 数据库提权
用户与用户组
权限介绍
在Windows中,权限大概分为4种,分别是User、Aministrator、System、Trustedinstaller。
在四种权限中,我们经常接触的是第三种。最后一种一般用不到。
User:普通用户权限,是系统中最安全的权限(分配给该组的默认权限不允许成员修改操作系统的设置或用户资料)
Administrato:管理员权限。可以利用Windows的机制将自己提升为System权限,以便操作SAM文件等。
System:系统权限。可以对SAM等敏感文件进行读取,往往需要将Administrator权限提升到System权限才可以对散列值进行Dump操作。
TrustedInstaller:Windows中的最高权限。对系统文件,即使拥有System权限也无法进行修改。只有拥有TrustedInstaller权限的用户才可以修改系统文件。
低权限级别将使渗透测试受到很多限制。在Windwos中,如果没有管理员权限,就无法进行获取散列值、安装软件、修改防火墙规则、修改注册表等操作。
用户相关命令
1 | net user //查看本机用户 |
组相关命令
1 | net localgroup //查看本地的组 |
Potato家族提权
Potato家族提权需要的是通过各种方法在本地(NTLM-relay)中继获取SYSTEM令牌,再通过令牌执行命令。
提权条件:
1 | 1.获取高权限令牌 --Token |
以下用户拥有SeImpersonatePrivilege权限:
- 本地管理员账户和本地服务账号(不包括管理员组普通账户)
- 由SCM(服务控制管理器)启动的服务
- 由组件对象模型(COM)基础结构启动的并配置为在特定账户下运行的COM服务器
其主要原理是当某个用户具有SeImpersonatePrivilege
特权的时候。可以调用 CreateProcessWithTokenW
以某个Token的权限启动新进程。
当用户具有SeAssignPrimaryTokenPrivilege
特权的时候,可以调用 CreateProcessAsUserW
以指定用户权限启动新进程。
Windows的Token有以下两种:
Delegation token(授权令牌):用于交互会话登录(例如本地用户直接登录、远程桌面登录)
Impersonation token(模拟令牌):用户非交互登录(利用net user访问共享文件夹)
Windows服务使用的登陆账号:
1 | NT AUTHORITY\System |
常见的LocalService用户,例如IIS和sqlserver的用户
这里示例Potato家族中的JuicyPotato,其原理在于:
通过DCOM来让服务向攻击者监听的端口发起连接并进行NTLM认证。
枚举可用COM对象的方法(获取对应的CLSID):
juicy-potato/GetCLSID.ps1 at master · ohpe/juicy-potato · GitHub
juicy-potato/test_clsid.bat at master · ohpe/juicy-potato · GitHub
用到得测试环境中,win7有如下服务,并且拥有CLSID。
查服务id可以去这个网站上查询:Windows CLSID | juicy-potato (ohpe.it)
测试环境:
攻击机:kali 192.168.137.133
受害机: win7 192.168.137.137
中转主机(用于下载中转一些文件) 192.168.32.1
首先用win7连接shell(跳过以上步骤)查看配置信息,查看权限等级。
翻到juicyPotato上传得目录,使用juicy_Potato进行提权开启一个新的会话,命令如下。
1 | JuicyPotato.exe -t * -p C:\Users\user\Desktop\Rev.bat -l 1337 -c |