JuicyPotato
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:
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
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:
essere istanziabili dall'utente corrente, normalmente un "utente di servizio" che ha privilegi di impersonificazione
implementare l'interfaccia
IMarshal
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
(richiedeSeImpersonate
)CreateProcessAsUser
(richiedeSeAssignPrimaryToken
)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
Pensieri finali
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
Powershell rev
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:
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
Last updated