
Una versión azucarada de RottenPotatoNG, con un poco de jugo, es decir, otra herramienta de escalada de privilegios local, desde cuentas de servicio de Windows a NT AUTHORITY\SYSTEM.
Una versión azucarada de RottenPotatoNG, con un poco de jugo, es decir, otra herramienta de Elevación de Privilegios Local, desde una Cuenta de Servicio de Windows a NT AUTHORITY\SYSTEM
RottenPotatoNG y sus variantes aprovechan la cadena de elevación de privilegios basada en el BITS servicio que tiene el listener MiTM en 127.0.0.1:6666 y cuando tienes privilegios SeImpersonate o SeAssignPrimaryToken. Durante una revisión de una construcción de Windows, encontramos una configuración donde BITS estaba deshabilitado intencionadamente y el puerto 6666 estaba ocupado.
Decidimos armar RottenPotatoNG: Saluda a Juicy Potato.
Para la teoría, ver Rotten Potato - Elevación de Privilegios desde Cuentas de Servicio a SYSTEM y seguir la cadena de enlaces y referencias.
Descubrimos que, además de BITS, hay varios servidores COM que podemos abusar. Solo necesitan:
IMarshalDespués de algunas pruebas, obtuvimos y probamos una extensa lista de CLSID interesantes en varias versiones de Windows.
JuicyPotato te permite:
CLSID objetivo
elige cualquier CLSID que quieras. Aquí puedes encontrar la lista organizada por SO.
Puerto de escucha COM
define el puerto de escucha COM que prefieras (en lugar del 6666 codificado)
Dirección IP de escucha COM
enlaza el servidor a cualquier IP
Modo de creación de proceso
dependiendo de los privilegios del usuario suplantado, puedes elegir entre:
CreateProcessWithToken (necesita SeImpersonate)CreateProcessAsUser (necesita SeAssignPrimaryToken)ambosProceso a lanzar
ejecuta un ejecutable o script si la explotación tiene éxito
Argumento del proceso
personaliza los argumentos del proceso lanzado
Dirección del servidor RPC
para un enfoque sigiloso, puedes autenticarte en un servidor RPC externo
Puerto del servidor RPC
útil si quieres autenticarte en un servidor externo y el cortafuegos está bloqueando el puerto 135...
Modo TEST
principalmente para fines de prueba, es decir, probar CLSID. Crea el DCOM e imprime el usuario del token. Ver
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)
-c <{clsid}>: CLSID (default BITS:{4991d34b-80a1-4291-83b6-3328366b9097})
-z only test CLSID and print token's user

Si el usuario tiene privilegios SeImpersonate o SeAssignPrimaryToken, entonces eres SYSTEM.
Es casi imposible prevenir el abuso de todos estos servidores COM. Podrías pensar en modificar los permisos de estos objetos a través de DCOMCNFG, pero buena suerte, esto va a ser un desafío.
La solución real es proteger las cuentas y aplicaciones sensibles que se ejecutan bajo las cuentas * SERVICE.
Detener DCOM ciertamente inhibiría este exploit, pero podría tener un impacto serio en el SO subyacente.
Hay una compilación automática disponible. Los binarios se pueden descargar de la sección Artifacts aquí.
También disponible en BlackArch.