Ghost Potato 复现(Cve-2019-1384)
字数 1269 2025-08-26 22:11:51
Ghost Potato漏洞复现与分析 (CVE-2019-1384)
0x00 漏洞概述
Ghost Potato是Windows系统中一个NTLM反射提权漏洞(CVE-2019-1384),属于Potato系列漏洞之一。该漏洞绕过了MS08-068的修补方案,实现了本机的NTLM反射攻击,可导致权限提升。
0x01 NTLM认证基础
NTLM认证三阶段
-
Type1 - 协商阶段
- 客户端向服务器发送支持的功能列表
- 包含客户端请求的功能列表
-
Type2 - 质询阶段
- 服务器向客户端发送支持的功能列表
- 包含16位的Challenge(挑战值)
- 包含服务器的各类信息(Target Info字段)
-
Type3 - 验证阶段
- 客户端使用自身NTLM Hash加密Challenge得到Response
- 将Response发送给服务端
- 服务端本地使用用户NTLM hash加密Challenge后与Response比对
0x02 MS08-068修复机制
MS08-068通过InitializeSecurityContextA函数中的pszTargetName参数修复了NTLM反射漏洞:
SECURITY_STATUS SEC_ENTRY InitializeSecurityContextA(
PCredHandle phCredential,
PCtxtHandle phContext,
SEC_CHAR *pszTargetName,
unsigned long fContextReq,
unsigned long Reserved1,
unsigned long TargetDataRep,
PSecBufferDesc pInput,
unsigned long Reserved2,
PCtxtHandle phNewContext,
PSecBufferDesc pOutput,
unsigned long *pfContextAttr,
PTimeStamp ptsExpiry
);
修复原理:
- 当主机A向主机B发送Type1请求时,将
pszTargetName设置为cifs/B - 获取Type2的Challenge后,向lsass进程写入缓存
(Challenge, cifs/B) - 主机B收到Type3的Response后,检查lsass中是否存在
(Challenge, cifs/B)缓存 - 只有发起请求的主机A才有此缓存,不同主机间无法完成反射认证
0x03 CVE-2019-1384绕过原理
Ghost Potato漏洞利用了lsass缓存的时间限制特性:
- lsass中的缓存
(Challenge, cifs/B)会在300秒后自动清除 - 攻击流程:
- 发起Type1/Type2交换
- 等待315秒(超过缓存有效期)
- 再发送Type3响应
- 此时lsass缓存已清除,可以成功完成本机认证
0x04 漏洞复现
使用impacket-ghostpotato PoC
-
HTTP协议利用:
- 使用IE浏览器访问攻击者控制的HTTP服务
- 配合Responder进行LLMNR投毒:
responder -I eth0 --lm - 上传RAT文件到Windows启动目录实现持久化
-
上传路径:
- PoC提供两个上传路径选项
WebDav利用方式
UNC路径访问特性:
- Windows访问UNC路径时:
- 首先尝试SMB协议
- 若SMB失败,则切换至WebDav协议
关键发现:
- WebDav功能依赖
WebClient服务 - 注册表位置:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WebClient - Windows Server 2008默认不包含WebClient组件,因此不支持WebDav回退