
PowerShellスクリプトで、PrintNightmare(CVE-2021-34527)を介したローカル権限昇格を実行します。リモートRPC/SMBを使用せずにPrint Spooler APIを活用し、カスタムDLLペイロードを注入してローカル管理者ユーザーを追加します。
Caleb Stewart | John Hammond | June 1, 2021
2021年6月2日更新: Microsoft は CVE-2021-34527 に関するアドバイザリを公開し、その特定の識別子を PrintNightmare 脆弱性エクスプロイトとして正しく呼称しました。以前、コミュニティは CVE-2021-1675 が「PrintNightmare」であると想定していましたが、6月8日のパッチではこの問題は解決されませんでした。このリポジトリは、CVE 名が異なるだけでオリジナルと同一です。
CVE-2021-34527 は、「PrintNightmare」と呼ばれる、重大なリモートコード実行およびローカル権限昇格の脆弱性です。
リモートコード実行機能に対する Proof-of-Concept エクスプロイトが公開されています(Python、C++)。また、ローカル権限昇格用の C# 版 も公開されています。純粋な PowerShell によるネイティブ実装は見かけなかったため、このエクスプロイトを改良・再構築してみたいと考えました。
この PowerShell スクリプトは、PrintNightmare 攻撃手法を用いてローカル権限昇格(LPE)を実行します。

このスクリプトは 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"