diff --git a/src/main/java/ysoserial/payloads/FileUpload1.java b/src/main/java/ysoserial/payloads/FileUpload1.java index e10ef9a..df21a29 100644 --- a/src/main/java/ysoserial/payloads/FileUpload1.java +++ b/src/main/java/ysoserial/payloads/FileUpload1.java @@ -14,6 +14,7 @@ import org.apache.commons.io.output.ThresholdingOutputStream; import ysoserial.payloads.annotation.Authors; import ysoserial.payloads.annotation.Dependencies; import ysoserial.payloads.annotation.PayloadTest; +import ysoserial.payloads.util.JavaVersion; import ysoserial.payloads.util.PayloadRunner; import ysoserial.payloads.util.Reflections; @@ -40,9 +41,12 @@ import ysoserial.payloads.util.Reflections; "commons-fileupload:commons-fileupload:1.3.1", "commons-io:commons-io:2.4" } ) -@PayloadTest(harness="ysoserial.payloads.FileUploadTest") +@PayloadTest(harness="ysoserial.payloads.FileUploadTest", precondition = "isApplicableJavaVersion") @Authors({ Authors.MBECHLER }) public class FileUpload1 implements ReleaseableObjectPayload { + public static boolean isApplicableJavaVersion() { + return JavaVersion.isAtLeast(7); + } public DiskFileItem getObject ( String command ) throws Exception { diff --git a/src/main/java/ysoserial/payloads/Hibernate1.java b/src/main/java/ysoserial/payloads/Hibernate1.java index edae938..61e6179 100644 --- a/src/main/java/ysoserial/payloads/Hibernate1.java +++ b/src/main/java/ysoserial/payloads/Hibernate1.java @@ -17,7 +17,9 @@ import org.hibernate.type.Type; import org.hibernate.EntityMode; import ysoserial.payloads.annotation.Authors; +import ysoserial.payloads.annotation.PayloadTest; import ysoserial.payloads.util.Gadgets; +import ysoserial.payloads.util.JavaVersion; import ysoserial.payloads.util.PayloadRunner; import ysoserial.payloads.util.Reflections; @@ -40,7 +42,11 @@ import ysoserial.payloads.util.Reflections; * @author mbechler */ @Authors({ Authors.MBECHLER }) +@PayloadTest(precondition = "isApplicableJavaVersion") public class Hibernate1 implements ObjectPayload, DynamicDependencies { + public static boolean isApplicableJavaVersion() { + return JavaVersion.isAtLeast(7); + } public static String[] getDependencies () { if ( System.getProperty("hibernate5") != null ) { diff --git a/src/main/java/ysoserial/payloads/Hibernate2.java b/src/main/java/ysoserial/payloads/Hibernate2.java index 0ab32c7..455cee6 100644 --- a/src/main/java/ysoserial/payloads/Hibernate2.java +++ b/src/main/java/ysoserial/payloads/Hibernate2.java @@ -3,6 +3,7 @@ package ysoserial.payloads; import ysoserial.payloads.annotation.Authors; import ysoserial.payloads.annotation.PayloadTest; +import ysoserial.payloads.util.JavaVersion; import ysoserial.payloads.util.PayloadRunner; import com.sun.rowset.JdbcRowSetImpl; @@ -41,9 +42,12 @@ import com.sun.rowset.JdbcRowSetImpl; @SuppressWarnings ( { "restriction" } ) -@PayloadTest( harness = "ysoserial.payloads.JRMPReverseConnectTest") +@PayloadTest(harness = "ysoserial.payloads.JRMPReverseConnectTest", precondition = "isApplicableJavaVersion") @Authors({ Authors.MBECHLER }) public class Hibernate2 implements ObjectPayload, DynamicDependencies { + public static boolean isApplicableJavaVersion() { + return JavaVersion.isAtLeast(7); + } public static String[] getDependencies () { return Hibernate1.getDependencies(); diff --git a/src/main/java/ysoserial/payloads/JBossInterceptors1.java b/src/main/java/ysoserial/payloads/JBossInterceptors1.java index 7fe37a5..9f1e294 100644 --- a/src/main/java/ysoserial/payloads/JBossInterceptors1.java +++ b/src/main/java/ysoserial/payloads/JBossInterceptors1.java @@ -16,7 +16,9 @@ import org.jboss.interceptor.spi.model.InterceptionModel; import org.jboss.interceptor.spi.model.InterceptionType; import ysoserial.payloads.annotation.Authors; import ysoserial.payloads.annotation.Dependencies; +import ysoserial.payloads.annotation.PayloadTest; import ysoserial.payloads.util.Gadgets; +import ysoserial.payloads.util.JavaVersion; import ysoserial.payloads.util.PayloadRunner; import java.lang.reflect.Constructor; @@ -26,11 +28,15 @@ import java.util.*; by @matthias_kaiser */ @SuppressWarnings({"rawtypes", "unchecked"}) +@PayloadTest(precondition = "isApplicableJavaVersion") @Dependencies({ "javassist:javassist:3.12.1.GA", "org.jboss.interceptor:jboss-interceptor-core:2.0.0.Final", "javax.enterprise:cdi-api:1.0-SP1", "javax.interceptor:javax.interceptor-api:3.1", "org.jboss.interceptor:jboss-interceptor-spi:2.0.0.Final", "org.slf4j:slf4j-api:1.7.21" }) @Authors({ Authors.MATTHIASKAISER }) public class JBossInterceptors1 implements ObjectPayload { + public static boolean isApplicableJavaVersion() { + return JavaVersion.isAtLeast(7); + } public Object getObject(final String command) throws Exception { diff --git a/src/main/java/ysoserial/payloads/JavassistWeld1.java b/src/main/java/ysoserial/payloads/JavassistWeld1.java index cb1c601..3b08e61 100644 --- a/src/main/java/ysoserial/payloads/JavassistWeld1.java +++ b/src/main/java/ysoserial/payloads/JavassistWeld1.java @@ -16,7 +16,9 @@ import org.jboss.weld.interceptor.spi.model.InterceptionModel; import org.jboss.weld.interceptor.spi.model.InterceptionType; import ysoserial.payloads.annotation.Authors; import ysoserial.payloads.annotation.Dependencies; +import ysoserial.payloads.annotation.PayloadTest; import ysoserial.payloads.util.Gadgets; +import ysoserial.payloads.util.JavaVersion; import ysoserial.payloads.util.PayloadRunner; import java.lang.reflect.Constructor; @@ -26,11 +28,15 @@ import java.util.*; by @matthias_kaiser */ @SuppressWarnings({"rawtypes", "unchecked"}) +@PayloadTest(precondition = "isApplicableJavaVersion") @Dependencies({"javassist:javassist:3.12.1.GA", "org.jboss.weld:weld-core:1.1.33.Final", "javax.enterprise:cdi-api:1.0-SP1", "javax.interceptor:javax.interceptor-api:3.1", "org.jboss.interceptor:jboss-interceptor-spi:2.0.0.Final", "org.slf4j:slf4j-api:1.7.21" }) @Authors({ Authors.MATTHIASKAISER }) public class JavassistWeld1 implements ObjectPayload { + public static boolean isApplicableJavaVersion() { + return JavaVersion.isAtLeast(7); + } public Object getObject(final String command) throws Exception { diff --git a/src/main/java/ysoserial/payloads/Myfaces2.java b/src/main/java/ysoserial/payloads/Myfaces2.java index 1683e43..72c828e 100644 --- a/src/main/java/ysoserial/payloads/Myfaces2.java +++ b/src/main/java/ysoserial/payloads/Myfaces2.java @@ -4,6 +4,7 @@ package ysoserial.payloads; import ysoserial.payloads.annotation.Authors; import ysoserial.payloads.annotation.PayloadTest; +import ysoserial.payloads.util.JavaVersion; import ysoserial.payloads.util.PayloadRunner; @@ -28,9 +29,12 @@ import ysoserial.payloads.util.PayloadRunner; * * @author mbechler */ -@PayloadTest ( harness = "ysoserial.payloads.MyfacesTest" ) +@PayloadTest(harness = "ysoserial.payloads.MyfacesTest", precondition = "isApplicableJavaVersion") @Authors({ Authors.MBECHLER }) public class Myfaces2 implements ObjectPayload, DynamicDependencies { + public static boolean isApplicableJavaVersion() { + return JavaVersion.isAtLeast(7); + } public static String[] getDependencies () { return Myfaces1.getDependencies(); diff --git a/src/main/java/ysoserial/payloads/util/JavaVersion.java b/src/main/java/ysoserial/payloads/util/JavaVersion.java index 9eaa451..bba90b9 100644 --- a/src/main/java/ysoserial/payloads/util/JavaVersion.java +++ b/src/main/java/ysoserial/payloads/util/JavaVersion.java @@ -27,7 +27,6 @@ public class JavaVersion { return v; } - public static boolean isAnnInvHUniversalMethodImpl() { JavaVersion v = JavaVersion.getLocalVersion(); return v != null && (v.major < 8 || (v.major == 8 && v.update <= 71)); @@ -37,5 +36,10 @@ public class JavaVersion { JavaVersion v = JavaVersion.getLocalVersion(); return v != null && (v.major > 8 && v.update >= 76); } + + public static boolean isAtLeast(int major) { + JavaVersion v = JavaVersion.getLocalVersion(); + return v != null && v.major >= major; + } } diff --git a/src/test/java/ysoserial/payloads/PayloadsTest.java b/src/test/java/ysoserial/payloads/PayloadsTest.java index 9a29e8e..3713486 100644 --- a/src/test/java/ysoserial/payloads/PayloadsTest.java +++ b/src/test/java/ysoserial/payloads/PayloadsTest.java @@ -71,7 +71,6 @@ public class PayloadsTest { public static void testPayload ( final Class> payloadClass, final Class[] addlClassesForClassLoader ) throws Exception { String command = "hostname"; - String[] deps = buildDeps(payloadClass); PayloadTest t = payloadClass.getAnnotation(PayloadTest.class); @@ -85,6 +84,7 @@ public class PayloadsTest { } } + String[] deps = buildDeps(payloadClass); String payloadCommand = command; Class customDeserializer = null; Object testHarness = null;