HTB — Inject Writeup

Octavian Mihail Romanescu
5 min readJul 7, 2023

--

Descubrimos un LFI que nos permitirá leer carpetas y ficheros internos. Gracias al LFI, identificaremos el servicio interno y encontraremos una vulnerabilidad que nos permitirá realizar RCE utilizando Java para obtener una reverse shell. Localizaremos las credenciales de otro usuario en un archivo XML y, por último, utilizando pspy, podremos ver una tarea que ejecuta archivos YML, lo que nos permitirá elevarnos a una bash shell con permisos SUID.

Enumeración

nmap -sVC 10.10.11.204
nmap result

Hemos encontrado 2 puertos abiertos, el 22 para SSH y el 8080 para una aplicación web.

Web application

De todas las opciones, solo podemos elegir las opciones de Blogs y Upload.

Upload feature

La parte de Subir (Upload) es bastante interesante, así que intentamos subir una imagen para ver si nos permite verla después de que el proceso esté completo.

Uploaded image

Somos capaces de ver la imagen subida (la imagen utilizada es de otra maquina).

Utiliza el parámetro ‘img’ para que podamos ver la imagen. Esto puede ser interesante por dos razones: puede ser vulnerable a LFI o podemos subir un archivo y establecer una reverse shell.

Acceso inicial

Al probar la carga típica de LFI, podemos ver el archivo passwd de la máquina. También podemos observar que hay dos usuarios que parecen interesantes, frank y phil.

/etc/passwd via BurpSuite

Sabiendo eso, comenzamos a investigar la máquina. Podemos ver que el archivo user.txt se encuentra en la carpeta de inicio de phil.

Luego, al enumerar, encontramos la carpeta /var/www/WebApp.

Leemos el archivo pom.xml, ya que generalmente contiene información interesante. Podemos ver que se está ejecutando el framework Spring. Spring es un framework de código abierto que facilita el desarrollo de aplicaciones Java..

Después de buscar un poco en línea, encontramos un exploit para esta versión.

Para confirmar que esta vulnerabilidad funciona para nosotros, intentaremos ejecutar un ping hacia nuestra máquina utilizando el siguiente payload:

Configuramos nuestro tcpdump para escuchar conexiones:

tcpdump -i tun0 icmp

¡Y tenemos un ping desde la máquina!

Ping from the victim machine

El siguiente paso consiste en crear una reverse shell y subirla a la máquina utilizando este exploit. Primero, creamos el archivo de la reverse shell.

reverse shell

Luego, lanzamos un servidor HTTP para que la máquina remota pueda obtener el archivo desde nuestra máquina.

http server on our machine

A continuación, ejecutamos el siguiente código para llevar nuestra reverse shell a la máquina remota.

Después de eso, verificamos si se cargó correctamente. Podemos ver el archivo en la carpeta /tmp, junto con otras reverse shells de otras personas.

/tmp folder files

Ahora configuramos el listener.

nc -lvnp 4444

El siguiente paso consiste en otorgar permisos de ejecución a la reverse shell.

Y ahora lo ejecutamos para recibir la shell.

reverse shell

Privesc to user

En el directorio HOME de Frank, encontramos una carpeta oculta inusual. Dentro de esta carpeta, hay un archivo XML.

hidden folder

En ese archivo, encontramos la contraseña de Phil.

DocPhillovestoInject123 (SSH is disabled for PHIL user)

Ahora debemos cambiar de usuario a Phil.

Una vez que estamos conectados como Phil, podemos leer el archivo user.txt.

user.txt

Privesc to root

En nuestra búsqueda para elevar privilegios, ejecutamos “ps -aux” para identificar procesos intrigantes. Encontramos “ansible-parallel” ejecutándose con permisos de root..

Podemos ver que ejecuta todos los archivos YML de la carpeta /opt/automation/tasks.

Discovered YML file

Posteriormente, generamos un archivo YML análogo en nuestra máquina atacante para adquirir permisos SUID.

Crafted YML file

A continuación, subimos el archivo YML malicioso a la máquina víctima y esperamos.

Después de un corto tiempo, verificamos si los permisos SUID están establecidos.

Como tenemos derechos SUID, ejecutamos bash -p para cambiar a root y leer el archivo root.txt.

root.txt

--

--

No responses yet