Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit — Generiert fünf .NET-Deserialisierungs-Payload-Formate für CVE-2026-56158, liefert sie über HTTP/SOAP/JSON-Endpunkte aus, enthält Mock-Server, Scanner und JSON-Berichtsausgabe. | Kitploit
Tools/GitHubGitHub/sam00/cve-2026-56158-.net-framework-rce-poc-exploit
SchwachstellenscannerPayload-GenerierungStatische Code-Analyse (SAST)SchwachstellenanalyseExploitationWebanwendungs-ExploitationPayload-Entwicklung
GitHubsam00/cve-2026-56158-.net-framework-rce-poc-exploit

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

Generiert fünf .NET-Deserialisierungs-Payload-Formate für CVE-2026-56158, liefert sie über HTTP/SOAP/JSON-Endpunkte aus, enthält Mock-Server, Scanner und JSON-Berichtsausgabe.

Repository anzeigen
19vor 1 MonatNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-56158 — .NET Framework PoC-Exploit für Remotecodeausführung (RCE)

Kritisch (CVSS 9.8) — Deserialisierung nicht vertrauenswürdiger Daten (CWE-502) in Microsoft .NET Framework & .NET Runtime Gepatcht: 14. Juli 2026 | Entdeckt von: Positive Technologies (PT-2026-60174)


Inhaltsverzeichnis

  • Übersicht
  • Schwachstellendetails
  • Betroffene Versionen
  • Angriffsvektoren
  • Exploit-Architektur
  • Dateistruktur
  • Installation
  • Schritt-für-Schritt-Anleitung
  • Testen
  • Erkennung & Härtung
  • Gegenmaßnahmen
  • Referenzen
  • Haftungsausschluss
  • Lizenz

Übersicht

CVE-2026-56158 ist eine kritische Schwachstelle zur Remotecodeausführung in Microsoft .NET Framework und .NET Runtime. Der Fehler liegt in der unsicheren Deserialisierung nicht vertrauenswürdiger Daten (CWE-502) — wenn eine .NET-Anwendung veraltete Serialisierer (BinaryFormatter, , , ) oder Json.NET mit verwendet, kann ein nicht authentifizierter Remote-Angreifer ein manipuliertes serialisiertes Payload bereitstellen, das bei der Deserialisierung beliebige Codeausführung auslöst.

NetDataContractSerializer
SoapFormatter
ObjectStateFormatter
TypeNameHandling.All/Auto

Die Schwachstelle weist einen CVSS-3.1-Basiswert von 9.8 (Kritisch) mit dem Vektor AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H auf, was bedeutet:

  • Angriffsvektor: Netzwerk (kein physischer Zugriff erforderlich)
  • Angriffskomplexität: Niedrig
  • Erforderliche Berechtigungen: Keine
  • Benutzerinteraktion: Keine
  • Auswirkung: Vollständige Kompromittierung von Vertraulichkeit, Integrität und Verfügbarkeit

Microsoft veröffentlichte am 14. Juli 2026 Sicherheitsupdates im Rahmen des monatlichen Patch-Tuesday-Zyklus.


Schwachstellendetails

