Crear Minecraft Vulnerable CTF (Docker)

En este CTF lo que vamos a realizar es crear un entorno de Ubuntu en un Docker en el que instalaremos un Servidor de Minecraft de la version 1.12.2 antigua para que sea vulnerable, pero no instalaremos el servidor Vanilla si no, instalaremos el de los Plugins llamado Spigot, crearemos unos plugins vulnerables en JAVA y los instalaremos en la carpeta plugins de donde esta dicho servidor, todo esto en Docker.

Instalación/Configuración de entorno vulnerable

Primero tendremos que importar una imagen vacia de Ubuntu en el docker de la siguiente forma.

docker pull ubuntu:latest

Una vez echo eso, tendremos que identificar que ID tiene.

docker images

Info:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    bf16bdcff9c9   2 weeks ago   78.1MB

Vemos que tiene el ID bf16bdcff9c9 por lo que obtendremos los 3 primeros digitos haciendo lo siguiente:

docker run -it bf1

Con esto obtendremos una shell como root dentro del docker en la imagen de ubuntu, ahora tendremos que actualizar el sistema.

apt update
apt install nano
apt install sudo
apt install wget
apt install -y maven
apt install openjdk-8-jre-headless -y
apt install openjdk-8-jdk git -y
apt install netcat-traditional -y

Una vez instalado todo lo necesario, tendremos que descargarnos los archivos necesarios, antes vamos a crear un espacio de trabajo (workspace) en la raiz del sistema linux (/).

Echo esto vamos a descargarnos lo necesario.

El primero archivo es para el servidor Vanilla por si lo quisieramos sin plugins y el segundo es para el servidor con plugins.

Vamos a iniciar primero el servidor Vanilla para que cree toda la estructura de archivos que es necesaria para que funcione el servidor, pero antes de hacerlo para que no de error, tendremos que aceptar el eula que viene por defecto en minecraft de esta forma.

Echo esto iniciaremos el servidor de esta forma.

Info:

Con esto podremos ver que esta funcionando de forma correcta, ahora que se ha generado la estructura de archivos, tendremos que parar el servidor con Ctrl+C y modificar el archivo llamado server.properties para establecer el que se pueda conectar desde cuentas No premium.

Lo guardamos y seguiremos con la configuracion.

Ahora tendremos que instalar el servidor en el cual se van a poder implementar los plugins, tendremos que hacerlo de esta forma.

Esto puede tardar un rato largo ya que se esta instalando todo lo necesario para que funcione, una vez que se haya instalado todo, veremos que se han añadido cosas nuevas, entre ellas los siguientes archivos.

El que nos va a importar es el archivo llamado spigot-1.12.2.jar que es el que inicia el servidor de plugins, ahora vamos a crear 2 plugins vulnerables para que se pueda hacer un RCE desde minecraft.

Antes tendremos que crear la carpeta plugins.

En la raiz (/) crearemos otra carpeta que sera el espacio de trabajo donde crearemos los plugins.

Echo esto vamos a crear un plugin en el que cada vez que se conecte un jugador al servidor le asigne el OP de forma inmediata para que pueda ejecutar comandos en Miencraft.

Vamos a crear la clase de JAVA la cual va a realizar la funcion que queremos, se va a llamar AutoOpPlugin.java.

Ahora vamos a crear el archivo .yml necesario.

Por ultimo super importante crear el archivo para las dependencias y configuracion de lo demas el archivo llamado pom.xml.

Echo esto lo tendremos que compilar de la siguiente forma:

Info:

Si vemos BUILD SUCCESS es que todo ha salido bien, por lo que cuando haya terminado de compilarse veremos el archivo .jar compilado en la carpeta target/.

Info:

Tendremos que realizar lo siguiente.

Una vez que lo hayamos movido a plugins ya estaria cargado, pero ahora vamos a crear el ultimo plugin el cual es el que puede hacer el RCE, por lo que eliminaremos el espacio de trabajo anterior para crearlo de nuevo.

Una vez echo esto crearemos el pom.xml super importante.

Ahora crearemos la clase vulnerable de JAVA que va a permitir la ejecuccion de comandos en el sistema desde minecraft (RCE).

Y por ultimo crearemos el .yml necesario para ello.

Ahora echo esto tendremos que compilarlo de esta forma.

Info:

Si vemos BUILD SUCCESS es que todo ha salido bien, por lo que cuando haya terminado de compilarse veremos el archivo .jar compilado en la carpeta target/.

Info:

Tendremos que realizar lo siguiente.

Teniendo ya los 2 archivos en la carpeta plugins iniciaremos el servidor para que este funcionando.

Info:

Con esto veremos que esta funcionando el servidor y que ya esta encendido, tambien para comprobar que los plugins estan iniciandose de forma correcta lo veremos en esta parte.

Vemos que se esta iniciando bien, antes vamos a comprobar que el puerto de JAVA de Minecraft se esta exponiendo fuera en el puerto por defecto.

Info:

Vemos que se esta exponiendo bien y que se esta identificando de forma correcta, por lo que vamos a pasar a la parte de instalarnos Minecraft para poder conectarnos al servidor.

Instalación de Minecraft (Gratis)

Vamos a ir al siguiente enlace en la pagina del TLauncher de Minecraft, es para jugar Minecraft gratis.

URL = Download Minecraft TLauncher

Le daremos a TLauncher for Linux para que nos lo descargue, esto nos descargara un .zip el cual vamos a extraer de esta forma.

Una vez extraido veremos lo siguiente en la carpeta llamada TLauncher.v16:

Info:

Lo importante es el archivo TLauncher.jar que es el que inicia Minecraft por lo que tendremos que ejecutarlo de esta forma.

Esto instalara Minecraft y abrira el launcher para iniciarlo, dentro del mismo tendremos que elegir el nombre de usuario que puede ser cualquiera y muy importante la version, tendremos que elegir la llamada release 1.12.2 y darle a Install.

Eso instalara todo lo necesario para jugarla, una vez que se haya instalado todo nos pondra Enter the game le daremos y despues de un rato estaremos dentro del menu de Minecraft, nos iremos a la opcion llamada Multiplayer y dentro del mismo configuraremos el servidor de Miencraft desde donde esta corriendo de nuestro docker.

Le daremos al boton llamado Add Server y dentro del mismo veremos el Server Name y el Server Address el que nos interesa es configurar el Server Adderess por lo que tendremos que poner la IP del docker junto con el puerto que es el 25565 quedando de esta forma:

Le daremos a Done y si refrescamos tendremos que ver el server activo asi:

Ahora seleccionaremos el servidor y le daremos al boton llamado Join Server esto nos metera dentro del mundo de Minecraft del servidor.

Explotacion de plugins en Minecraft

Una vez dentro del mundo vamos a probar a listar los plugins de esta forma desde Minecraft.

Info:

Vemos que los esta detectando de forma correcta, ahora si probamos a ejecutar el siguiente comando que hemos configurado para que se pueda ejecutar comandos del sistema de esta forma en Minecraft.

Info:

Vemos que se esta ejecutando de forma correcta, por lo que vamos a probar a generarnos una reverse shell de esta forma.

Antes de ejecutarlo tendremos que ponernos a la escucha desde nuestra maquina host.

Estando a la escucha si ejecutamos el comando anterior desde Minecraft y volvemos a donde tenemos la escucha veremos lo siguiente:

Vemos que hemos obtenido de forma exitosa una shell desde la maquina victima mediante un plugin vulnerable desde Minecraft.

Last updated