JuicyPotato
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:
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
Puedes descargar juicypotato de https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts
Resumen
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:
ser instanciables por el usuario actual, normalmente un “usuario de servicio” que tiene privilegios de suplantación
implementar la interfaz
IMarshal
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
(necesitaSeImpersonate
)CreateProcessAsUser
(necesitaSeAssignPrimaryToken
)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
Pensamientos finales
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
Powershell rev
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
Last updated