Servicios vulnerables en Windows
Última actualización
¿Te fue útil?
Última actualización
¿Te fue útil?
Es posible que podamos escalar privilegios en sistemas bien configurados y con parches adecuados si se permite a los usuarios instalar software o si se utilizan aplicaciones o servicios de terceros vulnerables en toda la organización. Es habitual encontrar una multitud de aplicaciones y servicios diferentes en estaciones de trabajo de Windows durante nuestras evaluaciones. Veamos un ejemplo de un servicio vulnerable que podríamos encontrar en un entorno del mundo real. Algunos servicios o aplicaciones pueden permitirnos escalar a SYSTEM. Por el contrario, otros podrían provocar una condición de denegación de servicio o permitir el acceso a datos confidenciales, como archivos de configuración que contienen contraseñas.
Como se mencionó anteriormente, comencemos enumerando las aplicaciones instaladas para tener una idea del asunto.
El resultado parece ser en su mayoría estándar para una estación de trabajo con Windows 10. Sin embargo, se destaca la aplicación Druva inSync
. Una búsqueda rápida en Google muestra que la versión 6.6.3
es vulnerable a un ataque de inyección de comandos a través de un servicio RPC expuesto. Es posible que podamos usar PoC de explotación para escalar nuestros privilegios. En esta que detalla el descubrimiento inicial de la falla, podemos ver que Druva inSync es una aplicación que se usa para "copia de seguridad integrada, eDiscovery y monitoreo de cumplimiento", y la aplicación cliente ejecuta un servicio en el contexto de la cuenta privilegiada NT AUTHORITY\SYSTEM
. La escalada es posible al interactuar con un servicio que se ejecuta localmente en el puerto 6064.
Realicemos una enumeración adicional para confirmar que el servicio se está ejecutando como se espera. Un vistazo rápido con netstat
muestra un servicio ejecutándose localmente en el puerto 6064
.
A continuación, asignamos el ID del proceso (PID) 3324
al proceso en ejecución.
En este punto, tenemos suficiente información para determinar que la aplicación Druva inSync está efectivamente instalada y funcionando, pero podemos hacer una última comprobación utilizando el cmdlet Get-Service
.
Con esta información en la mano, probemos el exploit PoC, que es este breve fragmento de PowerShell.
Modifique la variable $cmd
en el script PoC del exploit Druva inSync para descargar nuestro shell inverso de PowerShell en la memoria.
A continuación, inicie un servidor web Python en el mismo directorio donde script.ps1
reside nuestro script.
Este ejemplo muestra lo arriesgado que puede ser permitir que los usuarios instalen software en sus máquinas y cómo siempre debemos enumerar el software instalado si nos encontramos en un servidor o un host de escritorio de Windows. Las organizaciones deben restringir los derechos de administrador local en las máquinas de los usuarios finales siguiendo el principio del mínimo privilegio. Además, una herramienta de lista blanca de aplicaciones puede ayudar a garantizar que solo se instale software debidamente examinado en las estaciones de trabajo de los usuarios.
Siga los pasos anteriores para aumentar los privilegios en el sistema de destino mediante la falla
Druva inSync
. Envíe el contenido de la flag en la carpetaVulServices
en el escritorio del administrador.
Nos copiamos el siguiente código y creamos un archivo como druva.ps1
en el host de destino:
Hemos modificado la variable cmd, que descargará el archivo shell.ps1
de nuestra máquina Kali Linux
Nos descargamos este script en Kali Linux, y lo guardamos como shell.ps1
:
Editamos el archivo y abajo del todo le añadimos la siguiente línea para que apunte a nuestra IP y puerto de escucha:
Para nuestros propósitos, queremos modificar la variable $cmd
con el comando deseado. Podemos hacer muchas cosas aquí, como agregar un usuario administrador local (que es un poco ruidoso y queremos evitar modificar cosas en los sistemas cliente siempre que sea posible) o enviarnos un shell inverso. Probemos esto con . Descarga el script en la de atacante y cambia el nombre por algo simple como shell.ps1
. Abre el archivo y agrega lo siguiente en la parte inferior del archivo del script (cambiando la IP para que coincida con nuestra dirección y el puerto de escucha también):
Por último, inicie un listener de Netcat
en la máquina de atacante y ejecute el script de PowerShell de PoC en el host de destino (después de con un comando como Set-ExecutionPolicy Bypass -Scope Process
). Obtendremos una conexión de reverse shell con privilegios SYSTEM
si todo sale según lo planeado.