saber que hay un servicio Web, SSH, y una aplicación desconocida ejecutadas en el sistema destino. Además, gracias a una respuesta HTTP emitida por el servidor web pude saber que la aplicación ejecutada en el sistema destino es Kibana, que es utilizada para visualizar, buscar y analizar datos indexados en su motor de búsqueda integrado. Luego, logramos encontrar una PoC de la vulnerabilidad RCE presenta la versión asociada a la aplicación instalada en el sistema destino, logrando acceder al sistema destino mediante una reverse Shell. Luego, para la escalada privilegio vertical, aproveche que al archivo binario ejecutable python3 se le había asignado el capability cap_setuid para ejecutar una nueva instancia de Shell con los privilegios de root.
En este caso debemos acceder al sistema destino y obtener las
banderas. Para ello empezaremos utilizando el comando openvpn con el fin de establecer una conexión VPN con la red virtual dónde está la máquina Ghizer. Para ello utilizaremos el archivo de configuración, que lo podemos descargar en la plataforma de Tryhackme, que puede incluir información como la dirección del servidor VPN, los certificados y claves de seguridad, la configuración de encriptación, etc.
Luego de que se establece la conexión VPN se crea una interfaz
virtual de red en nuestra máquina. Donde se enruta todo el tráfico de red a través de esa interfaz.
Además, la plataforma de Tryhackme nos muestra la dirección IP de la máquina
Ghizer. Luego pasaremos a la fase de Escaneo y Enumeración con el fin de poder escanear los puertos del nodo. Además, obtendremos los servicios que se han levantado en los puertos abiertos, las versiones de los servicios, y el sistema operativo de la máquina Ghizer. Para ello utilizaremos `Nmap`. Donde le pasaremos los siguientes parámetros: - El parámetro -sC o –script=”default” para utilizar todos los scripts de la categoría default con el fin de realizar un escaneo y detección de los puertos de manera avanzada. - El parámetros -sV con el fin de conocer las versiones de los servicios levantados en los puertos abiertos. - El parámetro -n para evitar la resolución DNS, y el parámetro – max-rate para indicarle el número máximo de paquetes por segundo que va a utilizar Nmap para el escaneo con el fin de evitar sobrecargar la red con el tráfico generado por la herramienta. - El parámetro -Pn para evitar que Nmap, que realice ningún tipo de sondeo o ping hacia el sistema destino con el fin de determinar si el host está vivo o activo, y realice el escaneo de puertos directamente. - El parámetro -p- para realizar un escaneo de los 65535 puertos del nodo y el parámetro –open con el fin de que nos muestre información solo de los puertos abiertos. Los resultados que obtuvimos del escaneo vienen a ser: Un programa servidor web Apache levantado en el puerto 80. Además, gracias al script http-tittle obtuvimos el valor de la etiqueta HTML title de la página web de la aplicación LimeSurvey que es utilizado para crear y administrar encuesta en línea, es decir, se pueden diseñar cuestionarios personalizados, distribuirlos a traves de varios canales, recopilar sus respuestas y analizarlo. Un sitio web creado y gestionado por el CMS WordPress. Además, las conexiones para realizar al sitio web utilizan el protocolo de cifrado TLS/SSL en el puerto 443 con el fin de cifrar la comunicación entre el servidor web y el cliente (navegadores web). Un supuesto programa servidor FTP en el puerto 21, pero no logro detectar el programa servidor FTP lo que es muy raro. Además, al parecer el supuesto servidor FTP permite las conexiones anónimas. Ahora intentaremos conectarnos al servidor FTP mediante una conexión anónima.
Podemos observar que cuando intentamos conectarnos al servidor FTP y
enumerar los recursos compartidos obtenemos un mensaje de error como si el servidor FTP estuviese inactivo o inoperativo en ese momento. Ahora accederemos a la interfaz web de la aplicación LimeSurvey a traves de nuestro navegador web y accederemos a su panel de administración, pero antes tendremos que autenticarnos en un login. Podemos observar que logramos acceder al panel de administración a traves de las credenciales por defecto admin:password. Además, podemos visualizar que la versión de la aplicación es 3.15.9. Ahora buscaremos en el motor de búsqueda de Google y en la herramienta de línea de comando searchsploit que viene a ser una copia de Exploit-DB, vulnerabilidades relacionadas a la versión de la aplicación. Podemos observar que la versión 3.15.9 de la aplicación si presenta la vulnerabilidad RCE. Ahora descargaremos el exploit escrito en Python de la searchsploit para automatizar la explotación.
Podemos observar que logramos acceder al sistema destino mediante la
vulnerabilidad RCE. Ahora convertiremos nuestra reverse Shell en una Shell más estable e interactiva con el fin evitar de que se cierre con errores simples. Luego, buscaremos vectores de escalada privilegio de manera manual en el sistema de archivos del sistema destino. Ahora realizaremos una enumeración automatizada con Linpeas sobre el sistema de archivos del sistema destino con el fin de buscar vectores de escalada privilegio. Podemos observar que la herramienta determino que solo hay una cuenta de un usuario local llamado veronica a parte de root, y logro encontrar una contraseña, pero no nos especifica la ruta del archivo donde lo encontró solo nos dice que lo encontró en un archivo de configuración PHP. Por lo tanto, buscaremos todos los archivos llamados config.php en el sistema de archivos del sistema destino. Podemos observar que logramos encontrar cuatro archivos de configuración PHP en el sistema destino, y si utilizamos el comando cat y grep sobre ellos, logramos encontrar las credenciales de un usuario, pero si suponemos que se reutilizo estas credenciales en las credenciales de inicio de sesión de la cuenta del usuario local veronica, nuestra suposiciones será incorrecta. Otro de los resultados obtenidos de la herramienta Linpeas vienen a ser las credenciales para acceder a la base de datos MySQL utilizada por el CMS Wordpress. Luego, si nos conectamos al servidor MySQL, lograremos enumerar los registros de la tabla wp_users de la base de datos utilizada por el CMS Wordpress para la autenticación al momento de acceder a su portal de administración. Además, nos percatamos que las credenciales del usuario Anny eran para acceder al portal de gestión del CMS. Otro de los resultados de la herramienta viene a ser los estados de las conexiones de red en el sistema destino. Donde podemos observar que el protocolo IPP esta utilizando puerto 631. Además, hay un servicio desconocido utilizando el puerto 18001 y que solo admite conexiones locales, es decir, del mismo sistema. Además, si realizamos una enumeración manual en el directorio home del usuario local veronica, nos topamos con un directorio llamado ghidra_9.0, que contiene el archivo ejecutable de la herramienta Ghidra Además, si enumeramos los procesos que se están ejecutando en el sistema destino, nos topamos con un proceso que nos indica que el usuario local verónica está ejecutando la herramienta en su modo Debug. Ahora buscaremos en el motor de búsqueda de Google, si la herramienta Ghidra y el puerto 18001 presentan alguna relación. Si escogemos el segundo resultado de la búsqueda, nos toparemos con un articulo que nos habla sobre que la versión de la ghidra 9.0 presentaba la vulnerabilidad RCE cuando lo ejecutamos en modo Debug ya que por defecto la herramienta se ejecutaba utilizando el numero de puerto 18001 y admitía conexiones en todos sus interfaces de red. Por lo que cualquier máquina que ese en su misma subred podía attachar el debugger de Java al servidor donde se está ejecutando Ghidra y ejecutar los comandos mencionados en el articulo para generar una reverse Shell. Ahora en nuestro caso, la herramienta Ghidra ha sido ejecutado en su modo Debug pero se ha arreglado su configuración para que no admite conexiones en todo sus interfaces de red sino solamente conexiones locales aun así debido a que hemos obtenido acceso al sistema destino podemos utilizar los comandos mencionados de manera resumida en este articulo https://exploit-notes.hdks.org/exploit/linux/privilege-escalation/ ghidra-debug-mode-rce/ para generar una reverse Shell con los privilegios del usuario quien ha ejecutado la herramienta en su modo Debug, en este caso, veronica.
Ahora aprovecharemos esto para utilizar el parámetro -c del comando
Python con el fin de ejecutar una serie de comandos en el sistema operativo del sistema destino. Primero, importaremos la biblioteca os. Luego, cambiaremos el UID del usuario a 0, y ejecutaremos una nueva instancia de Shell con los privilegios de root.
De esta manera logramos realizar una escalada privilegio vertical.