
Una versione zuccherata di RottenPotatoNG, con un po' di succo, ovvero un altro strumento di escalation dei privilegi locali, da account di servizio Windows a NT AUTHORITY\SYSTEM.
Una versione zuccherata di RottenPotatoNG, con un po' di succo, ovvero un altro strumento di Escalation dei Privilegi Locali, da Account di Servizio Windows a NT AUTHORITY\SYSTEM
RottenPotatoNG e le sue varianti sfruttano la catena di escalation dei privilegi basata sul BITS servizio che ha il listener MiTM su 127.0.0.1:6666 e quando hai i privilegi SeImpersonate o SeAssignPrimaryToken. Durante una revisione di una build di Windows abbiamo trovato una configurazione in cui BITS era intenzionalmente disabilitato e la porta 6666 era occupata.
Abbiamo deciso di armare RottenPotatoNG: Saluta 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 abusare. Devono solo:
IMarshalDopo alcuni test abbiamo ottenuto e testato un'ampia lista di CLSID interessanti su diverse versioni di Windows.
JuicyPotato ti permette di:
CLSID target
scegli qualsiasi CLSID desideri. Qui trovi la lista organizzata per sistema operativo.
Porta di ascolto COM
definisci la porta di ascolto COM che preferisci (invece del 6666 hardcodato dal marshalling)
Indirizzo IP di ascolto COM
lega il server a qualsiasi IP
Modalità di creazione del processo
in base ai privilegi dell'utente impersonato puoi scegliere tra:
CreateProcessWithToken (richiede SeImpersonate)CreateProcessAsUser (richiede SeAssignPrimaryToken)bothProcesso 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 a scopo di test, ad esempio per testare CLSID. Crea il DCOM e stampa l'utente del token. Vedi
T:\>JuicyPotato.exe
JuicyPotato v0.1
Argomenti obbligatori:
-t createprocess call: <t> CreateProcessWithTokenW, <u> CreateProcessAsUser, <*> prova entrambi
-p <programma>: programma da avviare
-l <porta>: porta di ascolto del server COM
Argomenti opzionali:
-m <ip>: indirizzo di ascolto del server COM (default 127.0.0.1)
-a <argomento>: argomento da riga di comando da passare al programma (default NULL)
-k <ip>: indirizzo IP del server RPC (default 127.0.0.1)
-n <porta>: porta di ascolto del server RPC (default 135)
-c <{clsid}>: CLSID (default BITS:{4991d34b-80a1-4291-83b6-3328366b9097})
-z solo test CLSID e stampa l'utente del token

Se l'utente ha i privilegi SeImpersonate o SeAssignPrimaryToken allora sei SYSTEM.
È quasi impossibile impedire l'abuso di tutti questi server COM. Potresti pensare di modificare i permessi di questi oggetti tramite DCOMCNFG ma buona fortuna, sarà impegnativo.
La soluzione reale è proteggere gli account sensibili e le applicazioni che vengono eseguite sotto gli account * SERVICE.
Fermare DCOM inibirebbe sicuramente questo exploit ma potrebbe avere un serio impatto sul sistema operativo sottostante.
È disponibile una build automatica. I binari possono essere scaricati dalla sezione Artifacts qui.
Disponibile anche in BlackArch.