Fastjson 中通过 c3p0 二次反序列化打冰蝎不出网内存马

水一篇文章,思路很常见,没啥新的技巧,起因是在去年出某道 CTF 题目时想到的一个考点,题目是一道 fastjson 高版本利用,但是忘记给白名单类了,打起来会非常吃力,所以就想着能不能加一个 c3p0 来救一下场,于是就有了这篇文章

友情提示:相关技术已经过时,本文所涉及到的进攻演示参考,不具备任何攻击实战利用姿势

相关依赖,高版本需要手动开启 autoType

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.5.2</version>
</dependency>
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.83</version>
</dependency>

关键路由

1
2
3
4
5
6
7
8
9
10
11
12
13
static {
ParserConfig.getGlobalInstance().setAutoTypeSupport(true);
}

@PostMapping("/")
public Object parse(@RequestBody String body) {
try {
Object obj = JSON.parse(body);
return obj;
} catch (Exception e) {
return "error: " + e.getMessage();
}
}