feat: support bsh packer

This commit is contained in:
ReaJason
2025-01-30 18:09:44 +08:00
parent 6113ea717f
commit 92e38ae004
17 changed files with 85 additions and 36 deletions
@@ -1,9 +1,6 @@
package com.reajason.javaweb.memshell.packer;
import com.reajason.javaweb.memshell.config.GenerateResult;
import lombok.Getter;
import java.util.Map;
/**
* @author ReaJason
@@ -4,6 +4,7 @@ import com.reajason.javaweb.memshell.packer.aviator.AviatorPacker;
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.el.ELPacker;
import com.reajason.javaweb.memshell.packer.freemarker.FreemarkerPacker;
@@ -72,15 +73,12 @@ public enum Packers {
* EL
*/
EL(new ELPacker()),
OGNL(new OGNLPacker()),
MVEL(new MVELPacker()),
Aviator(new AviatorPacker()),
JXPath(new JXPathPacker()),
JEXL(new JEXLPacker()),
Groovy(new GroovyPacker()),
Aviator(new AviatorPacker()),
Rhino(new RhinoPacker()),
JinJava(new JinJavaPacker()),
BSH(new BeanShellPacker()),
SpEL(new SpELPacker()),
SpELScriptEngine(new SpELScriptEnginePacker(), SpELPacker.class),
@@ -88,8 +86,10 @@ public enum Packers {
SpELSpringUtils(new SpELSpringUtilsPacker(), SpELPacker.class),
Freemarker(new FreemarkerPacker()),
Velocity(new VelocityPacker()),
Groovy(new GroovyPacker()),
Rhino(new RhinoPacker()),
JinJava(new JinJavaPacker()),
AgentJar(new AgentJarPacker()),
@@ -0,0 +1,19 @@
package com.reajason.javaweb.memshell.packer.bsh;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
/**
* @author ReaJason
* @since 2025/1/30
*/
public class BeanShellPacker implements Packer {
String template = "new javax.script.ScriptEngineManager().getEngineByName(\"js\").eval(\"{{script}}\")";
@Override
public String pack(GenerateResult generateResult) {
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
return template.replace("{{script}}", script.replaceAll("\\\"", "'"));
}
}
@@ -1,9 +1,9 @@
package com.reajason.javaweb.memshell.packer.deserialize;
import com.reajason.javaweb.memshell.config.GenerateResult;
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;
@@ -3,12 +3,6 @@ package com.reajason.javaweb.memshell.packer.freemarker;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Objects;
/**
* @author ReaJason
@@ -3,11 +3,6 @@ package com.reajason.javaweb.memshell.packer.ognl;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Objects;
/**
* @author ReaJason
@@ -3,12 +3,6 @@ package com.reajason.javaweb.memshell.packer.velocity;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Objects;
/**
* @author ReaJason