Skip to content

Commit df47f2e

Browse files
WansReaJason
authored andcommitted
feat: support BigInteger packer
1 parent 9b10f96 commit df47f2e

File tree

15 files changed

+145
-8
lines changed

15 files changed

+145
-8
lines changed

integration-test/src/test/java/com/reajason/javaweb/integration/ShellAssertion.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ public static void injectIsOk(String url, String shellType, ShellTool shellTool,
355355
case Hessian2Deserialize -> VulTool.postIsOk(url + "/hessian2", content);
356356
case XMLDecoderScriptEngine, XMLDecoderDefineClass -> VulTool.postIsOk(url + "/xmlDecoder", content);
357357
case Base64 -> VulTool.postIsOk(url + "/b64", content);
358+
case BigInteger -> VulTool.postIsOk(url + "/biginteger", content);
358359
case XxlJob -> VulTool.xxlJobExecutor(url + "/run", content);
359360
case H2, H2JS, H2Javac -> VulTool.postIsOk(url + "/jdbc", content);
360361
default -> throw new IllegalStateException("Unexpected value: " + packer);

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/tomcat/Tomcat10ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static Stream<Arguments> casesProvider() {
6060
ShellType.AGENT_FILTER_CHAIN,
6161
ShellType.CATALINA_AGENT_CONTEXT_VALVE
6262
);
63-
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher);
63+
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher, Packers.BigInteger);
6464
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
6565
}
6666

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/tomcat/Tomcat11ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ static Stream<Arguments> casesProvider() {
6161
ShellType.AGENT_FILTER_CHAIN,
6262
ShellType.CATALINA_AGENT_CONTEXT_VALVE
6363
);
64-
List<Packers> testPackers = List.of(Packers.JSP, Packers.DefineClassJSP, Packers.JSPX, Packers.AgentJarWithJREAttacher);
64+
List<Packers> testPackers = List.of(Packers.JSP, Packers.DefineClassJSP, Packers.JSPX, Packers.AgentJarWithJREAttacher, Packers.BigInteger);
6565
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
6666
}
6767

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/tomcat/Tomcat11JRE21ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ static Stream<Arguments> casesProvider() {
6262
ShellType.AGENT_FILTER_CHAIN,
6363
ShellType.CATALINA_AGENT_CONTEXT_VALVE
6464
);
65-
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.AgentJarWithJREAttacher);
65+
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.AgentJarWithJREAttacher, Packers.BigInteger);
6666
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers, null, List.of(ShellTool.AntSword));
6767
}
6868

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/tomcat/Tomcat5ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ static Stream<Arguments> casesProvider() {
6161
ShellType.AGENT_FILTER_CHAIN,
6262
ShellType.CATALINA_AGENT_CONTEXT_VALVE
6363
);
64-
List<Packers> testPackers = List.of(Packers.JSP, Packers.DefineClassJSP, Packers.JavaDeserialize, Packers.AgentJarWithJDKAttacher);
64+
List<Packers> testPackers = List.of(Packers.JSP, Packers.DefineClassJSP, Packers.JavaDeserialize, Packers.AgentJarWithJDKAttacher, Packers.BigInteger);
6565
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
6666
}
6767

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/tomcat/Tomcat6ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ static Stream<Arguments> casesProvider() {
5959
ShellType.AGENT_FILTER_CHAIN,
6060
ShellType.CATALINA_AGENT_CONTEXT_VALVE
6161
);
62-
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJDKAttacher);
62+
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJDKAttacher, Packers.BigInteger);
6363
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
6464
}
6565

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/tomcat/Tomcat7ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static Stream<Arguments> casesProvider() {
6060
ShellType.AGENT_FILTER_CHAIN,
6161
ShellType.CATALINA_AGENT_CONTEXT_VALVE
6262
);
63-
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher);
63+
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher, Packers.BigInteger);
6464
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
6565
}
6666

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/tomcat/Tomcat8ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ static Stream<Arguments> casesProvider() {
6262
ShellType.WEBSOCKET,
6363
ShellType.AGENT_FILTER_CHAIN,
6464
ShellType.CATALINA_AGENT_CONTEXT_VALVE);
65-
List<Packers> testPackers = List.of(Packers.ClassLoaderJSP, Packers.DefineClassJSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher);
65+
List<Packers> testPackers = List.of(Packers.ClassLoaderJSP, Packers.DefineClassJSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher, Packers.BigInteger);
6666
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
6767
}
6868

integration-test/src/test/java/com/reajason/javaweb/integration/memshell/tomcat/Tomcat9ContainerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ static Stream<Arguments> casesProvider() {
6060
ShellType.AGENT_FILTER_CHAIN,
6161
ShellType.CATALINA_AGENT_CONTEXT_VALVE
6262
);
63-
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher);
63+
List<Packers> testPackers = List.of(Packers.JSP, Packers.JSPX, Packers.JavaDeserialize, Packers.AgentJarWithJREAttacher, Packers.BigInteger);
6464
return TestCasesProvider.getTestCases(imageName, server, supportedShellTypes, testPackers);
6565
}
6666

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.reajason.javaweb.packer;
2+
3+
import lombok.SneakyThrows;
4+
5+
import java.math.BigInteger;
6+
7+
public class BigIntegerPacker implements Packer {
8+
@Override
9+
@SneakyThrows
10+
public String pack(ClassPackerConfig config) {
11+
return new BigInteger(config.getClassBytes()).toString(36);
12+
}
13+
}

0 commit comments

Comments
 (0)