feat: support Freemarker SpEL packer

This commit is contained in:
ReaJason
2026-08-30 21:19:42 +08:00
parent 305bc0e12c
commit 70935d6ab1
14 changed files with 161 additions and 25 deletions
@@ -381,7 +381,8 @@ public class ShellAssertion {
}
if (Packers.SpELSpringGzipJDK17.equals(packer)
|| Packers.OGNLSpringGzipJDK17.equals(packer)
|| Packers.JXPathSpringGzipJDK17.equals(packer)) {
|| Packers.JXPathSpringGzipJDK17.equals(packer)
|| Packers.FreemarkerSpELSpringGzipJDK17.equals(packer)) {
injectorConfig.setInjectorClassName("org.springframework.expression." + INJECTOR_CLASS_NAMES[new Random().nextInt(INJECTOR_CLASS_NAMES.length)] + getRandomString(5));
}
@@ -429,7 +430,7 @@ public class ShellAssertion {
case Rhino -> VulTool.postIsOk(url + "/rhino", content);
case BeanShell -> VulTool.postIsOk(url + "/bsh", content);
case JinJava -> VulTool.postIsOk(url + "/jinjava", content);
case Freemarker -> VulTool.postIsOk(url + "/freemarker", content);
case Freemarker, FreemarkerScriptEngine, FreemarkerSpELSpringGzip, FreemarkerSpELSpringGzipJDK17 -> VulTool.postIsOk(url + "/freemarker", content);
case Velocity -> VulTool.postIsOk(url + "/velocity", content);
case JavaDeserialize -> VulTool.postIsOk(url + "/java_deserialize", content);
case JavaCommonsBeanutils16 -> VulTool.postIsOk(url + "/java_deserialize/cb161", content);
@@ -59,7 +59,8 @@ public class SpringBoot3ExpressionContainerTest {
return Stream.of(
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.SpELSpringGzipJDK17),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.OGNLSpringGzipJDK17),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JXPathSpringGzipJDK17)
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.JXPathSpringGzipJDK17),
arguments(imageName, ShellType.JAKARTA_VALVE, ShellTool.Godzilla, Packers.FreemarkerSpELSpringGzipJDK17)
);
}
@@ -61,6 +61,7 @@ public class Tomcat8ExpressionContainerTest {
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Rhino),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.JinJava),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Freemarker),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.FreemarkerSpELSpringGzip),
arguments(imageName, ShellType.FILTER, ShellTool.Godzilla, Packers.Velocity)
);
}