Una versión azucarada de RottenPotatong, con un poco de jugo, es decir, otra herramienta de escalada de privilegios locales, desde cuentas de servicio de Windows hasta NT Authority System
Rottenpotatong y sus variantes aprovechan la cadena de escalada de privilegios basada en el servicio BITS que tiene el oyente MITM en 127.0.0.1:6666 y cuando tiene privilegios SeImpersonate o SeAssignPrimaryToken . Durante una revisión de la construcción de Windows, encontramos una configuración donde BITS estaban desactivados intencionalmente y se tomó el puerto 6666 .
Decidimos armarse RottenPotatong: saluda a la papa jugosa .
Para la teoría, ver Rotten Potato - Escalación de privilegios de las cuentas de servicio al sistema y siga la cadena de enlaces y referencias.
Descubrimos que, aparte 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:
Target CLSID
Elija cualquier clsid que desee. Aquí puede encontrar la lista organizada por OS.
Puerto de escucha de com
Defina el puerto de escucha de com que prefiera (en lugar del 6666 con código duro con el escenario.
COM Dirección IP de escucha
Atar el servidor en cualquier IP
Modo de creación de procesos
Dependiendo de los privilegios del usuario del usuario que puede elegir:
CreateProcessWithToken (necesita SeImpersonate )CreateProcessAsUser (necesita SeAssignPrimaryToken )both Proceso para lanzar
Iniciar un ejecutable o script si la explotación tiene éxito
Argumento de proceso
Personalizar los argumentos del proceso lanzados
Dirección del servidor RPC
Para un enfoque sigiloso, puede autenticarse en un servidor RPC externo
Puerto del servidor RPC
útil si desea autenticarse en un servidor externo y el firewall está bloqueando el puerto 135 ...
Modo de prueba
Principalmente para fines de prueba, es decir, pruebas CLSID. Crea el DCOM e imprime al usuario de Token. Ver aquí para probar
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 los privilegios SeImpersonate o SeAssignPrimaryToken , entonces usted es el sistema .
Es casi imposible prevenir el abuso de todos estos servidores COM. Podría pensar en modificar los permisos de estos objetos a través de DCOMCNFG , pero buena suerte, esto será un desafío.
La solución real es proteger cuentas y aplicaciones confidenciales que se ejecutan bajo las * SERVICE . Detener DCOM ciertamente inhibiría esta hazaña, pero podría tener un grave impacto en el sistema operativo subyacente.
Una compilación automática está disponible. Los binarios se pueden descargar de la sección Artifacts aquí.
También disponible en Blackarch.