Completely fix Log4J RCE (1.7-1.16.5) (not yet tested)

TODO: checker with SHA1
This commit is contained in:
Duy Tran Khanh committed 2021-12-13 20:50:42 +07:00
1 parent 150cf861b1
commit 7d527942a2
5 files changed
+51 -32

No files matched your search

@@ -12,51 +12,63 @@ public class JMinecraftVersionList {
public Map<String, String> latest;
public Version[] versions;
public static class Version {
// Since 1.13, so it's one of ways to check
public Arguments arguments;
public static class FileProperties {
public String id, sha1, url;
public long size;
}
public static class Version extends FileProperties {
// Since 1.13, so it's one of ways to check
public Arguments arguments;
public AssetIndex assetIndex;
public String assets;
public Map<String, MinecraftClientInfo> downloads;
public String id;
public String inheritsFrom;
public JavaVersionInfo javaVersion;
public DependentLibrary[] libraries;
public String mainClass;
public String minecraftArguments;
public int minimumLauncherVersion;
public DependentLibrary optifineLib;
public Map<String, MinecraftClientInfo> downloads;
public String inheritsFrom;
public JavaVersionInfo javaVersion;
public DependentLibrary[] libraries;
public LoggingConfig logging;
public String mainClass;
public String minecraftArguments;
public int minimumLauncherVersion;
public DependentLibrary optifineLib;
public String releaseTime;
public String time;
public String type;
public String url;
}
public static class JavaVersionInfo {
public String component;
public int majorVersion;
}
// Since 1.13
public static class Arguments {
public Object[] game;
public Object[] jvm;
public static class LoggingConfig {
public LoggingClientConfig client;
public static class ArgValue {
public ArgRules[] rules;
public String value;
public static class LoggingClientConfig {
public String argument;
public FileProperties file;
public String type;
}
}
// Since 1.13
public static class Arguments {
public Object[] game;
public Object[] jvm;
public static class ArgValue {
public ArgRules[] rules;
public String value;
// TLauncher styled argument...
public String[] values;
public static class ArgRules {
public String action;
public String features;
}
}
}
public static class AssetIndex {
public String id, sha1, url;
public long size, totalSize;
public static class ArgRules {
public String action;
public String features;
}
}
}
public static class AssetIndex extends FileProperties {
public long totalSize;
}
}
@@ -116,6 +116,13 @@ public class PLaunchApp {
e.printStackTrace();
}
if (mVersion.logging != null) {
UIKit.updateProgressSafe(0, "Downloading " + mVersion.logging.client.file.id);
String configPath = Tools.DIR_GAME_NEW + "/" + mVersion.logging.client.file.id;
Tools.downloadFile(mVersion.logging.client.file.url, configPath);
System.setProperty("log4j.configurationFile", configPath);
}
maxProgress = mVersion.libraries.length + 1 + (assets == null ? 0 : assets.objects.size());
File outLib;
@@ -101,7 +101,7 @@ public final class Tools
final String launchClassPath = generateLaunchClassPath(profile.selectedVersion);
List<String> javaArgList = new ArrayList<String>();
//javaArgList.add(versionInfo.logging.client.argument.replace("${path}", DIR_GAME_NEW.getAbsolutePath() + "/" + mVersion.logging.client.file.id));
javaArgList.add("-cp");
javaArgList.add(launchClassPath);