
CVE-2021-34527 — это критическая уязвимость удалённого выполнения кода и локального повышения привилегий, получившая название «PrintNightmare».
CVE-2021-34527 — это критическая уязвимость удаленного выполнения кода и локального повышения привилегий, получившая название «PrintNightmare».
Были опубликованы эксплойты для удаленного выполнения кода (Python, C++) и версия на C# для локального повышения привилегий. Я не видел нативной реализации на чистом PowerShell и решил попробовать доработать и переработать этот эксплойт.
Данный PowerShell-скрипт выполняет локальное повышение привилегий (LPE) с использованием техники атаки PrintNightmare.
Скрипт протестирован на Windows Server 2016 и Windows Server 2019.
Добавляет нового пользователя в группу локальных администраторов по умолчанию:
Invoke-Nightmare # add user `adm1n`/`P@ssw0rd` in the local admin group by default
Invoke-Nightmare -DriverName "Xerox" -NewUser "K1LL9" -NewPassword "SuperSecure1o1"
Вы можете указать собственную DLL-нагрузку для любых других действий.
Import-Module .\cve-2021-34527.ps1
Invoke-Nightmare -DLL "C:\absolute\path\to\your\bindshell.dll"
Методика LPE не требует использования удаленного RPC или SMB — она работает исключительно с функциями диспетчера печати (Print Spooler). Скрипт содержит встроенную нагрузку в виде DLL, закодированную в Base64 и сжатую GZIP, которая модифицируется в соответствии с вашими аргументами для простого добавления нового пользователя в группу локальных администраторов. В скрипт встроены методы из PowerSploit/PowerUp для рефлексивного доступа к Win32 API. Вместо перебора всех драйверов принтеров для поиска подходящего пути к DLL данный метод просто берет первый драйвер и определяет соответствующий путь.