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认证三阶段

  1. Type1 - 协商阶段

    • 客户端向服务器发送支持的功能列表
    • 包含客户端请求的功能列表
  2. Type2 - 质询阶段

    • 服务器向客户端发送支持的功能列表
    • 包含16位的Challenge(挑战值)
    • 包含服务器的各类信息(Target Info字段)
  3. 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缓存的时间限制特性:

  1. lsass中的缓存(Challenge, cifs/B)会在300秒后自动清除
  2. 攻击流程:
    • 发起Type1/Type2交换
    • 等待315秒(超过缓存有效期)
    • 再发送Type3响应
    • 此时lsass缓存已清除,可以成功完成本机认证

0x04 漏洞复现

使用impacket-ghostpotato PoC

  1. HTTP协议利用

    • 使用IE浏览器访问攻击者控制的HTTP服务
    • 配合Responder进行LLMNR投毒:
      responder -I eth0 --lm
      
    • 上传RAT文件到Windows启动目录实现持久化
  2. 上传路径

    • PoC提供两个上传路径选项

WebDav利用方式

UNC路径访问特性

  • Windows访问UNC路径时:
    1. 首先尝试SMB协议
    2. 若SMB失败,则切换至WebDav协议

关键发现

  • WebDav功能依赖WebClient服务
  • 注册表位置:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WebClient
  • Windows Server 2008默认不包含WebClient组件,因此不支持WebDav回退

0x05 引用资料

  1. Shenanigans Labs原文
  2. UNC路径、SMB和WebDav解析
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反射漏洞: 修复原理 : 当主机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投毒: 上传RAT文件到Windows启动目录实现持久化 上传路径 : PoC提供两个上传路径选项 WebDav利用方式 UNC路径访问特性 : Windows访问UNC路径时: 首先尝试SMB协议 若SMB失败,则切换至WebDav协议 关键发现 : WebDav功能依赖 WebClient 服务 注册表位置: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\WebClient Windows Server 2008默认不包含WebClient组件,因此不支持WebDav回退 0x05 引用资料 Shenanigans Labs原文 UNC路径、SMB和WebDav解析