
PowerShell-Exploit zur lokalen Privilegienerweiterung für PrintNightmare (CVE-2021-34527) gegen den Windows Print Spooler. Bettet eine benutzerdefinierte DLL-Nutzlast ein, um über reflektierte Win32-API-Aufrufe einen lokalen Admin-Benutzer hinzuzufügen.
Caleb Stewart | John Hammond | 1. Juni 2021
UPDATE 2. Juni 2021: Microsoft hat ein Advisory zu CVE-2021-34527 veröffentlicht und bezeichnet diese spezifische Kennung korrekt als PrintNightmare-Sicherheitslücke. Zuvor ging die Community davon aus, dass CVE-2021-1675 „PrintNightmare“ sei, da der Patch vom 8. Juni dieses Problem nicht behob. Dieses Repository ist identisch zum Original, nur mit dem anderen CVE-Namen.
CVE-2021-34527 ist eine kritische Sicherheitslücke, die sowohl Remote Code Execution als auch lokale Privilegienausweitung ermöglicht und als „PrintNightmare“ bezeichnet wird.
Proof-of-Concept-Exploits wurden für die Remote Code Execution-Fähigkeit veröffentlicht (Python, C++) sowie eine C#-Umsetzung für die lokale Privilegienausweitung. Wir hatten noch keine native Implementierung in reinem PowerShell gesehen und wollten uns daran versuchen, den Exploit zu verfeinern und neu zu gestalten.
Dieses PowerShell-Skript führt eine lokale Privilegienausweitung (LPE) mit der PrintNightmare-Angriffstechnik durch.

Getestet wurde dies auf Windows Server 2016 und Windows Server 2019.
Standardmäßig einen neuen Benutzer zur lokalen Administratorengruppe hinzufügen:
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"
Stellen Sie eine benutzerdefinierte DLL-Nutzlast bereit, um alles andere zu tun, was Sie möchten.
Import-Module .\cve-2021-34527.ps1
Invoke-Nightmare -DLL "C:\absolute\path\to\your\bindshell.dll"