Sploitus

Exploit for CVE-2021-1675

kitploit · 2026-08-27

Exploit Code

MARKDOWN45 lines
## https://sploitus.com/exploit?id=KITPLOIT:TOOLS-GITHUB-THOMASGEENS-CVE-2021-1675
# CVE-2021-1675 - PrintNightmare LPE (PowerShell)

> Caleb Stewart | John Hammond | 1 июня 2021 года

* * *

CVE-2021-1675 — это критическая уязвимость удаленного выполнения кода и локального повышения привилегий, получившая название «PrintNightmare».

Эксплойты Proof-of-concept были опубликованы (Python, C++) для возможности удаленного выполнения кода, а также версия на C# для локального повышения привилегий. Мы не видели нативной реализации на чистом PowerShell и решили попробовать свои силы в доработке и переработке эксплойта.

Этот скрипт PowerShell выполняет локальное повышение привилегий (LPE) с помощью атаки PrintNightmare.

![image](https://assets.kitploit.com/production/public/readmes/33505/5b2530551e4fe40f9bcd455df8f304c22415caff135631d15b17903d8572be23.png)

Протестировано на Windows Server 2016 и Windows Server 2019.

## Использование

Добавление нового пользователя в группу локальных администраторов по умолчанию:

root@kitploit:~
    
    
    Import-Module .\cve-2021-1675.ps1
    Invoke-Nightmare # add user `adm1n`/`P@ssw0rd` in the local admin group by default
    
    Invoke-Nightmare -DriverName "Xerox" -NewUser "john" -NewPassword "SuperSecure" 
    

Укажите собственную DLL-нагрузку для выполнения любых других действий.

root@kitploit:~
    
    
    Import-Module .\cve-2021-1675.ps1
    Invoke-Nightmare -DLL "C:\absolute\path\to\your\bindshell.dll"
    

## Подробности

  * Метод LPE не требует взаимодействия с удаленным RPC или SMB, так как работает только с функциями Print Spooler.
  * Этот скрипт содержит встроенную полезную нагрузку DLL, закодированную в Base64 и сжатую GZIP, которая модифицируется в соответствии с вашими аргументами, чтобы легко добавить нового пользователя в группу локальных администраторов.
  * Этот скрипт использует методы из PowerSploit/PowerUp для рефлексивного доступа к Win32 API.
  * Этот метод не перебирает все драйверы принтера для поиска подходящего пути к DLL — он просто берет первый драйвер и определяет нужный путь.