Page cover

🟢Move

En esta ocasión vamos a hacer el writeup de la máquina Move de Dockerlabs, una máquina Linux de dificultad Easy.

Despliegue

sudo bash auto_deploy.sh move.tar
[sudo] contraseña para kali: 

	                   ##        .         
	             ## ## ##       ==         
	          ## ## ## ##      ===         
	      /""""""""""""""""\___/ ===       
	 ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~ /  ===- ~~~
	      \______ o          __/           
	        \    \        __/            
	         \____\______/               
                                          
  ___  ____ ____ _  _ ____ ____ _    ____ ___  ____ 
  |  \ |  | |    |_/  |___ |__/ |    |__| |__] [__  
  |__/ |__| |___ | \_ |___ |  \ |___ |  | |__] ___] 
                                         

Estamos desplegando la máquina vulnerable, espere un momento.

Máquina desplegada, su dirección IP es --> 172.17.0.2

Primer acceso

Accedemos a la IP 172.17.0.2 a través del navegador y entramos a la página de configuración de un servidor Apache:

Escaneo de puertos

Solo encontramos 3 puertos abiertos, uno de ellos el puerto 3000 que puede tener algo interesante.

Al entrar llegamos a un panel de login de Grafana y abajo nos encontramos la versión, lo que nos permite buscar algún exploit público:

Fuzzing

Fuzzeando con Dirsearch por el puerto 80 nos encontramos un directorio interesante:

Entramos al directorio /maintenance.html y nos encontramos algo muy curioso, nos dice que el acceso está en /tmp/pass.txt :

Al intentar acceder no podemos directamente, por lo que tendremos que buscar otra vía.

Búsqueda de exploits

Utilizando searchsploit nos encontramos con un exploit para explotar un directory traversal y lectura de archivos arbitrarios:

Nos lo copiamos a nuestra ruta actual y probamos el exploit:

Exploit

Ejecutamos el exploit de la siguiente manera, lo que nos permite acceder a cualquier archivo del sistema, como /etc/passwd:

Observamos que hay un usuario freddy que es el único usuario junto con root que tienen shell, por lo que nos interesa comprometer a este usuario.

Con este script también vamos a intentar leer el archivo /tmp/pass.txt que nos encontramos en la fase de fuzzing:

Buum! Tenemos una contraseña!

Acceso por SSH

Vamos a intentar acceder por ssh con el usuario freddy y esta contraseña:

Estamos dentro!

Escalada de privilegios

Vamos a elevar nuestros privilegios en el sistema. El primer paso es hacer un sudo -l para ver los permisos de ejecución:

Vemos que el usuario freddy puede ejecutar con todos los permisos el script maintenance.py. Al leer este archivo con cat vemos que es un script que solamente hace un print:

Entonces para explotar esto vamos a editar el archivo maintenance.py añadiéndole unas líneas al final, y dejando un mensajito para decir que hemos pwneado la máquina:

No nos deja editarlo directamente con nano por lo que vamos a editarlo en nuestra máquina de atacante y enviarlo con un servidor local en python y wget:

  1. Abrimos un servidor local con python en nuestra máquina de atacante

  2. Descargamos maintenance.py con wget dentro del directorio /opt

  3. Eliminamos el script original y renombramos el script enviado

  4. Ejecutamos el script como sudo utilizando la ruta completa

Y ya somos root!

Última actualización

¿Te fue útil?