0x01 前言
GPP漏洞只在2008没打补丁版本上存在,超过2008版本的系统没有办法写入密码。
0x02 组策略首选项
组策略首选项是一组组策略客户端扩展,可向运行 Microsoft Windows 桌面和服务器操作系统的加入域的计算机提供首选项设置。首选项设置是部署到桌面和服务器的管理配置选项。首选项设置与策略设置不同,因为用户可以选择更改管理配置。
0x03 SYSVOL
SYSVOL 是活动目录里面的一个用于存储域公共文件服务器副本的共享文件夹,在域中的所有域控制器之间进行复制。SYSVOL 文件夹是在安装活动目录时自动创建的,主要用来存放登录脚本、组策略数据及其他域控制器需要的域信息等。SYSVOL 在所有经过身份验证的域用户或者域信任用户具有读权限的活动目录的域范围内共享。整个 SYSVOL 目录在所有的域控制器中是自动同步和共享的。
域策略均存放位置:
C:\Windows\SYSVOL\DOMAIN\Policies
0x04 漏洞产生原因
在域环境中管理大量计算机时,对机器资源的访问通常使用组策略下发,常规做法是将Administrator的密码保存在SYSVOL中的XML文件中,而只要是在域中已注册的账号,乃至普通域权限的账号也可以自由读取SYSVOL目录的数据,但是如果打补丁或者高版本的话,GPP服务是不能输入密码的了,这个漏洞也就相应不存在了。
0x05漏洞复现
漏洞环境:Windows Server 2008R2
主机权限:域控
一、点击开始-管理工具-组策略管理。
二、右击组策略对象,点击新建。
三、此处输入名称为GPP,点击确定。
四、在新建的GPP组策略对象上点击编辑,进入组策略管理编辑器界面。
五、点击计算机配置-首选项-控制面板设置,右击本地用户和组,选择新建-本地用户。
六、用户名选择Administrator(内置),输入密码以及确认密码,点击确定,在本地用户和组里面,就可以看到添加的Administrator用户。
七、返回组策略管理界面,点击添加。
八、在输入要选择的对象名称框中输入Domain Computers,并点击检查名称,点击确定。
九、点击详细信息,可以看到唯一ID值。
十、进入到C:\Windows\SYSVOL\DOMAIN\Policies文件夹中,发现存在{BE33F988-DDEC-471C-BD3D-15F8E2DE54C0}文件夹。
十一、进入到此文件夹中,并依次进入Machine-Preferences-Groups文件夹,发现存在Groups.xml文件,并双击打开。
十二、复制cpapassword字段内容,使用kali中的gpp-decrypt工具进行解密,明文密码为Admin123。
0x06漏洞实战演示
语法:查找SYSVOL文件夹下的xml文件
dir /s /a \\域控IP\SYSVOL\*.xml
假如,现在已经拿到了一台域内普通用户权限,使用下面构造好的语句进行查询,发现了存在两个Groups.xml文件,并显示文件的创建时间以及文件大小。
dir \\10.10.0.8\sysvol
dir /s /a \\10.10.10.8\SYSVOL\*.xml
选择最新时间的Groups.xml文件进行查看,使用下面命令进行查看文件内容:
type \\redteam.red\SYSVOL\redteam.red\Policies\{BE33F988-DDEC-471C-BD3D-15F8E2DE54C0}\Machine\Preferences\Groups\Groups.xml
可以看到userName值为Administrator,以及cpassowrd值,复制cpassword字段内容,使用kali进行解密,解出明文密码为Admin123。
使用IPC进行连接,并查看C盘根目录,到此就拿到了域控权限。
net use \\10.10.10.8\ipc$ "Admin123" /user:Administrator
net use
dir \\10.10.10.8\c$
0x07 修复建议
在用于管理组策略的计算机上安装 KB2962486 补丁,防止新的凭据被放置在组策略首选项中。
针对 Everyone 访问权限进行设置,具体如下:
1、设置共享文件夹 SYSVOL 的访问权限。
2、将包含组策略密码的 XML 文件从 SYSVOL 目录中删除 。