原文地址:https://ungeek.eu/minecraft-18-file-access/
2014年9月2日,MOJANG发布了1.8版本
并且介绍了在渲染世界时使用的内置资源包,包括自定义图像和声音。
Minecraft协议中引入了两个数据包:资源包发送和资源包状态。
相关代码如下所示:
public void handle(S48PacketResourcePackSend packet) {
String url = packet.getUrl();
String hash = packet.getHash();
if (url.startsWith("level://")) {
String urlWithoutPrefix = url.substring("level://".length());
File savesDirectory = new File(gameController.mcDataDir, "saves");
File resourceFile = new File(savesDirectory, urlWithoutPrefix);
if (resourceFile.isFile()) {
netManager.sendPacket(new C19PacketResourcePackStatus(hash, Action.ACCEPTED));
// snip, loading the resource.
} else {
this.netManager.sendPacket(new C19PacketResourcePackStatus(hash, Action.FAILED_DOWNLOAD));
}
} else {
// snip, handling URLs.
}
}
很明显,服务器只需使用以...开头的URL 发送资源包发送数据包level://。游戏将尝试从saves目录加载该文件。
并且可以通过遍历目录(../)来查看您整个计算机上的数据
服务器可以检查计算机上是否存在文件并且运行,枚举用户名......并且可能更糟。
从玩家的角度来看,这种攻击是不可见的,并且可以在服务器上游玩时随时触发。通过批量发送数据包可以自动化和加速此漏洞利用,服务器知道响应将遵循相同的顺序。更厉害的是,客户端可以地发回hash- 这可以由服务器方便地发送,并且可以只是被检查的路径本身。
如果LOG中出现这些文字,就代表你已经被服务器利用这个BUG了
launcher_log.txt包含
[0913/140810:INFO:GameCallbacks.cpp(199)] game/bns (Client thread) warn Unable to parse metadata section of resourcepack: servers.dat java.util.zip.ZipException: error in opening zip file。
1.9已经修复了这个问题,不过值得一提的是这个漏洞本身在某些服务器上用于检查玩家电脑内是否有作弊Mod
但是这本身是一个极大的错误,如果你不喜欢被泄露数据,我们推荐您去使用这个修复Mod:github.com/Sk1er/Resource-Exploit-Fix/releases/tag/1.0
2014年9月2日,MOJANG发布了1.8版本
并且介绍了在渲染世界时使用的内置资源包,包括自定义图像和声音。
Minecraft协议中引入了两个数据包:资源包发送和资源包状态。
相关代码如下所示:
public void handle(S48PacketResourcePackSend packet) {
String url = packet.getUrl();
String hash = packet.getHash();
if (url.startsWith("level://")) {
String urlWithoutPrefix = url.substring("level://".length());
File savesDirectory = new File(gameController.mcDataDir, "saves");
File resourceFile = new File(savesDirectory, urlWithoutPrefix);
if (resourceFile.isFile()) {
netManager.sendPacket(new C19PacketResourcePackStatus(hash, Action.ACCEPTED));
// snip, loading the resource.
} else {
this.netManager.sendPacket(new C19PacketResourcePackStatus(hash, Action.FAILED_DOWNLOAD));
}
} else {
// snip, handling URLs.
}
}
很明显,服务器只需使用以...开头的URL 发送资源包发送数据包level://。游戏将尝试从saves目录加载该文件。
并且可以通过遍历目录(../)来查看您整个计算机上的数据
服务器可以检查计算机上是否存在文件并且运行,枚举用户名......并且可能更糟。
从玩家的角度来看,这种攻击是不可见的,并且可以在服务器上游玩时随时触发。通过批量发送数据包可以自动化和加速此漏洞利用,服务器知道响应将遵循相同的顺序。更厉害的是,客户端可以地发回hash- 这可以由服务器方便地发送,并且可以只是被检查的路径本身。
如果LOG中出现这些文字,就代表你已经被服务器利用这个BUG了
launcher_log.txt包含
[0913/140810:INFO:GameCallbacks.cpp(199)] game/bns (Client thread) warn Unable to parse metadata section of resourcepack: servers.dat java.util.zip.ZipException: error in opening zip file。
1.9已经修复了这个问题,不过值得一提的是这个漏洞本身在某些服务器上用于检查玩家电脑内是否有作弊Mod
但是这本身是一个极大的错误,如果你不喜欢被泄露数据,我们推荐您去使用这个修复Mod:github.com/Sk1er/Resource-Exploit-Fix/releases/tag/1.0