
Script de PowerShell para escalada de privilegios local mediante PrintNightmare (CVE-2021-34527). Inyecta una carga útil de DLL personalizada para agregar un usuario administrador local, aprovechando las API de Print Spooler sin RPC/SMB remoto.
Caleb Stewart | John Hammond | 1 de junio de 2021
ACTUALIZACIÓN 2 de junio de 2021: Microsoft ha publicado un aviso sobre CVE-2021-34527, denominando correctamente ese identificador específico como la vulnerabilidad PrintNightmare. Anteriormente, la comunidad asumía que CVE-2021-1675 "era PrintNightmare" ya que el parche del 8 de junio no resolvió este problema. Este repositorio es idéntico al original solo que con el nombre de CVE diferente.
CVE-2021-34527 es una vulnerabilidad crítica de ejecución remota de código y escalada de privilegios local denominada "PrintNightmare".
Se han publicado explotes de prueba de concepto (Python, C++) para la capacidad de ejecución remota de código, y una versión en C# para escalada de privilegios local. No habíamos visto una implementación nativa en PowerShell puro, y queríamos intentar refinar y reelaborar el explote.
Este script de PowerShell realiza escalada de privilegios local (LPE) con la técnica de ataque PrintNightmare.

Esto ha sido probado en Windows Server 2016 y Windows Server 2019.
Añadir un nuevo usuario al grupo de administradores locales por defecto:
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"
Proporcione un payload DLL personalizado para hacer cualquier otra cosa que desee.
Import-Module .\cve-2021-34527.ps1
Invoke-Nightmare -DLL "C:\absolute\path\to\your\bindshell.dll"