Source: watchTowr (whitepaper publié suite à une présentation à Black Hat Europe 2025). Ce document de recherche expose une vulnérabilité d’« invalid cast » dans .NET Framework (HttpWebClientProtocol) et montre comment l’import dynamique de WSDL génère des proxies SOAP vulnérables menant à des écritures arbitraires de fichiers et à des compromissions.
Le cœur du problème est un mauvais cast dans HttpWebClientProtocol.GetWebRequest: au lieu de forcer un HttpWebRequest, le code retourne un WebRequest pouvant devenir un FileWebRequest si l’URL utilise file://. Résultat: les classes dérivées (SoapHttpClientProtocol, HttpPostClientProtocol, etc.) peuvent écrire sur le disque ou relayer NTLM au lieu d’émettre des requêtes HTTP/S. L’impact principal est une écriture arbitraire de fichier (notamment via POST/SOAP) et le NTLM relaying/fuite de challenge.
La chaîne d’exploitation la plus pratique repose sur l’import dynamique de WSDL avec ServiceDescriptionImporter: le WSDL (contrôlé par l’attaquant) génère à la volée une classe dérivée de SoapHttpClientProtocol dont la propriété Url peut pointer vers file://. En invoquant une méthode du proxy, le corps SOAP est écrit sur le fichier ciblé. Le whitepaper décrit trois scénarios d’exploitation menant à l’exécution de code: 1) ASPX webshell via des objets complexes (contrôle d’attributs XML, ex. script runat=“server”); 2) CSHTML webshell via des arguments simples (string); 3) CSHTML webshell sans contrôle d’arguments en injectant le code dans le namespace WSDL (ex. payload Razor dans l’URL de namespace). Des variantes incluent HttpPostClientProtocol (écritures url-encodées) et la surcharge du protocole dans ServiceDescriptionImporter.
Des exemples concrets sont fournis: • Barracuda Service Center RMM – RCE pré-auth via upload d’ASPX (WT-2025-0086) et deux failles connexes d’unsafe reflection (WT-2025-0084) et d’insecure deserialization (XmlSerializer avec ExpandedWrapper/ObjectDataProvider, WT-2025-0085); • Umbraco CMS 8 – RCE authentifiée via upload de CSHTML; • Ivanti Endpoint Manager – RCE authentifiée via upload CSHTML par namespace injection (méthodes sans arguments); • Microsoft PowerShell – NTLM relaying et écriture de fichier (ex. profile.ps1); • Microsoft SSIS – NTLM relaying et écriture de fichier via la tâche Web Services. Des preuves de concept et extraits de code sont fournis.
Microsoft a été informé en 2024 et à nouveau en 2025, mais estime que le problème relève des applications consommant des WSDL non fiables et ne compte pas corriger .NET Framework. Le papier conclut que de nombreuses applications (éditeurs tiers et internes) utilisant l’import WSDL à la volée sont potentiellement exposées.
TTPs observés:
- Abus de HttpWebClientProtocol/SoapHttpClientProtocol pour forcer des FileWebRequest (écriture locale)
- Import WSDL via ServiceDescriptionImporter et génération dynamique de DLL/CodeDOM
- Upload de webshell (ASPX/CSHTML) via corps SOAP, attributs XML ou namespace
- NTLM relaying/challenge leak via schémas non HTTP
- Unsafe reflection (résolution de types depuis le nom de service WSDL) et insecure deserialization (XmlSerializer, ExpandedWrapper/ObjectDataProvider)
Il s’agit d’une publication de recherche technique visant à documenter une vulnérabilité structurelle de .NET Framework et des vecteurs d’exploitation pratiques à grande échelle.
🧠 TTPs et IOCs détectés
TTP
[‘Abus de HttpWebClientProtocol/SoapHttpClientProtocol pour forcer des FileWebRequest (écriture locale)’, ‘Import WSDL via ServiceDescriptionImporter et génération dynamique de DLL/CodeDOM’, ‘Upload de webshell (ASPX/CSHTML) via corps SOAP, attributs XML ou namespace’, ‘NTLM relaying/challenge leak via schémas non HTTP’, ‘Unsafe reflection (résolution de types depuis le nom de service WSDL)’, ‘Insecure deserialization (XmlSerializer, ExpandedWrapper/ObjectDataProvider)’]
🔗 Source originale : https://labs.watchtowr.com/vulnerability-disclosure-policy/