XUT_ / MACHINES / THM

0019

Startup

THMMACHINENONEEASY

Introduction

startup

Somos Spice Hut, una nueva startup que acaba de hacerse grande. Ofrecemos una variedad de especias y sandwiches, pero eso no es por lo que estás aquí. Para ser honestos, no estamos seguros si nuestros desarrolladores saben lo que están haciendo y nuestra preocupación por la seguridad crece. Te pedimos que realices un pentest y trastes de conseguir root. ¡Buena suerte!

Getting the Flags

Reconocimiento Inicial

Comenzamos escaneando en busca de puertos abiertos.

startup

Una vez hecho esto vamos a escanear dichos puertos más en profundidad.

startup

Vemos que el anonymous login está habilitado para FTP.

Ahora vamos a escanear directorios en la web.

startup startup

Después de este escaneo concluimos que los archivos subidos en FTP muy seguramente sean accesibles mediante la web. Vamos a mirar a ver cómo se ve la web.

startup

No hay nada ni en el código fuente ni nada, vamos a ver si el directorio /files/ es accesible por web.

startup


Profundización

Con todo lo que tenemos es hora de profundizar en los sistemas. Ya que estamos en la web vamos a ver de qué se tratan los archivos que hay en el directorio de archivos.

Primero miramos qué es notice.txt.

startup

Ahora vamos a ver qué es important.jpg.

startup

Vamos a ver si esconde algo.

startup

Parece que no. Vamos a mirar en el directorio /ftp/.

startup

Está vacío de momento. Vamos ahora a iniciar sesión en el ftp.

startup

Vamos a ver qué es ese archivo, aunque parece que está vacío.

startup

Pues no está vacío pero casi.

Vamos a ver si podemos subir archivos. Vamos a probar a subir un archivo test.txt.

text
test

startup

Con la sesión iniciada intentamos subirlo en ftp/.

startup


Explotación

Editamos una reverse shell y nos ponemos en escucha.

startup

La subimos.

startup

Vamos a la web para ejecutarla.

startup

Así obtenemos una reverse shell. Vamos a estabilizarla.

startup

Si miramos qué hay en nuestro directorio:

startup

Aquí está la receta. Vamos a intentar conseguir la flag de usuario. Si nos fijamos, hay dos archivos que pertenecen a www-data. Vamos a mirar en incidents/.

startup

Parece que hay un archivo pcapng, vamos a mandárnoslo a nuestra máquina.

startup

Vamos a abrirlo con Wireshark.

Si filtramos por tráfico http podemos ver que alguien más ha subido una shell en el pasado.

startup

Vamos a ver el flujo TCP, para ello hacemos click en cualquier paquete TCP y le damos a seguir tcp.

startup

Se nos abrirá la página de flujo TCP, ahí, vamos subiendo por el flujo con las flechitas de abajo a la derecha.

startup

En la secuencia 7 encontramos una contraseña. Vamos a utilizarla para iniciar sesión como lennie por SSH.

startup

Hemos conseguido una sesión SSH, vamos a leer la flag del usuario.

startup

[!IMPORTANT] Si prefieres una shell en condicioens escribe bash en la sesión SSH.


Escalada de Privilegios

Ahora toca escalar privilegios. Lo primero que vamos a hacer es mirar qué hay en scripts/.

startup

Vamos a ver qué contienen los archivos.

startup

Nada muy interesante por Documents. Vamos a ver en scripts.

startup

Parece que hay otro script: /etc/print.sh.

startup

Parece que además, startup_list.txt está siendo actualizado cada minuto, por lo que es probable que un script de root esté ejecutando planner.sh cada minuto, aunque no aparezca en el crontab.

startup

Acabamos de encontrar nuestro vector de escalada. Vamos a ejecutar planner.sh para asegurarnos de que se ejecuta efectivamente.

startup

Gracias al Done! sabemos que /etc/print.sh se ha ejecutado, por lo que vamos a introducir una reverse shell en print.sh y a esperar una conexión en nuestra consola.

startup

Nos ponemos en escucha.

startup

Si esperamos obtenemos la shell.

startup

Ahora podemos buscar la flag de root.


Conclusión

Una máquina divertida que te hace adentrarte en el análisis de tráfico de red. Me ha gustado bastante. Quizá la parte más complicada fue darse cuenta de que el script que corría para actualizar la lista estaba automatizado por root, aunque no apareciese en el crontab.