Introduction

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.

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

Vemos que el anonymous login está habilitado para FTP.
Ahora vamos a escanear directorios en la web.

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.

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

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.

Ahora vamos a ver qué es important.jpg.

Vamos a ver si esconde algo.

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

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

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

Pues no está vacío pero casi.
Vamos a ver si podemos subir archivos. Vamos a probar a subir un archivo test.txt.
test

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

Explotación
Editamos una reverse shell y nos ponemos en escucha.

La subimos.

Vamos a la web para ejecutarla.

Así obtenemos una reverse shell. Vamos a estabilizarla.

Si miramos qué hay en nuestro directorio:

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/.

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

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

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

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

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

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

[!IMPORTANT] Si prefieres una shell en condicioens escribe
bashen la sesión SSH.
Escalada de Privilegios
Ahora toca escalar privilegios. Lo primero que vamos a hacer es mirar qué hay en scripts/.

Vamos a ver qué contienen los archivos.

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

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

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.

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

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.

Nos ponemos en escucha.

Si esperamos obtenemos la shell.

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.