FeldWert
CVE-IDCVE-2026-56158
Titel.NET-Framework-Schwachstelle für Remotecodeausführung
CVSS 3.19.8 Kritisch (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVSS 2.07.5 Hoch (AV:N/AC:L/Au:N/C:P/I:P/A:P)
CWECWE-502 (Deserialisierung nicht vertrauenswürdiger Daten)
Veröffentlicht14. Juli 2026
Gepatcht14. Juli 2026
EntdeckerPositive Technologies (PT-2026-60174)
EPSSNoch nicht bewertet
CISA KEVNicht gelistet

Grundursache

Die veralteten Serialisierer der .NET-Runtime rekonstruieren beliebige Objekttypen aus serialisierten Datenströmen, ohne den Typ oder Inhalt zu validieren. Wenn ein Angreifer die serialisierte Eingabe kontrolliert, kann er den Deserialisierer dazu veranlassen, unerwartete Typen zu instanziieren, deren Konstruktoren, Callbacks oder Property-Setter beliebigen Code ausführen — ein klassischer Deserialisierungs-Gadget-Chain-Angriff.

Die Schwachstelle betrifft mehrere Serialisierungsmechanismen:

  1. BinaryFormatter — Binärer Datenstrom mit Typ-Metadaten; TypeConfuseDelegate-Gadget-Chain delegiert an Process.Start
  2. NetDataContractSerializer — XML-Format, das .NET-Typinformationen enthält; ermöglicht direkte Typinstanziierung
  3. SoapFormatter — SOAP-XML-Envelope mit CLR-Typreferenzen; ProcessStartInfo eingebettet im SOAP-Body
  4. ObjectStateFormatter — ASP.NET-ViewState-Binärformat; Process.Start über ein ViewState-Feld
  5. Json.NET (Newtonsoft.Json) — JSON mit $type-Metadaten, wenn TypeNameHandling.All/Auto aktiviert ist; ObjectDataProvider-Gadget ruft Process.Start auf

Betroffene Versionen

ProduktVerwundbarer BereichBehobene VersionKB-Artikel
.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.5Alle vor dem PatchGepatchtKB5100985
.NET Framework 4.6.2–4.7.2Alle vor dem PatchGepatchtKB5100991
.NET Framework 4.8Alle vor dem PatchGepatchtKB5101011
.NET Framework 4.8.1Alle vor dem PatchGepatchtKB5101002
Visual Studio 2022 (17.12)Vor dem Patch17.12.x—
Visual Studio 2022 (17.14)Vor dem Patch17.14.x—
Visual Studio 2026 (18.7)Vor dem Patch18.7.x—

Alpine-Linux-Pakete:

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

Angriffsvektoren

Dieser PoC-Exploit generiert und liefert Payloads über 5 verschiedene Deserialisierungs-Angriffsformate:

1. BinaryFormatter (TypeConfuseDelegate-Gadget)

root@kitploit:~
Serialized Stream → BinaryFormatter.Deserialize() → TypeConfuseDelegate
  → Process.Start("cmd.exe", "/c calc.exe") → RCE
  • Format: Binär (.NET-serialisierter Datenstrom)
  • Content-Type: application/octet-stream
  • Übertragung: HTTP-POST-Body, Datei
  • Gadget: ActivitySurrogateSelector+ObjectSurrogate → TypeConfuseDelegate → Process.Start

2. NetDataContractSerializer

root@kitploit:~
XML with type info → NetDataContractSerializer.ReadObject()
  → ProcessStartInfo instantiation → Process.Start → RCE
  • Format: XML mit eingebetteten .NET-Typinformationen
  • Content-Type: application/octet-stream oder text/xml
  • Übertragung: HTTP-POST-Body, WCF-Endpunkt

3. SoapFormatter

root@kitploit:~
SOAP envelope → SoapFormatter.Deserialize()
  → ProcessStartInfo in SOAP body → Process.Start → RCE
  • Format: SOAP-XML-Envelope mit CLR-Typreferenzen
  • Content-Type: text/xml
  • Übertragung: WCF/ASMX-SOAP-Endpunkt

4. ObjectStateFormatter (ViewState)

root@kitploit:~
ViewState binary → ObjectStateFormatter.Deserialize()
  → Process.Start via ViewState field → RCE
  • Format: Binär (ASP.NET-ViewState-Format)
  • Content-Type: application/octet-stream
  • Übertragung: HTTP-POST-Feld __VIEWSTATE

5. Json.NET (TypeNameHandling.All)

root@kitploit:~
JSON with $type → JsonConvert.DeserializeObject<T>(json, TypeNameHandling.All)
  → ObjectDataProvider.MethodName = "Start" → Process.Start → RCE
  • Format: JSON mit $type-Metadaten
  • Content-Type: application/json
  • Übertragung: REST-API-Endpunkt mit TypeNameHandling.All oder Auto

Exploit-Architektur

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                             │   │
│  └──────────────┘   └──────────────────────────────────────────┘   │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

Angriffsablauf

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-Diagramm

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

Dateistruktur

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

Installation

Voraussetzungen

  • Python 3.8+ (nur Standardbibliothek — keine externen Abhängigkeiten)
  • Ziel: .NET-Anwendung mit unsicherer Deserialisierung (für den realen Einsatz)
  • Keine .NET-Installation für Tests erforderlich (Mock-Server enthalten)

Klonen

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

Schritt-für-Schritt-Anleitung

Schritt 1: Payloads generieren

Generieren Sie alle 5 Payload-Formate mit dem Standardbefehl (calc.exe):

root@kitploit:~
python3 exploit.py

Ausgabe:

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

Mit einem benutzerdefinierten Befehl generieren:

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

Schritt 2: Lokal mit dem Mock-Server testen

Starten Sie den integrierten Mock-Server, der einen verwundbaren .NET-Endpunkt simuliert, und liefern Sie alle Payloads:

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

Dies bewirkt Folgendes:

  1. Start eines Mock-HTTP-Servers, der einen verwundbaren .NET-Endpunkt simuliert
  2. Generierung aller 5 Payload-Formate
  3. Zustellung jedes Payloads an den Mock-Server
  4. Verifizierung der RCE-Auslösung (Deserialisierung → Codeausführung)
  5. Erstellung eines JSON-Exploit-Berichts

Erwartete Ausgabe:

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

Benutzerdefinierter Port:

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

Schritt 3: Payload in einer Datei speichern

Speichern Sie ein bestimmtes Payload-Format für die manuelle Übertragung in einer Datei:

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"

Schritt 4: An ein entferntes Ziel liefern

Liefern Sie alle Payloads an ein entferntes .NET-Ziel:

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

Mit SSL-Zertifikats-Umgehung:

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

Schritt 5: Ein Ziel auf Schwachstellenindikatoren scannen

Scannen Sie ein Ziel auf .NET-Version, Deserialisierungs-Endpunkte und ViewState-Probleme:

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

Dies prüft:

  • HTTP-Response-Header auf .NET-Versionsindikatoren (X-AspNet-Version, X-Powered-By)
  • Häufige Deserialisierungs-Endpunktpfade (/api/deserialize, /Service.svc, usw.)
  • ASP.NET-ViewState-Schutzstatus (MAC-Validierung, Verschlüsselung)

Schritt 6: Exploit-Bericht erstellen

Erstellen Sie einen JSON-Bericht mit vollständigen Exploit-Details:

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

Der Bericht enthält:

  • CVE-Metadaten (ID, CVSS, CWE, Vektor)
  • Payload-Details (Format, Größe, SHA-256-Hash)
  • Übertragungsergebnisse (HTTP-Status, Antwort)
  • Scan-Ergebnisse
  • RCE-Bestätigungsstatus
  • Referenzen

Testen

Unit-Tests (74 Tests)

root@kitploit:~
python3 test_exploit.py

Die Tests decken ab:

  • Payload-Generierung für alle 5 Formate
  • Benutzerdefinierte Befehlsinjektion
  • Base64-Kodierung
  • Payload-Übertragung (HTTP, SOAP, JSON, Datei)
  • Schwachstellenscanner (Versionserkennung, Endpunkt-Erkennung)
  • Mock-Listener (RCE-Bestätigung, Formaterkennung)
  • Berichtserstellung (JSON-Ausgabe, Dateierstellung)
  • Payload-Integrität (deterministische Generierung)
  • Randfälle (leere Befehle, komplexe Argumente)

End-to-End-Tests (37 Tests)

root@kitploit:~
python3 e2e_test.py

Die Tests decken ab:

  • Vollständige Exploit-Kette: generieren → liefern → RCE verifizieren
  • Alle 5 Payload-Formate an den Mock-Server geliefert
  • RCE-Bestätigung über mehrere Formate
  • Dateibasierte Payload-Übertragung
  • Integration des Schwachstellenscanners
  • Erstellung und Validierung des Exploit-Berichts

Testergebnisse

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

Erkennung & Härtung

Führen Sie den Erkennungs-Checker aus, um verwundbare .NET-Installationen zu identifizieren:

root@kitploit:~
python3 detect.py

Scannen Sie Quellcode auf unsichere Deserialisierungsmuster:

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

Der Detektor prüft auf:

  • Installierte .NET-Runtime-Versionen (über dotnet --list-runtimes)
  • .NET-Framework-Registrierungseinträge (Windows)
  • Quellcode-Muster: BinaryFormatter.Deserialize, NetDataContractSerializer.ReadObject, SoapFormatter.Deserialize, ObjectStateFormatter.Deserialize, TypeNameHandling.All/Auto, LosFormatter.Deserialize

Gegenmaßnahmen

  1. .NET-Runtime aktualisieren auf gepatchte Versionen (8.0.29+, 9.0.18+, 10.0.10+)
  2. .NET Framework aktualisieren über Windows Update (KB5100985/KB5100991/KB5101011)
  3. BinaryFormatter ersetzen durch System.Text.Json oder DataContractSerializer mit strenger Typbindung
  4. SerializationBinder-Allowlisten implementieren, wenn veraltete Serialisierer erforderlich sind
  5. AppContext-Schalter setzen: Switch.System.Runtime.Serialization.UseLegacyBinaryFormatter=false
  6. Für ASP.NET ViewState: ViewStateMac und ViewStateEncryption aktivieren
  7. Für Json.NET: TypeNameHandling.All/Auto vermeiden; TypeNameHandling.None verwenden
  8. SoapFormatter und NetDataContractSerializer für nicht vertrauenswürdige Eingaben blockieren
  9. WDAC/AppLocker-Richtlinien anwenden, um das Starten von Prozessen durch .NET-Anwendungen einzuschränken
  10. Überwachen auf unerwartete Kindprozesse von dotnet.exe, devenv.exe oder benutzerdefinierten .NET-Hostprozessen

Referenzen

  • NVD — CVE-2026-56158
  • Tenable — CVE-2026-56158
  • Snyk — SNYK-ALPINE324-DOTNET8RUNTIME-18025263
  • Microsoft — Kumulatives Update Juli 2026
  • MSRC — CVE-2026-56158
  • Alpine Security Tracker — CVE-2026-56158
  • .NET 8.0.29-Versionshinweise

Haftungsausschluss

Dieser Proof-of-Concept-Exploit wird ausschließlich für Bildungszwecke und autorisierte Sicherheitstests bereitgestellt. Verwenden Sie dieses Tool nur gegen Systeme, die Ihnen gehören oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen besitzen. Die unbefugte Verwendung gegen Systeme, die Ihnen nicht gehören, ist illegal und kann gegen Gesetze zu Computerbetrug und -missbrauch verstoßen.

Die Autoren und Mitwirkenden sind nicht verantwortlich für Missbrauch oder Schäden, die durch diese Software verursacht werden.


Lizenz

MIT-Lizenz — siehe Datei LICENSE für Details.

Tool herunterladen